github.com/gopherjs/gopherjs@v1.19.0-beta1.0.20240506212314-27071a8796e4/compiler/typesutil/typenames_test.go (about) 1 package typesutil 2 3 import ( 4 "go/types" 5 "testing" 6 7 "github.com/google/go-cmp/cmp" 8 "github.com/gopherjs/gopherjs/internal/srctesting" 9 ) 10 11 func typeNameOpts() cmp.Options { 12 return cmp.Options{ 13 cmp.Transformer("TypeName", func(name *types.TypeName) string { 14 return types.ObjectString(name, nil) 15 }), 16 } 17 } 18 19 func TestTypeNames(t *testing.T) { 20 src := `package test 21 22 type A int 23 type B int 24 type C int 25 ` 26 f := srctesting.New(t) 27 _, pkg := f.Check("pkg/test", f.Parse("test.go", src)) 28 A := srctesting.LookupObj(pkg, "A").(*types.TypeName) 29 B := srctesting.LookupObj(pkg, "B").(*types.TypeName) 30 C := srctesting.LookupObj(pkg, "C").(*types.TypeName) 31 32 tn := TypeNames{} 33 tn.Add(A) 34 tn.Add(B) 35 tn.Add(A) 36 tn.Add(C) 37 tn.Add(B) 38 39 got := tn.Slice() 40 want := []*types.TypeName{A, B, C} 41 42 if diff := cmp.Diff(want, got, typeNameOpts()); diff != "" { 43 t.Errorf("tn.Slice() returned diff (-want,+got):\n%s", diff) 44 } 45 }