Skip to content

Commit c252c33

Browse files
authored
Update node tests (#488)
Signed-off-by: Chris Jackson <chris@cd-jackson.com>
1 parent 3b0b54c commit c252c33

2 files changed

Lines changed: 39 additions & 2 deletions

File tree

com.zsmartsystems.zigbee/src/main/java/com/zsmartsystems/zigbee/ZigBeeNode.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,12 @@ public void run() {
480480
}
481481
}
482482

483+
/**
484+
* Adds a {@link ZigBeeNetworkEndpointListener} to the node. The listener will be notified of any addition or
485+
* removal of endpoints in the node.
486+
*
487+
* @param networkDeviceListener the {@link ZigBeeNetworkEndpointListener} to add
488+
*/
483489
public void addNetworkEndpointListener(final ZigBeeNetworkEndpointListener networkDeviceListener) {
484490
synchronized (this) {
485491
final List<ZigBeeNetworkEndpointListener> modifiedListeners = new ArrayList<ZigBeeNetworkEndpointListener>(
@@ -489,6 +495,11 @@ public void addNetworkEndpointListener(final ZigBeeNetworkEndpointListener netwo
489495
}
490496
}
491497

498+
/**
499+
* Removes the {@link ZigBeeNetworkEndpointListener}
500+
*
501+
* @param networkDeviceListener the {@link ZigBeeNetworkEndpointListener} to remove
502+
*/
492503
public void removeNetworkEndpointListener(final ZigBeeNetworkEndpointListener networkDeviceListener) {
493504
synchronized (this) {
494505
final List<ZigBeeNetworkEndpointListener> modifiedListeners = new ArrayList<ZigBeeNetworkEndpointListener>(
@@ -813,7 +824,7 @@ public ZigBeeNodeState getNodeState() {
813824
public String toString() {
814825
StringBuilder builder = new StringBuilder(100);
815826

816-
builder.append("ZigBeeNode [state");
827+
builder.append("ZigBeeNode [state=");
817828
builder.append(nodeState);
818829
builder.append(", IEEE=");
819830
builder.append(ieeeAddress);

com.zsmartsystems.zigbee/src/test/java/com/zsmartsystems/zigbee/ZigBeeNodeTest.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.zsmartsystems.zigbee.ZigBeeNode.ZigBeeNodeState;
2525
import com.zsmartsystems.zigbee.serialization.DefaultDeserializer;
2626
import com.zsmartsystems.zigbee.zcl.ZclCommand;
27+
import com.zsmartsystems.zigbee.zdo.ZdoCommand;
2728
import com.zsmartsystems.zigbee.zdo.field.NeighborTable;
2829
import com.zsmartsystems.zigbee.zdo.field.NodeDescriptor;
2930
import com.zsmartsystems.zigbee.zdo.field.NodeDescriptor.LogicalType;
@@ -35,6 +36,8 @@
3536
import com.zsmartsystems.zigbee.zdo.field.RoutingTable.DiscoveryState;
3637

3738
public 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

Comments
 (0)