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  }