github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/cmd/internal/astutils/enumcollector_test.go (about)

     1  package astutils
     2  
     3  import (
     4  	"github.com/stretchr/testify/require"
     5  	"github.com/unionj-cloud/go-doudou/toolkit/pathutils"
     6  	"go/ast"
     7  	"go/parser"
     8  	"go/token"
     9  	"testing"
    10  )
    11  
    12  func TestEnum(t *testing.T) {
    13  	file := pathutils.Abs("testdata/enum.go")
    14  	fset := token.NewFileSet()
    15  	root, err := parser.ParseFile(fset, file, nil, parser.ParseComments)
    16  	if err != nil {
    17  		panic(err)
    18  	}
    19  	sc := NewEnumCollector(ExprString)
    20  	ast.Walk(sc, root)
    21  	for k, v := range sc.Methods {
    22  		if IsEnum(v) {
    23  			em := EnumMeta{
    24  				Name:   k,
    25  				Values: sc.Consts[k],
    26  			}
    27  			sc.Enums[k] = em
    28  		}
    29  	}
    30  	require.Equal(t, 1, len(sc.Enums))
    31  }