@@ -22,6 +22,20 @@ var _ spine.SpineDataConnection = (*DeviceLocalTestSuite)(nil)
2222
2323func  (d  * DeviceLocalTestSuite ) WriteSpineMessage ([]byte ) {}
2424
25+ func  (d  * DeviceLocalTestSuite ) Test_RemoveRemoteDevice () {
26+ 	sut  :=  spine .NewDeviceLocalImpl ("brand" , "model" , "serial" , "code" , "address" , model .DeviceTypeTypeEnergyManagementSystem , model .NetworkManagementFeatureSetTypeSmart )
27+ 
28+ 	ski  :=  "test" 
29+ 	sut .AddRemoteDevice (ski , d )
30+ 	rDevice  :=  sut .RemoteDeviceForSki (ski )
31+ 	assert .NotNil (d .T (), rDevice )
32+ 
33+ 	sut .RemoveRemoteDeviceConnection (ski )
34+ 
35+ 	rDevice  =  sut .RemoteDeviceForSki (ski )
36+ 	assert .Nil (d .T (), rDevice )
37+ }
38+ 
2539func  (d  * DeviceLocalTestSuite ) Test_RemoteDevice () {
2640	sut  :=  spine .NewDeviceLocalImpl ("brand" , "model" , "serial" , "code" , "address" , model .DeviceTypeTypeEnergyManagementSystem , model .NetworkManagementFeatureSetTypeSmart )
2741	localEntity  :=  spine .NewEntityLocalImpl (sut , model .EntityTypeTypeCEM , spine .NewAddressEntityType ([]uint {1 }))
@@ -73,3 +87,150 @@ func (d *DeviceLocalTestSuite) Test_RemoteDevice() {
7387	remote  =  sut .RemoteDeviceForSki (ski )
7488	assert .Nil (d .T (), remote )
7589}
90+ 
91+ func  (d  * DeviceLocalTestSuite ) Test_ProcessCmd_Errors () {
92+ 	sut  :=  spine .NewDeviceLocalImpl ("brand" , "model" , "serial" , "code" , "address" , model .DeviceTypeTypeEnergyManagementSystem , model .NetworkManagementFeatureSetTypeSmart )
93+ 	localEntity  :=  spine .NewEntityLocalImpl (sut , model .EntityTypeTypeCEM , spine .NewAddressEntityType ([]uint {1 }))
94+ 	sut .AddEntity (localEntity )
95+ 
96+ 	ski  :=  "test" 
97+ 	sut .AddRemoteDevice (ski , d )
98+ 	remote  :=  sut .RemoteDeviceForSki (ski )
99+ 	assert .NotNil (d .T (), remote )
100+ 
101+ 	datagram  :=  model.DatagramType {
102+ 		Header : model.HeaderType {
103+ 			AddressSource : & model.FeatureAddressType {
104+ 				Device : util .Ptr (model .AddressDeviceType ("localdevice" )),
105+ 			},
106+ 			AddressDestination : & model.FeatureAddressType {
107+ 				Device : util .Ptr (model .AddressDeviceType ("localdevice" )),
108+ 			},
109+ 			MsgCounter :    util .Ptr (model .MsgCounterType (1 )),
110+ 			CmdClassifier : util .Ptr (model .CmdClassifierTypeRead ),
111+ 		},
112+ 		Payload : model.PayloadType {
113+ 			Cmd : []model.CmdType {},
114+ 		},
115+ 	}
116+ 
117+ 	err  :=  sut .ProcessCmd (datagram , remote )
118+ 	assert .NotNil (d .T (), err )
119+ 
120+ 	datagram  =  model.DatagramType {
121+ 		Header : model.HeaderType {
122+ 			AddressSource : & model.FeatureAddressType {
123+ 				Device : util .Ptr (model .AddressDeviceType ("localdevice" )),
124+ 			},
125+ 			AddressDestination : & model.FeatureAddressType {
126+ 				Device : util .Ptr (model .AddressDeviceType ("localdevice" )),
127+ 			},
128+ 			MsgCounter :    util .Ptr (model .MsgCounterType (1 )),
129+ 			CmdClassifier : util .Ptr (model .CmdClassifierTypeRead ),
130+ 		},
131+ 		Payload : model.PayloadType {
132+ 			Cmd : []model.CmdType {
133+ 				{},
134+ 			},
135+ 		},
136+ 	}
137+ 
138+ 	err  =  sut .ProcessCmd (datagram , remote )
139+ 	assert .NotNil (d .T (), err )
140+ }
141+ 
142+ func  (d  * DeviceLocalTestSuite ) Test_ProcessCmd () {
143+ 	sut  :=  spine .NewDeviceLocalImpl ("brand" , "model" , "serial" , "code" , "address" , model .DeviceTypeTypeEnergyManagementSystem , model .NetworkManagementFeatureSetTypeSmart )
144+ 	localEntity  :=  spine .NewEntityLocalImpl (sut , model .EntityTypeTypeCEM , spine .NewAddressEntityType ([]uint {1 }))
145+ 	sut .AddEntity (localEntity )
146+ 
147+ 	f  :=  spine .NewFeatureLocalImpl (1 , localEntity , model .FeatureTypeTypeElectricalConnection , model .RoleTypeClient )
148+ 	localEntity .AddFeature (f )
149+ 	f  =  spine .NewFeatureLocalImpl (2 , localEntity , model .FeatureTypeTypeMeasurement , model .RoleTypeClient )
150+ 	localEntity .AddFeature (f )
151+ 	f  =  spine .NewFeatureLocalImpl (3 , localEntity , model .FeatureTypeTypeElectricalConnection , model .RoleTypeServer )
152+ 	localEntity .AddFeature (f )
153+ 
154+ 	ski  :=  "test" 
155+ 	remoteDeviceName  :=  "remote" 
156+ 	sut .AddRemoteDevice (ski , d )
157+ 	remote  :=  sut .RemoteDeviceForSki (ski )
158+ 	assert .NotNil (d .T (), remote )
159+ 
160+ 	detailedData  :=  & model.NodeManagementDetailedDiscoveryDataType {
161+ 		DeviceInformation : & model.NodeManagementDetailedDiscoveryDeviceInformationType {
162+ 			Description : & model.NetworkManagementDeviceDescriptionDataType {
163+ 				DeviceAddress : & model.DeviceAddressType {
164+ 					Device : util .Ptr (model .AddressDeviceType (remoteDeviceName )),
165+ 				},
166+ 			},
167+ 		},
168+ 		EntityInformation : []model.NodeManagementDetailedDiscoveryEntityInformationType {
169+ 			{
170+ 				Description : & model.NetworkManagementEntityDescriptionDataType {
171+ 					EntityAddress : & model.EntityAddressType {
172+ 						Device : util .Ptr (model .AddressDeviceType (remoteDeviceName )),
173+ 						Entity : []model.AddressEntityType {1 },
174+ 					},
175+ 					EntityType : util .Ptr (model .EntityTypeTypeEVSE ),
176+ 				},
177+ 			},
178+ 		},
179+ 		FeatureInformation : []model.NodeManagementDetailedDiscoveryFeatureInformationType {
180+ 			{
181+ 				Description : & model.NetworkManagementFeatureDescriptionDataType {
182+ 					FeatureAddress : & model.FeatureAddressType {
183+ 						Device :  util .Ptr (model .AddressDeviceType (remoteDeviceName )),
184+ 						Entity :  []model.AddressEntityType {1 },
185+ 						Feature : util .Ptr (model .AddressFeatureType (1 )),
186+ 					},
187+ 					FeatureType : util .Ptr (model .FeatureTypeTypeElectricalConnection ),
188+ 					Role :        util .Ptr (model .RoleTypeServer ),
189+ 				},
190+ 			},
191+ 		},
192+ 	}
193+ 	_ , err  :=  remote .AddEntityAndFeatures (true , detailedData )
194+ 	assert .Nil (d .T (), err )
195+ 
196+ 	datagram  :=  model.DatagramType {
197+ 		Header : model.HeaderType {
198+ 			AddressSource : & model.FeatureAddressType {
199+ 				Device :  util .Ptr (model .AddressDeviceType (remoteDeviceName )),
200+ 				Entity :  []model.AddressEntityType {1 },
201+ 				Feature : util .Ptr (model .AddressFeatureType (1 )),
202+ 			},
203+ 			AddressDestination : & model.FeatureAddressType {
204+ 				Device : util .Ptr (model .AddressDeviceType ("localdevice" )),
205+ 				Entity : []model.AddressEntityType {1 },
206+ 			},
207+ 			MsgCounter :    util .Ptr (model .MsgCounterType (1 )),
208+ 			CmdClassifier : util .Ptr (model .CmdClassifierTypeRead ),
209+ 		},
210+ 		Payload : model.PayloadType {
211+ 			Cmd : []model.CmdType {},
212+ 		},
213+ 	}
214+ 
215+ 	err  =  sut .ProcessCmd (datagram , remote )
216+ 	assert .NotNil (d .T (), err )
217+ 
218+ 	cmd  :=  model.CmdType {
219+ 		ElectricalConnectionParameterDescriptionListData : & model.ElectricalConnectionParameterDescriptionListDataType {},
220+ 	}
221+ 
222+ 	datagram .Payload .Cmd  =  append (datagram .Payload .Cmd , cmd )
223+ 
224+ 	err  =  sut .ProcessCmd (datagram , remote )
225+ 	assert .NotNil (d .T (), err )
226+ 
227+ 	datagram .Header .AddressDestination .Feature  =  util .Ptr (model .AddressFeatureType (1 ))
228+ 
229+ 	err  =  sut .ProcessCmd (datagram , remote )
230+ 	assert .NotNil (d .T (), err )
231+ 
232+ 	datagram .Header .AddressDestination .Feature  =  util .Ptr (model .AddressFeatureType (3 ))
233+ 
234+ 	err  =  sut .ProcessCmd (datagram , remote )
235+ 	assert .Nil (d .T (), err )
236+ }
0 commit comments