github.com/enbility/spine-go@v0.7.0/model/nodemanagement_additions_test.go (about) 1 package model 2 3 import ( 4 "testing" 5 6 "github.com/enbility/spine-go/util" 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/suite" 9 ) 10 11 func TestNodeManagementUseCaseDataTypeSuite(t *testing.T) { 12 suite.Run(t, new(NodeManagementUseCaseDataTypeSuite)) 13 } 14 15 type NodeManagementUseCaseDataTypeSuite struct { 16 suite.Suite 17 } 18 19 func (s *NodeManagementUseCaseDataTypeSuite) Test_AdditionsAndRemovals() { 20 ucs := &NodeManagementUseCaseDataType{} 21 assert.NotNil(s.T(), ucs) 22 assert.Equal(s.T(), 0, len(ucs.UseCaseInformation)) 23 24 address := FeatureAddressType{ 25 Device: util.Ptr(AddressDeviceType("test")), 26 Entity: []AddressEntityType{1}, 27 } 28 ucs.AddUseCaseSupport( 29 address, 30 UseCaseActorTypeCEM, 31 UseCaseNameTypeControlOfBattery, 32 SpecificationVersionType(""), 33 "", 34 true, 35 []UseCaseScenarioSupportType{}, 36 ) 37 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation)) 38 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation[0].UseCaseSupport)) 39 40 ucs.AddUseCaseSupport( 41 address, 42 UseCaseActorTypeCEM, 43 UseCaseNameTypeEVSECommissioningAndConfiguration, 44 SpecificationVersionType(""), 45 "", 46 true, 47 []UseCaseScenarioSupportType{}, 48 ) 49 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation)) 50 assert.Equal(s.T(), 2, len(ucs.UseCaseInformation[0].UseCaseSupport)) 51 52 ucs.AddUseCaseSupport( 53 address, 54 UseCaseActorTypeCEM, 55 UseCaseNameTypeEVSECommissioningAndConfiguration, 56 SpecificationVersionType(""), 57 "", 58 true, 59 []UseCaseScenarioSupportType{}, 60 ) 61 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation)) 62 assert.Equal(s.T(), 2, len(ucs.UseCaseInformation[0].UseCaseSupport)) 63 64 ucs.AddUseCaseSupport( 65 address, 66 UseCaseActorTypeEnergyGuard, 67 UseCaseNameTypeLimitationOfPowerConsumption, 68 SpecificationVersionType(""), 69 "", 70 true, 71 []UseCaseScenarioSupportType{}, 72 ) 73 assert.Equal(s.T(), 2, len(ucs.UseCaseInformation)) 74 assert.Equal(s.T(), 2, len(ucs.UseCaseInformation[0].UseCaseSupport)) 75 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation[1].UseCaseSupport)) 76 77 hasUC := ucs.HasUseCaseSupport(address, UseCaseActorTypeCEM, UseCaseNameTypeEVChargingSummary) 78 assert.Equal(s.T(), false, hasUC) 79 80 ucs.RemoveUseCaseSupport( 81 address, 82 UseCaseActorTypeCEM, 83 UseCaseNameTypeEVChargingSummary, 84 ) 85 assert.Equal(s.T(), 2, len(ucs.UseCaseInformation)) 86 assert.Equal(s.T(), 2, len(ucs.UseCaseInformation[0].UseCaseSupport)) 87 88 hasUC = ucs.HasUseCaseSupport(address, UseCaseActorTypeCEM, UseCaseNameTypeControlOfBattery) 89 assert.Equal(s.T(), true, hasUC) 90 91 assert.Equal(s.T(), true, *ucs.UseCaseInformation[0].UseCaseSupport[0].UseCaseAvailable) 92 ucs.SetAvailability(address, UseCaseActorTypeCEM, UseCaseNameTypeControlOfBattery, false) 93 assert.Equal(s.T(), false, *ucs.UseCaseInformation[0].UseCaseSupport[0].UseCaseAvailable) 94 ucs.SetAvailability(address, UseCaseActorTypeCEM, UseCaseNameTypeConfigurationOfDhwTemperature, false) 95 96 ucs.RemoveUseCaseSupport( 97 address, 98 UseCaseActorTypeCEM, 99 UseCaseNameTypeControlOfBattery, 100 ) 101 assert.Equal(s.T(), 2, len(ucs.UseCaseInformation)) 102 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation[0].UseCaseSupport)) 103 104 ucs.RemoveUseCaseSupport( 105 address, 106 UseCaseActorTypeCEM, 107 UseCaseNameTypeEVSECommissioningAndConfiguration, 108 ) 109 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation)) 110 111 ucs.RemoveUseCaseSupport( 112 address, 113 "", 114 "", 115 ) 116 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation)) 117 118 invalidAddress := FeatureAddressType{ 119 Device: util.Ptr(AddressDeviceType("test")), 120 Entity: []AddressEntityType{2}, 121 } 122 ucs.RemoveUseCaseSupport( 123 invalidAddress, 124 UseCaseActorTypeCEM, 125 UseCaseNameTypeEVSECommissioningAndConfiguration, 126 ) 127 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation)) 128 129 ucs.AddUseCaseSupport( 130 address, 131 UseCaseActorTypeEnergyGuard, 132 UseCaseNameTypeLimitationOfPowerConsumption, 133 SpecificationVersionType(""), 134 "", 135 true, 136 []UseCaseScenarioSupportType{}, 137 ) 138 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation)) 139 assert.Equal(s.T(), 1, len(ucs.UseCaseInformation[0].UseCaseSupport)) 140 141 ucs.RemoveUseCaseDataForAddress(address) 142 assert.Equal(s.T(), 0, len(ucs.UseCaseInformation)) 143 }