github.com/viant/toolbox@v0.34.5/fileset_info_test.go (about) 1 package toolbox_test 2 3 import ( 4 "github.com/stretchr/testify/assert" 5 "github.com/viant/toolbox" 6 "testing" 7 ) 8 9 func TestNewFileSetInfoInfo(t *testing.T) { 10 if (32 << uintptr(^uintptr(0)>>63)) < 64 { 11 t.Skip() 12 } 13 fileSetInfo, err := toolbox.NewFileSetInfo("./test/fileset_info/") 14 if err != nil { 15 panic(err) 16 } 17 assert.True(t, len(fileSetInfo.FilesInfo()) > 0) 18 19 fileInfo := fileSetInfo.FileInfo("user.go") 20 assert.NotNil(t, fileInfo) 21 22 addresses := fileSetInfo.Type("Addresses") 23 assert.NotNil(t, addresses) 24 25 assert.False(t, fileInfo.HasType("F")) 26 assert.True(t, fileInfo.HasType("User")) 27 28 assert.Equal(t, 10, len(fileInfo.Types())) 29 30 address := fileSetInfo.Type("Address") 31 assert.NotNil(t, address) 32 33 assert.Equal(t, 2, len(address.Fields())) 34 country := address.Field("Country") 35 assert.NotNil(t, country) 36 assert.True(t, country.IsAnonymous) 37 38 z := fileSetInfo.Type("Z") 39 assert.NotNil(t, z) 40 41 address2 := fileSetInfo.Type("Address2") 42 assert.Nil(t, address2) 43 44 userInfo := fileInfo.Type("User") 45 assert.NotNil(t, userInfo) 46 47 assert.True(t, userInfo.HasField("ID")) 48 assert.True(t, userInfo.HasField("Name")) 49 assert.False(t, userInfo.HasField("FF")) 50 51 assert.Equal(t, 14, len(userInfo.Fields())) 52 53 idInfo := userInfo.Field("ID") 54 assert.True(t, idInfo.IsPointer) 55 assert.Equal(t, "int", idInfo.TypeName) 56 assert.Equal(t, true, idInfo.IsPointer) 57 58 dobInfo := userInfo.Field("DateOfBirth") 59 60 assert.Equal(t, "time.Time", dobInfo.TypeName) 61 assert.Equal(t, "time", dobInfo.TypePackage) 62 63 assert.Equal(t, "`foo=\"bar\"`", dobInfo.Tag) 64 65 addressPointer := userInfo.Field("AddressPointer") 66 assert.NotNil(t, addressPointer) 67 assert.Equal(t, "Address", addressPointer.TypeName) 68 69 70 aMapField := userInfo.Field("AMap1") 71 assert.NotNil(t, aMapField) 72 assert.EqualValues(t, "AMap1", aMapField.TypeName) 73 aMapType := fileSetInfo.Type(aMapField.TypeName) 74 assert.NotNil(t, aMapType) 75 assert.True(t, aMapType.IsMap) 76 assert.EqualValues(t, "string", aMapType.KeyTypeName) 77 assert.EqualValues(t, "[]int", aMapType.ValueTypeName) 78 79 80 aMapField2 := userInfo.Field("AMap2") 81 assert.NotNil(t, aMapField2) 82 assert.EqualValues(t, "AMap2", aMapField2.TypeName) 83 aMapType2 := fileSetInfo.Type(aMapField2.TypeName) 84 assert.NotNil(t, aMapType2) 85 assert.True(t, aMapType2.IsMap) 86 assert.EqualValues(t, "string", aMapType2.KeyTypeName) 87 assert.EqualValues(t, "[]*Country", aMapType2.ValueTypeName) 88 89 90 aMapField3 := userInfo.Field("AMap3") 91 assert.NotNil(t, aMapField3) 92 assert.EqualValues(t, "AMap3", aMapField3.TypeName) 93 aMapType3 := fileSetInfo.Type(aMapField3.TypeName) 94 assert.NotNil(t, aMapType3) 95 assert.True(t, aMapType3.IsMap) 96 assert.EqualValues(t, "string", aMapType3.KeyTypeName) 97 assert.EqualValues(t, "*Country", aMapType3.ValueTypeName) 98 99 100 101 102 cInfo := userInfo.Field("C") 103 assert.True(t, cInfo.IsChannel) 104 105 mInfo := userInfo.Field("M") 106 assert.True(t, mInfo.IsMap) 107 assert.Equal(t, "string", mInfo.KeyTypeName) 108 assert.Equal(t, "[]string", mInfo.ValueTypeName) 109 110 intsInfo := userInfo.Field("Ints") 111 assert.True(t, intsInfo.IsSlice) 112 assert.Equal(t, "my comments", userInfo.Comment) 113 114 assert.False(t, userInfo.HasReceiver("Abc")) 115 116 assert.True(t, len(userInfo.Receivers()) > 1) 117 assert.True(t, userInfo.HasReceiver("Test")) 118 assert.True(t, userInfo.HasReceiver("Test2")) 119 120 receiver := userInfo.Receiver("Test") 121 assert.NotNil(t, receiver) 122 123 appointments := userInfo.Field("Appointments") 124 assert.NotNil(t, appointments) 125 assert.Equal(t, "time.Time", appointments.ComponentType) 126 127 }