github.com/enbility/spine-go@v0.7.0/spine/entity_local_test.go (about) 1 package spine 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/enbility/spine-go/model" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/suite" 10 ) 11 12 func TestEntityLocalSuite(t *testing.T) { 13 suite.Run(t, new(EntityLocalTestSuite)) 14 } 15 16 type EntityLocalTestSuite struct { 17 suite.Suite 18 } 19 20 func (suite *EntityLocalTestSuite) Test_Entity() { 21 device := NewDeviceLocal("brand", "model", "serial", "code", "address", model.DeviceTypeTypeEnergyManagementSystem, model.NetworkManagementFeatureSetTypeSmart) 22 entity := NewEntityLocal(device, model.EntityTypeTypeCEM, NewAddressEntityType([]uint{1}), time.Second*4) 23 device.AddEntity(entity) 24 25 f := NewFeatureLocal(1, entity, model.FeatureTypeTypeElectricalConnection, model.RoleTypeClient) 26 entity.AddFeature(f) 27 assert.Equal(suite.T(), 1, len(entity.Features())) 28 29 entity.AddFeature(f) 30 assert.Equal(suite.T(), 1, len(entity.Features())) 31 32 f1 := entity.FeatureOfAddress(nil) 33 assert.Nil(suite.T(), f1) 34 35 f1 = entity.FeatureOfAddress(f.Address().Feature) 36 assert.NotNil(suite.T(), f1) 37 38 fakeAddress := model.AddressFeatureType(5) 39 f1 = entity.FeatureOfAddress(&fakeAddress) 40 assert.Nil(suite.T(), f1) 41 42 f2 := entity.GetOrAddFeature(model.FeatureTypeTypeMeasurement, model.RoleTypeClient) 43 assert.NotNil(suite.T(), f2) 44 45 assert.Equal(suite.T(), 2, len(entity.Features())) 46 47 f3 := entity.GetOrAddFeature(model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeServer) 48 assert.NotNil(suite.T(), f3) 49 50 assert.Equal(suite.T(), 3, len(entity.Features())) 51 52 f4 := entity.GetOrAddFeature(model.FeatureTypeTypeDeviceDiagnosis, model.RoleTypeServer) 53 assert.NotNil(suite.T(), f4) 54 55 assert.Equal(suite.T(), 3, len(entity.Features())) 56 57 entity.RemoveAllUseCaseSupports() 58 59 hasUC := entity.HasUseCaseSupport( 60 model.UseCaseActorTypeCEM, 61 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 62 ) 63 assert.Equal(suite.T(), false, hasUC) 64 65 _, err := LocalFeatureDataCopyOfType[*model.NodeManagementUseCaseDataType](device.NodeManagement(), model.FunctionTypeNodeManagementUseCaseData) 66 assert.NotNil(suite.T(), err) 67 68 entity.AddUseCaseSupport( 69 model.UseCaseActorTypeCEM, 70 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 71 model.SpecificationVersionType("1.0.0"), 72 "", 73 true, 74 []model.UseCaseScenarioSupportType{1, 2}, 75 ) 76 77 _, err = LocalFeatureDataCopyOfType[*model.NodeManagementUseCaseDataType](device.NodeManagement(), model.FunctionTypeNodeManagementUseCaseData) 78 assert.Nil(suite.T(), err) 79 80 hasUC = entity.HasUseCaseSupport( 81 model.UseCaseActorTypeCEM, 82 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 83 ) 84 assert.Equal(suite.T(), true, hasUC) 85 86 entity.AddUseCaseSupport( 87 model.UseCaseActorTypeCEM, 88 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 89 model.SpecificationVersionType("1.0.0"), 90 "", 91 true, 92 []model.UseCaseScenarioSupportType{1, 2}, 93 ) 94 95 hasUC = entity.HasUseCaseSupport( 96 model.UseCaseActorTypeCEM, 97 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 98 ) 99 assert.Equal(suite.T(), true, hasUC) 100 101 entity.SetUseCaseAvailability( 102 model.UseCaseActorTypeCEM, 103 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 104 false, 105 ) 106 107 entity.RemoveUseCaseSupport( 108 model.UseCaseActorTypeCEM, 109 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 110 ) 111 112 hasUC = entity.HasUseCaseSupport( 113 model.UseCaseActorTypeCEM, 114 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 115 ) 116 assert.Equal(suite.T(), false, hasUC) 117 118 entity.AddUseCaseSupport( 119 model.UseCaseActorTypeCEM, 120 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 121 model.SpecificationVersionType("1.0.0"), 122 "", 123 true, 124 []model.UseCaseScenarioSupportType{1, 2}, 125 ) 126 127 hasUC = entity.HasUseCaseSupport( 128 model.UseCaseActorTypeCEM, 129 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 130 ) 131 assert.Equal(suite.T(), true, hasUC) 132 133 entity.RemoveAllUseCaseSupports() 134 135 hasUC = entity.HasUseCaseSupport( 136 model.UseCaseActorTypeCEM, 137 model.UseCaseNameTypeEVSECommissioningAndConfiguration, 138 ) 139 assert.Equal(suite.T(), false, hasUC) 140 141 entity.RemoveAllBindings() 142 entity.RemoveAllSubscriptions() 143 }