Files
JIMRI/java/test/jmri/jmrix/oaktree/SerialAddressTest.java
T
2026-06-17 14:00:51 +02:00

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();
}
}