Commit f054ff99 authored by Boris Mühmer's avatar Boris Mühmer
Browse files

added inheritance example

parent 7e5d50c3
Loading
Loading
Loading
Loading

metainfos/a/a.go

0 → 100644
+32 −0
Original line number Diff line number Diff line
package a

import (
	"repositories.muehmer.net/bsmrgo/playground/metainfos/root"
)

// Type ...
type Type struct {
	root.Type
	a int
}

// New ...
func New(name string, a int) *Type {
	r := &Type{
		a: a,
	}
	r.SetName(name)
	return r
}

// A ...
func (m *Type) A() int {
	return m.a
}

// SetA ...
func (m *Type) SetA(a int) int {
	r := m.a
	m.a = a
	return r
}

metainfos/a/a_test.go

0 → 100644
+36 −0
Original line number Diff line number Diff line
package a

import (
	"testing"
)

func TestA(t *testing.T) {
	name1 := "Name A One"
	name2 := "Name A Two"
	va1 := 42
	va2 := 13

	a := New(name1, va1)
	if name := a.Name(); name != name1 {
		t.Errorf("Name() is \"%s\", expected \"%s\"", name, name1)
	}
	if va := a.A(); va != va1 {
		t.Errorf("A() is %d, expected %d", va, va1)
	}

	on := a.SetName(name2)
	if on != name1 {
		t.Errorf("SetName() returned \"%s\", expected \"%s\"", on, name1)
	}
	if name := a.Name(); name != name2 {
		t.Errorf("Name() is \"%s\", expected \"%s\"", name, name2)
	}

	oa := a.SetA(va2)
	if oa != va1 {
		t.Errorf("SetA() returned %d, expected %d", oa, va1)
	}
	if va := a.A(); va != va2 {
		t.Errorf("A() is %d, expected %d", va, va2)
	}
}

metainfos/b/b.go

0 → 100644
+32 −0
Original line number Diff line number Diff line
package b

import (
	"repositories.muehmer.net/bsmrgo/playground/metainfos/root"
)

// Type ...
type Type struct {
	root.Type
	b float64
}

// New ...
func New(name string, b float64) *Type {
	r := &Type{
		b: b,
	}
	r.SetName(name)
	return r
}

// B ...
func (m *Type) B() float64 {
	return m.b
}

// SetB ...
func (m *Type) SetB(b float64) float64 {
	r := m.b
	m.b = b
	return r
}

metainfos/b/b_test.go

0 → 100644
+37 −0
Original line number Diff line number Diff line
package b

import (
	"testing"
)

func TestB(t *testing.T) {
	name1 := "Name B One"
	name2 := "Name B Two"
	vb1 := 4.2
	vb2 := 1.3

	b := New(name1, vb1)

	if name := b.Name(); name != name1 {
		t.Errorf("Name() is \"%s\", expected \"%s\"", name, name1)
	}
	if vb := b.B(); vb != vb1 {
		t.Errorf("B() is %f, expected %f", vb, vb1)
	}

	on := b.SetName(name2)
	if on != name1 {
		t.Errorf("SetName() returned \"%s\", expected \"%s\"", on, name1)
	}
	if name := b.Name(); name != name2 {
		t.Errorf("Name() is \"%s\", expected \"%s\"", name, name2)
	}

	ob := b.SetB(vb2)
	if ob != vb1 {
		t.Errorf("SetB() returned %f, expected %f", ob, vb1)
	}
	if vb := b.B(); vb != vb2 {
		t.Errorf("B() is %f, expected %f", vb, vb2)
	}
}

metainfos/metainfos.go

0 → 100644
+21 −0
Original line number Diff line number Diff line
package metainfos

// Baser ...
type Baser interface {
	Name() string
	SetName(string) string
}

// Aer ...
type Aer interface {
	Baser
	A() int
	SetA(int) int
}

// Ber ...
type Ber interface {
	Baser
	B() float64
	SetB(float64) float64
}
Loading