85 lines
2.2 KiB
Go
85 lines
2.2 KiB
Go
|
package namer
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
|
||
|
"go-common/app/tool/gengo/types"
|
||
|
)
|
||
|
|
||
|
func TestNameStrategy(t *testing.T) {
|
||
|
u := types.Universe{}
|
||
|
|
||
|
// Add some types.
|
||
|
base := u.Type(types.Name{Package: "foo/bar", Name: "Baz"})
|
||
|
base.Kind = types.Struct
|
||
|
|
||
|
tmp := u.Type(types.Name{Package: "", Name: "[]bar.Baz"})
|
||
|
tmp.Kind = types.Slice
|
||
|
tmp.Elem = base
|
||
|
|
||
|
tmp = u.Type(types.Name{Package: "", Name: "map[string]bar.Baz"})
|
||
|
tmp.Kind = types.Map
|
||
|
tmp.Key = types.String
|
||
|
tmp.Elem = base
|
||
|
|
||
|
tmp = u.Type(types.Name{Package: "foo/other", Name: "Baz"})
|
||
|
tmp.Kind = types.Struct
|
||
|
tmp.Members = []types.Member{{
|
||
|
Embedded: true,
|
||
|
Type: base,
|
||
|
}}
|
||
|
|
||
|
tmp = u.Type(types.Name{Package: "", Name: "chan Baz"})
|
||
|
tmp.Kind = types.Chan
|
||
|
tmp.Elem = base
|
||
|
|
||
|
u.Type(types.Name{Package: "", Name: "string"})
|
||
|
|
||
|
o := Orderer{NewPublicNamer(0)}
|
||
|
order := o.OrderUniverse(u)
|
||
|
orderedNames := make([]string, len(order))
|
||
|
for i, t := range order {
|
||
|
orderedNames[i] = o.Name(t)
|
||
|
}
|
||
|
expect := []string{"Baz", "Baz", "ChanBaz", "MapStringToBaz", "SliceBaz", "String"}
|
||
|
if e, a := expect, orderedNames; !reflect.DeepEqual(e, a) {
|
||
|
t.Errorf("Wanted %#v, got %#v", e, a)
|
||
|
}
|
||
|
|
||
|
o = Orderer{NewRawNamer("my/package", nil)}
|
||
|
order = o.OrderUniverse(u)
|
||
|
orderedNames = make([]string, len(order))
|
||
|
for i, t := range order {
|
||
|
orderedNames[i] = o.Name(t)
|
||
|
}
|
||
|
|
||
|
expect = []string{"[]bar.Baz", "bar.Baz", "chan bar.Baz", "map[string]bar.Baz", "other.Baz", "string"}
|
||
|
if e, a := expect, orderedNames; !reflect.DeepEqual(e, a) {
|
||
|
t.Errorf("Wanted %#v, got %#v", e, a)
|
||
|
}
|
||
|
|
||
|
o = Orderer{NewRawNamer("foo/bar", nil)}
|
||
|
order = o.OrderUniverse(u)
|
||
|
orderedNames = make([]string, len(order))
|
||
|
for i, t := range order {
|
||
|
orderedNames[i] = o.Name(t)
|
||
|
}
|
||
|
|
||
|
expect = []string{"Baz", "[]Baz", "chan Baz", "map[string]Baz", "other.Baz", "string"}
|
||
|
if e, a := expect, orderedNames; !reflect.DeepEqual(e, a) {
|
||
|
t.Errorf("Wanted %#v, got %#v", e, a)
|
||
|
}
|
||
|
|
||
|
o = Orderer{NewPublicNamer(1)}
|
||
|
order = o.OrderUniverse(u)
|
||
|
orderedNames = make([]string, len(order))
|
||
|
for i, t := range order {
|
||
|
orderedNames[i] = o.Name(t)
|
||
|
}
|
||
|
expect = []string{"BarBaz", "ChanBarBaz", "MapStringToBarBaz", "OtherBaz", "SliceBarBaz", "String"}
|
||
|
if e, a := expect, orderedNames; !reflect.DeepEqual(e, a) {
|
||
|
t.Errorf("Wanted %#v, got %#v", e, a)
|
||
|
}
|
||
|
}
|