Files
JIMRI/java/test/jmri/jmrix/roco/z21/Z21RMBusAddressTest.java
T
2026-06-17 14:00:51 +02:00

81 lines
3.0 KiB
Java

package jmri.jmrix.roco.z21;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.Locale;
import jmri.Manager;
import jmri.NamedBean;
import jmri.util.JUnitAppender;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
/**
*
* @author Paul Bender Copyright (C) 2019
*/
public class Z21RMBusAddressTest {
@Test
public void testGetBitFromAddress() {
assertEquals( 150, Z21RMBusAddress.getBitFromSystemName("ZS150","Z"));
assertEquals( -1, Z21RMBusAddress.getBitFromSystemName("ZS999","Z"));
JUnitAppender.assertWarnMessage("Z21 RM Bus hardware address out of range in system name ZS999");
}
@Test
public void testValidateSystemNameFormat() {
Z21TrafficController znis = new Z21InterfaceScaffold();
Z21SystemConnectionMemo memo = new Z21SystemConnectionMemo();
memo.setTrafficController(znis);
memo.setRocoZ21CommandStation(new RocoZ21CommandStation());
Z21SensorManager sm = new Z21SensorManager(memo);
assertEquals( "ZS1", Z21RMBusAddress.validateSystemNameFormat("ZS1", sm, Locale.ENGLISH));
assertEquals( "ZS75", Z21RMBusAddress.validateSystemNameFormat("ZS75", sm, Locale.ENGLISH));
assertEquals( "ZS128", Z21RMBusAddress.validateSystemNameFormat("ZS128", sm, Locale.ENGLISH));
Throwable thrown = assertThrows(NamedBean.BadSystemNameException.class, () -> {
Z21RMBusAddress.validateSystemNameFormat("ZS0a:b", sm, Locale.ENGLISH);
});
assertNotNull(thrown);
JUnitAppender.suppressWarnMessage("invalid character in number field of system name: ZS0b:a");
thrown = assertThrows( NamedBean.BadSystemNameException.class, () -> {
Z21RMBusAddress.validateSystemNameFormat("ZS999", sm, Locale.ENGLISH);
});
assertNotNull(thrown);
JUnitAppender.suppressWarnMessage("Z21 RM Bus hardware address out of range in system name ZS999");
sm.dispose();
znis.terminateThreads();
}
@Test
public void testValidSystemNameFormat() {
assertEquals(Manager.NameValidity.VALID, Z21RMBusAddress.validSystemNameFormat("ZS1",'S',"Z"));
assertEquals(Manager.NameValidity.VALID, Z21RMBusAddress.validSystemNameFormat("ZS75",'S',"Z"));
assertEquals(Manager.NameValidity.VALID, Z21RMBusAddress.validSystemNameFormat("ZS128",'S',"Z"));
assertEquals(Manager.NameValidity.INVALID, Z21RMBusAddress.validSystemNameFormat("ZS0b:a",'S',"Z"));
JUnitAppender.assertWarnMessage("invalid character in number field of system name: ZS0b:a");
assertEquals(Manager.NameValidity.INVALID, Z21RMBusAddress.validSystemNameFormat("ZS999",'S',"Z"));
JUnitAppender.assertWarnMessage("Z21 RM Bus hardware address out of range in system name ZS999");
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
}