github.com/gopherjs/gopherjs@v1.19.0-beta1.0.20240506212314-27071a8796e4/compiler/internal/symbol/symbol_test.go (about) 1 package symbol 2 3 import ( 4 "go/types" 5 "testing" 6 7 "github.com/gopherjs/gopherjs/internal/srctesting" 8 ) 9 10 func TestName(t *testing.T) { 11 const src = `package testcase 12 13 func AFunction() {} 14 type AType struct {} 15 func (AType) AMethod() {} 16 func (*AType) APointerMethod() {} 17 var AVariable int32 18 ` 19 20 f := srctesting.New(t) 21 _, pkg := f.Check("pkg/test", f.Parse("test.go", src)) 22 23 tests := []struct { 24 obj types.Object 25 want Name 26 }{ 27 { 28 obj: pkg.Scope().Lookup("AFunction"), 29 want: Name{PkgPath: "pkg/test", Name: "AFunction"}, 30 }, { 31 obj: pkg.Scope().Lookup("AType"), 32 want: Name{PkgPath: "pkg/test", Name: "AType"}, 33 }, { 34 obj: types.NewMethodSet(pkg.Scope().Lookup("AType").Type()).Lookup(pkg, "AMethod").Obj(), 35 want: Name{PkgPath: "pkg/test", Name: "AType.AMethod"}, 36 }, { 37 obj: types.NewMethodSet(types.NewPointer(pkg.Scope().Lookup("AType").Type())).Lookup(pkg, "APointerMethod").Obj(), 38 want: Name{PkgPath: "pkg/test", Name: "(*AType).APointerMethod"}, 39 }, { 40 obj: pkg.Scope().Lookup("AVariable"), 41 want: Name{PkgPath: "pkg/test", Name: "AVariable"}, 42 }, 43 } 44 45 for _, test := range tests { 46 t.Run(test.obj.Name(), func(t *testing.T) { 47 got := New(test.obj) 48 if got != test.want { 49 t.Errorf("NewSymName(%q) returned %#v, want: %#v", test.obj.Name(), got, test.want) 50 } 51 }) 52 } 53 }