You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.2 KiB
84 lines
2.2 KiB
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) |
|
} |
|
}
|
|
|