2424import com .zsmartsystems .zigbee .ZigBeeNode .ZigBeeNodeState ;
2525import com .zsmartsystems .zigbee .serialization .DefaultDeserializer ;
2626import com .zsmartsystems .zigbee .zcl .ZclCommand ;
27+ import com .zsmartsystems .zigbee .zdo .ZdoCommand ;
2728import com .zsmartsystems .zigbee .zdo .field .NeighborTable ;
2829import com .zsmartsystems .zigbee .zdo .field .NodeDescriptor ;
2930import com .zsmartsystems .zigbee .zdo .field .NodeDescriptor .LogicalType ;
3536import com .zsmartsystems .zigbee .zdo .field .RoutingTable .DiscoveryState ;
3637
3738public class ZigBeeNodeTest {
39+ static final int TIMEOUT = 5000 ;
40+
3841 @ Test
3942 public void testAddDescriptors () {
4043 ZigBeeNode node = new ZigBeeNode (Mockito .mock (ZigBeeNetworkManager .class ), new IeeeAddress ());
@@ -375,14 +378,29 @@ public void testUpdated() {
375378 @ Test
376379 public void isDiscovered () {
377380 ZigBeeNode node = new ZigBeeNode (Mockito .mock (ZigBeeNetworkManager .class ), new IeeeAddress ("1234567890" ));
381+ ZigBeeNetworkEndpointListener listener = Mockito .mock (ZigBeeNetworkEndpointListener .class );
382+ node .addNetworkEndpointListener (listener );
383+
378384 assertFalse (node .isDiscovered ());
385+ assertNotNull (node .getEndpoints ());
379386
380387 NodeDescriptor descriptor = new NodeDescriptor (0 , 3333 , 74 , true , 6666 , 0 , 6 , 4444 , true , 8 );
381388 node .setNodeDescriptor (descriptor );
382389 assertFalse (node .isDiscovered ());
383390
384- node .addEndpoint (new ZigBeeEndpoint (node , 1 ));
391+ ZigBeeEndpoint endpoint = new ZigBeeEndpoint (node , 1 );
392+ node .addEndpoint (endpoint );
385393 assertTrue (node .isDiscovered ());
394+ Mockito .verify (listener , Mockito .timeout (TIMEOUT )).deviceAdded (endpoint );
395+
396+ assertEquals (endpoint , node .getEndpoint (1 ));
397+ assertEquals (1 , node .getEndpoints ().size ());
398+
399+ node .removeEndpoint (1 );
400+ assertEquals (0 , node .getEndpoints ().size ());
401+ Mockito .verify (listener , Mockito .timeout (TIMEOUT )).deviceRemoved (endpoint );
402+
403+ node .removeNetworkEndpointListener (listener );
386404 }
387405
388406 @ Test
@@ -429,6 +447,12 @@ public void commandReceived() {
429447 node .commandReceived (unicast );
430448 Mockito .verify (endpoint1 , Mockito .times (1 )).commandReceived (unicast );
431449 Mockito .verify (endpoint2 , Mockito .times (0 )).commandReceived (unicast );
450+
451+ ZdoCommand zdoCommand = Mockito .mock (ZdoCommand .class );
452+ ZigBeeAddress zdoSource = Mockito .mock (ZigBeeAddress .class );
453+ Mockito .when (zdoSource .getAddress ()).thenReturn (12345 );
454+ Mockito .when (zdoCommand .getSourceAddress ()).thenReturn (zdoSource );
455+ node .commandReceived (zdoCommand );
432456 }
433457
434458 @ Test
@@ -437,7 +461,9 @@ public void setNodeState() {
437461
438462 assertFalse (node .setNodeState (ZigBeeNodeState .UNKNOWN ));
439463 assertTrue (node .setNodeState (ZigBeeNodeState .ONLINE ));
464+ assertEquals (ZigBeeNodeState .ONLINE , node .getNodeState ());
440465 assertTrue (node .setNodeState (ZigBeeNodeState .OFFLINE ));
441466 assertFalse (node .setNodeState (ZigBeeNodeState .OFFLINE ));
467+ assertEquals (ZigBeeNodeState .OFFLINE , node .getNodeState ());
442468 }
443469}
0 commit comments