182 lines
7.3 KiB
Java
182 lines
7.3 KiB
Java
package jmri.jmrix.ieee802154.xbee;
|
|
|
|
import com.digi.xbee.api.RemoteXBeeDevice;
|
|
import com.digi.xbee.api.models.XBee16BitAddress;
|
|
import com.digi.xbee.api.models.XBee64BitAddress;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* XBeeNodeTest.java
|
|
*
|
|
* Test for the jmri.jmrix.ieee802154.xbee.XBeeNode class
|
|
*
|
|
* @author Paul Bender Copyright (C) 2016
|
|
*/
|
|
public class XBeeNodeTest{
|
|
|
|
private XBeeTrafficController tc = null;
|
|
|
|
@Test
|
|
public void testCtor() {
|
|
XBeeNode m = new XBeeNode();
|
|
Assert.assertNotNull("exists", m);
|
|
}
|
|
|
|
@Test
|
|
public void testCtorWithParamters() {
|
|
byte pan[] = {(byte) 0x00, (byte) 0x42};
|
|
byte uad[] = {(byte) 0x6D, (byte) 0x97};
|
|
byte gad[] = {(byte) 0x00, (byte) 0x13, (byte) 0xA2, (byte) 0x00, (byte) 0x40, (byte) 0xA0, (byte) 0x4D, (byte) 0x2D};
|
|
XBeeNode node = new XBeeNode(pan,uad,gad);
|
|
node.setTrafficController(tc);
|
|
Assert.assertNotNull("exists", node);
|
|
Assert.assertEquals("Node PAN address high byte", pan[0], node.getPANAddress()[0]);
|
|
Assert.assertEquals("Node PAN address low byte", pan[1], node.getPANAddress()[1]);
|
|
Assert.assertEquals("Node user address high byte", uad[0], node.getUserAddress()[0]);
|
|
Assert.assertEquals("Node user address low byte", uad[1], node.getUserAddress()[1]);
|
|
for (int i = 0; i < gad.length; i++) {
|
|
Assert.assertEquals("Node global address byte " + i, gad[i], node.getGlobalAddress()[i]);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void testSetPANAddress() {
|
|
// test the code to set the User address
|
|
XBeeNode node = new XBeeNode();
|
|
byte pan[] = {(byte) 0x00, (byte) 0x01};
|
|
node.setPANAddress(pan);
|
|
Assert.assertEquals("Node PAN address high byte", pan[0], node.getPANAddress()[0]);
|
|
Assert.assertEquals("Node PAN address low byte", pan[1], node.getPANAddress()[1]);
|
|
}
|
|
|
|
@Test
|
|
public void testSetUserAddress() {
|
|
// test the code to set the User address
|
|
XBeeNode node = new XBeeNode();
|
|
byte uad[] = {(byte) 0x6D, (byte) 0x97};
|
|
node.setUserAddress(uad);
|
|
Assert.assertEquals("Node user address high byte", uad[0], node.getUserAddress()[0]);
|
|
Assert.assertEquals("Node user address low byte", uad[1], node.getUserAddress()[1]);
|
|
}
|
|
|
|
@Test
|
|
public void testSetGlobalAddress() {
|
|
// test the code to set the User address
|
|
XBeeNode node = new XBeeNode();
|
|
byte gad[] = {(byte) 0x00, (byte) 0x13, (byte) 0xA2, (byte) 0x00, (byte) 0x40, (byte) 0xA0, (byte) 0x4D, (byte) 0x2D};
|
|
node.setGlobalAddress(gad);
|
|
for (int i = 0; i < gad.length; i++) {
|
|
Assert.assertEquals("Node global address byte " + i, gad[i], node.getGlobalAddress()[i]);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void testGetPreferedNameAsUserAddress() {
|
|
RemoteXBeeDevice rd = new RemoteXBeeDevice(tc.getXBee(),
|
|
new XBee64BitAddress("0013A20040A04D2D"),
|
|
new XBee16BitAddress("6D97"),
|
|
"");
|
|
byte pan[] = {(byte) 0x00, (byte) 0x42};
|
|
byte uad[] = {(byte) 0x6D, (byte) 0x97};
|
|
byte gad[] = {(byte) 0x00, (byte) 0x13, (byte) 0xA2, (byte) 0x00, (byte) 0x40, (byte) 0xA0, (byte) 0x4D, (byte) 0x2D};
|
|
XBeeNode node = new XBeeNode(pan,uad,gad);
|
|
node.setXBee(rd);
|
|
tc.registerNode(node);
|
|
Assert.assertEquals("Short Address Name","6D 97 ",node.getPreferedName());
|
|
}
|
|
|
|
@Test
|
|
public void testGetPreferedNameAsGlobalAddress() {
|
|
RemoteXBeeDevice rd = new RemoteXBeeDevice(tc.getXBee(),
|
|
new XBee64BitAddress("0013A20040A04D2D"),
|
|
new XBee16BitAddress("FFFE"),
|
|
"");
|
|
byte pan[] = {(byte) 0x00, (byte) 0x42};
|
|
byte uad[] = {(byte) 0xFF, (byte) 0xFE};
|
|
byte gad[] = {(byte) 0x00, (byte) 0x13, (byte) 0xA2, (byte) 0x00, (byte) 0x40, (byte) 0xA0, (byte) 0x4D, (byte) 0x2D};
|
|
XBeeNode node = new XBeeNode(pan,uad,gad);
|
|
tc.registerNode(node);
|
|
node.setXBee(rd);
|
|
Assert.assertEquals("Global Address Name","00 13 A2 00 40 A0 4D 2D ",node.getPreferedName());
|
|
}
|
|
|
|
@Test
|
|
public void testGetPreferedNameAsNodeIdentifier() {
|
|
RemoteXBeeDevice rd = new RemoteXBeeDevice(tc.getXBee(),
|
|
new XBee64BitAddress("0013A20040A04D2D"),
|
|
new XBee16BitAddress("FFFF"),
|
|
"Hello World");
|
|
byte pan[] = {(byte) 0x00, (byte) 0x42};
|
|
byte uad[] = {(byte) 0xFF, (byte) 0xFF};
|
|
byte gad[] = {(byte) 0x00, (byte) 0x13, (byte) 0xA2, (byte) 0x00, (byte) 0x40, (byte) 0xA0, (byte) 0x4D, (byte) 0x2D};
|
|
XBeeNode node = new XBeeNode(pan,uad,gad);
|
|
node.setXBee(rd);
|
|
node.setIdentifier("Hello World");
|
|
tc.registerNode(node);
|
|
Assert.assertEquals("Identifier Name",node.getPreferedName(),"Hello World");
|
|
}
|
|
|
|
@Test
|
|
public void testGetPreferedTransmitUserAddress() {
|
|
RemoteXBeeDevice rd = new RemoteXBeeDevice(tc.getXBee(),
|
|
new XBee64BitAddress("0013A20040A04D2D"),
|
|
new XBee16BitAddress("6D97"),
|
|
"");
|
|
byte pan[] = {(byte) 0x00, (byte) 0x42};
|
|
byte uad[] = {(byte) 0x6D, (byte) 0x97};
|
|
byte gad[] = {(byte) 0x00, (byte) 0x13, (byte) 0xA2, (byte) 0x00, (byte) 0x40, (byte) 0xA0, (byte) 0x4D, (byte) 0x2D};
|
|
XBeeNode node = new XBeeNode(pan,uad,gad);
|
|
node.setXBee(rd);
|
|
tc.registerNode(node);
|
|
Assert.assertEquals("Short Transmit Address",node.getXBeeAddress16(),node.getPreferedTransmitAddress());
|
|
}
|
|
|
|
@Test
|
|
public void testGetPreferedTransmitGlobalAddress() {
|
|
RemoteXBeeDevice rd = new RemoteXBeeDevice(tc.getXBee(),
|
|
new XBee64BitAddress("0013A20040A04D2D"),
|
|
new XBee16BitAddress("FFFF"),
|
|
"");
|
|
byte pan[] = {(byte) 0x00, (byte) 0x42};
|
|
byte uad[] = {(byte) 0xFF, (byte) 0xFF};
|
|
byte gad[] = {(byte) 0x00, (byte) 0x13, (byte) 0xA2, (byte) 0x00, (byte) 0x40, (byte) 0xA0, (byte) 0x4D, (byte) 0x2D};
|
|
XBeeNode node = new XBeeNode(pan,uad,gad);
|
|
node.setXBee(rd);
|
|
tc.registerNode(node);
|
|
Assert.assertEquals("Global Transmit Address",node.getXBeeAddress64(),node.getPreferedTransmitAddress());
|
|
}
|
|
|
|
@Test
|
|
public void testGetPreferedTransmitGlobalAddressWithMaskRequired() {
|
|
RemoteXBeeDevice rd = new RemoteXBeeDevice(tc.getXBee(),
|
|
new XBee64BitAddress("0013A20040A04D2D"),
|
|
new XBee16BitAddress("FFFF"),
|
|
"");
|
|
byte pan[] = {(byte) 0x00, (byte) 0x42};
|
|
byte uad[] = {(byte) 0x0fffffff, (byte) 0x0ffffffe};
|
|
byte gad[] = {(byte) 0x00, (byte) 0x13, (byte) 0xA2, (byte) 0x00, (byte) 0x40, (byte) 0xA0, (byte) 0x4D, (byte) 0x2D};
|
|
XBeeNode node = new XBeeNode(pan,uad,gad);
|
|
node.setXBee(rd);
|
|
tc.registerNode(node);
|
|
Assert.assertEquals("Global Transmit Address",node.getXBeeAddress64(),node.getPreferedTransmitAddress());
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
jmri.util.JUnitUtil.setUp();
|
|
tc = new XBeeInterfaceScaffold();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
((XBeeInterfaceScaffold)tc).dispose();
|
|
tc = null;
|
|
jmri.util.JUnitUtil.clearShutDownManager(); // put in place because AbstractMRTrafficController implementing subclass was not terminated properly
|
|
jmri.util.JUnitUtil.tearDown();
|
|
|
|
}
|
|
|
|
}
|