github.com/enbility/spine-go@v0.7.0/spine/util_test.go (about) 1 package spine 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/enbility/spine-go/api" 8 "github.com/enbility/spine-go/model" 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/suite" 11 ) 12 13 func TestUtilsSuite(t *testing.T) { 14 suite.Run(t, new(UtilsSuite)) 15 } 16 17 type UtilsSuite struct { 18 suite.Suite 19 20 localDevice api.DeviceLocalInterface 21 remoteDevice api.DeviceRemoteInterface 22 } 23 24 func (s *UtilsSuite) WriteShipMessageWithPayload([]byte) {} 25 26 func (s *UtilsSuite) Test_DataCopyOfType() { 27 s.localDevice = NewDeviceLocal("brand", "model", "serial", "code", "address", model.DeviceTypeTypeEnergyManagementSystem, model.NetworkManagementFeatureSetTypeSmart) 28 localEntity := NewEntityLocal(s.localDevice, model.EntityTypeTypeCEM, NewAddressEntityType([]uint{1}), time.Second*4) 29 s.localDevice.AddEntity(localEntity) 30 31 localFeature := NewFeatureLocal(1, localEntity, model.FeatureTypeTypeElectricalConnection, model.RoleTypeServer) 32 localFeature.AddFunctionType(model.FunctionTypeElectricalConnectionDescriptionListData, true, false) 33 localEntity.AddFeature(localFeature) 34 assert.Equal(s.T(), 1, len(localEntity.Features())) 35 36 // this function does not exist 37 _, err := LocalFeatureDataCopyOfType[*model.NodeManagementUseCaseDataType](localFeature, "dummy") 38 assert.NotNil(s.T(), err) 39 40 _, err = LocalFeatureDataCopyOfType[*model.ElectricalConnectionDescriptionListDataType]( 41 localFeature, 42 model.FunctionTypeElectricalConnectionDescriptionListData, 43 ) 44 assert.NotNil(s.T(), err) 45 46 data := &model.ElectricalConnectionDescriptionListDataType{ 47 ElectricalConnectionDescriptionData: []model.ElectricalConnectionDescriptionDataType{}, 48 } 49 updatedData, err1 := localFeature.updateData(false, model.FunctionTypeElectricalConnectionDescriptionListData, data, nil, nil) 50 assert.NotNil(s.T(), updatedData) 51 assert.Nil(s.T(), err1) 52 53 _, err = LocalFeatureDataCopyOfType[*model.ElectricalConnectionDescriptionListDataType]( 54 localFeature, 55 model.FunctionTypeElectricalConnectionDescriptionListData, 56 ) 57 assert.Nil(s.T(), err) 58 59 _, err = LocalFeatureDataCopyOfType[string]( 60 localFeature, 61 model.FunctionTypeElectricalConnectionDescriptionListData, 62 ) 63 assert.NotNil(s.T(), err) 64 65 ski := "test" 66 sender := NewSender(s) 67 68 s.remoteDevice = NewDeviceRemote(s.localDevice, ski, sender) 69 remoteEntity := NewEntityRemote(s.remoteDevice, model.EntityTypeTypeCEM, NewAddressEntityType([]uint{1})) 70 s.remoteDevice.AddEntity(remoteEntity) 71 72 remoteFeature := NewFeatureRemote(1, remoteEntity, model.FeatureTypeTypeElectricalConnection, model.RoleTypeServer) 73 remoteEntity.AddFeature(remoteFeature) 74 75 // this function does not exist 76 _, err = RemoteFeatureDataCopyOfType[*model.NodeManagementUseCaseDataType](remoteFeature, "dummy") 77 assert.NotNil(s.T(), err) 78 }