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  }