244 lines
14 KiB
Java
244 lines
14 KiB
Java
package jmri.jmrix.oaktree;
|
|
|
|
import jmri.Manager.NameValidity;
|
|
import jmri.util.JUnitAppender;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
import org.junit.Assert;
|
|
|
|
/**
|
|
* JUnit tests for the SerialAddress utility class.
|
|
*
|
|
* @author Dave Duchamp Copyright 2004
|
|
* @author Bob Jacobsen Copyright 2007
|
|
*/
|
|
public class SerialAddressTest {
|
|
|
|
@Test
|
|
public void testValidSystemNameFormat() {
|
|
Assert.assertTrue("valid format - OL2",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OL2", 'L', "O"));
|
|
Assert.assertTrue("valid format - OL0B2",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OL0B2", 'L', "O"));
|
|
Assert.assertTrue("invalid format - OL",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OL", 'L', "O"));
|
|
|
|
Assert.assertTrue("invalid format - OLB2",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OLB2", 'L', "O"));
|
|
JUnitAppender.assertWarnMessage("invalid character in number field system name: OL");
|
|
JUnitAppender.assertWarnMessage("no node address before 'B' in system name: OLB2");
|
|
|
|
Assert.assertTrue("valid format - OL2005",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OL2005", 'L', "O"));
|
|
Assert.assertTrue("valid format - OL2B5",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OL2B5", 'L', "O"));
|
|
Assert.assertTrue("valid format - OT2005",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OT2005", 'T', "O"));
|
|
Assert.assertTrue("valid format - OT2B5",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OT2B5", 'T', "O"));
|
|
Assert.assertTrue("valid format - OS2005",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OS2005", 'S', "O"));
|
|
Assert.assertTrue("valid format - OS2B5",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OS2B5", 'S', "O"));
|
|
|
|
Assert.assertTrue("invalid format - OY2005",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OY2005", 'L', "O"));
|
|
JUnitAppender.assertErrorMessage("invalid character in header field system name: OY2005");
|
|
|
|
Assert.assertTrue("invalid format - OY2B5",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OY2B5", 'L', "O"));
|
|
JUnitAppender.assertErrorMessage("invalid character in header field system name: OY2B5");
|
|
|
|
Assert.assertTrue("valid format - OL22001",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OL22001", 'L', "O"));
|
|
Assert.assertTrue("valid format - OL22B1",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OL22B1", 'L', "O"));
|
|
|
|
Assert.assertTrue("invalid format - OL22000",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OL22000", 'L', "O"));
|
|
JUnitAppender.assertWarnMessage("bit number not in range 1 - 999 in system name: OL22000");
|
|
|
|
Assert.assertTrue("invalid format - OL22B0",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OL22B0", 'L', "O"));
|
|
JUnitAppender.assertWarnMessage("bit number field out of range in system name: OL22B0");
|
|
|
|
Assert.assertTrue("valid format - OL2999",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OL2999", 'L', "O"));
|
|
Assert.assertTrue("valid format - OL2B2048",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OL2B2048", 'L', "O"));
|
|
|
|
Assert.assertTrue("invalid format - OL2B2049",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OL2B2049", 'L', "O"));
|
|
JUnitAppender.assertWarnMessage("bit number field out of range in system name: OL2B2049");
|
|
|
|
Assert.assertTrue("valid format - OL127999",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OL127999", 'L', "O"));
|
|
|
|
Assert.assertTrue("invalid format - OL128000",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OL128000", 'L', "O"));
|
|
JUnitAppender.assertWarnMessage("bit number not in range 1 - 999 in system name: OL128000");
|
|
|
|
Assert.assertTrue("valid format - OL127B7",
|
|
NameValidity.VALID == SerialAddress.validSystemNameFormat("OL127B7", 'L', "O"));
|
|
|
|
Assert.assertTrue("invalid format - OL128B7",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OL128B7", 'L', "O"));
|
|
JUnitAppender.assertWarnMessage("node address field out of range in system name: OL128B7");
|
|
|
|
Assert.assertTrue("invalid format - OL2oo5",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OL2oo5", 'L', "O"));
|
|
JUnitAppender.assertWarnMessage("invalid character in number field system name: OL2oo5");
|
|
|
|
Assert.assertTrue("invalid format - OL2aB5",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OL2aB5", 'L', "O"));
|
|
JUnitAppender.assertWarnMessage("invalid character in node address field of system name: OL2aB5");
|
|
|
|
Assert.assertTrue("invalid format - OL2B5x",
|
|
NameValidity.VALID != SerialAddress.validSystemNameFormat("OL2B5x", 'L', "O"));
|
|
JUnitAppender.assertWarnMessage("invalid character in bit number field of system name: OL2B5x");
|
|
}
|
|
|
|
@Test
|
|
public void testGetBitFromSystemName() {
|
|
Assert.assertEquals("OL2", 2, SerialAddress.getBitFromSystemName("OL2", "O"));
|
|
Assert.assertEquals("OL2002", 2, SerialAddress.getBitFromSystemName("OL2002", "O"));
|
|
Assert.assertEquals("OL1", 1, SerialAddress.getBitFromSystemName("OL1", "O"));
|
|
Assert.assertEquals("OL2001", 1, SerialAddress.getBitFromSystemName("OL2001", "O"));
|
|
Assert.assertEquals("OL999", 999, SerialAddress.getBitFromSystemName("OL999", "O"));
|
|
Assert.assertEquals("OL2999", 999, SerialAddress.getBitFromSystemName("OL2999", "O"));
|
|
|
|
Assert.assertEquals("OL29O9", 0, SerialAddress.getBitFromSystemName("OL29O9", "O"));
|
|
JUnitAppender.assertErrorMessage("illegal character in number field of system name: OL29O9");
|
|
|
|
Assert.assertEquals("OL0B7", 7, SerialAddress.getBitFromSystemName("OL0B7", "O"));
|
|
Assert.assertEquals("OL2B7", 7, SerialAddress.getBitFromSystemName("OL2B7", "O"));
|
|
Assert.assertEquals("OL0B1", 1, SerialAddress.getBitFromSystemName("OL0B1", "O"));
|
|
Assert.assertEquals("OL2B1", 1, SerialAddress.getBitFromSystemName("OL2B1", "O"));
|
|
Assert.assertEquals("OL0B2048", 2048, SerialAddress.getBitFromSystemName("OL0B2048", "O"));
|
|
Assert.assertEquals("OL11B2048", 2048, SerialAddress.getBitFromSystemName("OL11B2048", "O"));
|
|
}
|
|
|
|
@Test
|
|
public void testGetNodeFromSystemName() {
|
|
SerialNode d = new SerialNode(14, SerialNode.IO48, memo);
|
|
SerialNode c = new SerialNode(17, SerialNode.IO24, memo);
|
|
SerialNode b = new SerialNode(127, SerialNode.IO24, memo);
|
|
Assert.assertEquals("node of OL14007", d,
|
|
SerialAddress.getNodeFromSystemName("OL14007", memo.getTrafficController()));
|
|
Assert.assertEquals("node of OL14B7", d,
|
|
SerialAddress.getNodeFromSystemName("OL14B7", memo.getTrafficController()));
|
|
Assert.assertEquals("node of OL127007", b,
|
|
SerialAddress.getNodeFromSystemName("OL127007", memo.getTrafficController()));
|
|
Assert.assertEquals("node of OL127B7", b,
|
|
SerialAddress.getNodeFromSystemName("OL127B7", memo.getTrafficController()));
|
|
Assert.assertEquals("node of OL17007", c,
|
|
SerialAddress.getNodeFromSystemName("OL17007", memo.getTrafficController()));
|
|
Assert.assertEquals("node of OL17B7", c,
|
|
SerialAddress.getNodeFromSystemName("OL17B7", memo.getTrafficController()));
|
|
Assert.assertEquals("node of OL11007", null,
|
|
SerialAddress.getNodeFromSystemName("OL11007", memo.getTrafficController()));
|
|
Assert.assertEquals("node of OL11B7", null,
|
|
SerialAddress.getNodeFromSystemName("OL11B7", memo.getTrafficController()));
|
|
}
|
|
|
|
@Test
|
|
public void testValidSystemNameConfig() {
|
|
SerialNode d = new SerialNode(4, SerialNode.IO24, memo);
|
|
SerialNode c = new SerialNode(10, SerialNode.IO48, memo);
|
|
Assert.assertNotNull("exists", d);
|
|
Assert.assertNotNull("exists", c);
|
|
Assert.assertTrue("valid config OL4007", SerialAddress.validSystemNameConfig("OL4007", 'L', memo));
|
|
Assert.assertTrue("valid config OL4B7", SerialAddress.validSystemNameConfig("OL4B7", 'L', memo));
|
|
Assert.assertTrue("valid config OS10007", SerialAddress.validSystemNameConfig("OS10007", 'S', memo));
|
|
Assert.assertTrue("valid config OS10B7", SerialAddress.validSystemNameConfig("OS10B7", 'S', memo));
|
|
Assert.assertTrue("valid config OL10032", SerialAddress.validSystemNameConfig("OL10032", 'L', memo));
|
|
Assert.assertTrue("valid config OL10B32", SerialAddress.validSystemNameConfig("OL10B32", 'L', memo));
|
|
|
|
Assert.assertTrue("invalid config OL10033", !SerialAddress.validSystemNameConfig("OL10033", 'L', memo));
|
|
JUnitAppender.assertWarnMessage("invalid system name OL10033; bad bit number");
|
|
|
|
Assert.assertTrue("invalid config OL10B33", !SerialAddress.validSystemNameConfig("OL10B33", 'L', memo));
|
|
JUnitAppender.assertWarnMessage("invalid system name OL10B33; bad bit number");
|
|
|
|
Assert.assertTrue("valid config OS10016", SerialAddress.validSystemNameConfig("OS10016", 'S', memo));
|
|
Assert.assertTrue("valid config OS10B16", SerialAddress.validSystemNameConfig("OS10B16", 'S', memo));
|
|
|
|
Assert.assertTrue("invalid config OS10017", !SerialAddress.validSystemNameConfig("OS10017", 'S', memo));
|
|
JUnitAppender.assertWarnMessage("invalid system name OS10017; bad bit number");
|
|
|
|
Assert.assertTrue("invalid config OS10B17", !SerialAddress.validSystemNameConfig("OS10B17", 'S', memo));
|
|
JUnitAppender.assertWarnMessage("invalid system name OS10B17; bad bit number");
|
|
|
|
Assert.assertTrue("valid config OT4016", SerialAddress.validSystemNameConfig("OT4016", 'T', memo));
|
|
Assert.assertTrue("valid config OT4B16", SerialAddress.validSystemNameConfig("OT4B16", 'T', memo));
|
|
|
|
Assert.assertTrue("invalid config OT4017", !SerialAddress.validSystemNameConfig("OT4017", 'T', memo));
|
|
JUnitAppender.assertWarnMessage("invalid system name OT4017; bad bit number");
|
|
|
|
Assert.assertTrue("invalid config OT4017", !SerialAddress.validSystemNameConfig("OT4B17", 'T', memo));
|
|
JUnitAppender.assertWarnMessage("invalid system name OT4B17; bad bit number");
|
|
|
|
Assert.assertTrue("valid config OS4008", SerialAddress.validSystemNameConfig("OS4008", 'S', memo));
|
|
Assert.assertTrue("valid config OS4B8", SerialAddress.validSystemNameConfig("OS4B8", 'S', memo));
|
|
|
|
Assert.assertTrue("invalid config OS4009", !SerialAddress.validSystemNameConfig("OS4009", 'S', memo));
|
|
JUnitAppender.assertWarnMessage("invalid system name OS4009; bad bit number");
|
|
|
|
Assert.assertTrue("invalid config OS4B9", !SerialAddress.validSystemNameConfig("OS4B9", 'S', memo));
|
|
JUnitAppender.assertWarnMessage("invalid system name OS4B9; bad bit number");
|
|
|
|
Assert.assertTrue("invalid config OL11007", !SerialAddress.validSystemNameConfig("OL11007", 'L', memo));
|
|
JUnitAppender.assertWarnMessage("invalid system name OL11007; no such node");
|
|
|
|
Assert.assertTrue("invalid config OL11B7", !SerialAddress.validSystemNameConfig("OL11B7", 'L', memo));
|
|
JUnitAppender.assertWarnMessage("invalid system name OL11B7; no such node");
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testConvertSystemNameFormat() {
|
|
Assert.assertEquals("convert OL14007", "OL14B7", SerialAddress.convertSystemNameToAlternate("OL14007", "O"));
|
|
Assert.assertEquals("convert OS7", "OS0B7", SerialAddress.convertSystemNameToAlternate("OS7", "O"));
|
|
Assert.assertEquals("convert OT4007", "OT4B7", SerialAddress.convertSystemNameToAlternate("OT4007", "O"));
|
|
Assert.assertEquals("convert OL14B7", "OL14007", SerialAddress.convertSystemNameToAlternate("OL14B7", "O"));
|
|
Assert.assertEquals("convert OL0B7", "OL7", SerialAddress.convertSystemNameToAlternate("OL0B7", "O"));
|
|
Assert.assertEquals("convert OS4B7", "OS4007", SerialAddress.convertSystemNameToAlternate("OS4B7", "O"));
|
|
Assert.assertEquals("convert OL14B8", "OL14008", SerialAddress.convertSystemNameToAlternate("OL14B8", "O"));
|
|
|
|
Assert.assertEquals("convert OL128B7", "", SerialAddress.convertSystemNameToAlternate("OL128B7", "O"));
|
|
JUnitAppender.assertWarnMessage("node address field out of range in system name: OL128B7");
|
|
}
|
|
|
|
@Test
|
|
public void testNormalizeSystemName() {
|
|
Assert.assertEquals("normalize OL14007", "OL14007", SerialAddress.normalizeSystemName("OL14007", "O"));
|
|
Assert.assertEquals("normalize OL007", "OL7", SerialAddress.normalizeSystemName("OL007", "O"));
|
|
Assert.assertEquals("normalize OL004007", "OL4007", SerialAddress.normalizeSystemName("OL004007", "O"));
|
|
Assert.assertEquals("normalize OL14B7", "OL14B7", SerialAddress.normalizeSystemName("OL14B7", "O"));
|
|
Assert.assertEquals("normalize OL0B7", "OL0B7", SerialAddress.normalizeSystemName("OL0B7", "O"));
|
|
Assert.assertEquals("normalize OL004B7", "OL4B7", SerialAddress.normalizeSystemName("OL004B7", "O"));
|
|
Assert.assertEquals("normalize OL014B0008", "OL14B8", SerialAddress.normalizeSystemName("OL014B0008", "O"));
|
|
|
|
Assert.assertEquals("normalize OL128B7", "", SerialAddress.normalizeSystemName("OL128B7", "O"));
|
|
JUnitAppender.assertWarnMessage("node address field out of range in system name: OL128B7");
|
|
}
|
|
|
|
private OakTreeSystemConnectionMemo memo = null;
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
memo = new OakTreeSystemConnectionMemo();
|
|
memo.setTrafficController(new SerialTrafficControlScaffold(memo)); // important for successful getTrafficController()
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.clearShutDownManager(); // put in place because AbstractMRTrafficController implementing subclass was not terminated properly
|
|
JUnitUtil.tearDown();
|
|
|
|
}
|
|
|
|
}
|