Files
JIMRI/java/test/jmri/jmrix/cmri/serial/SerialSensorManagerTest.java
T
2026-06-17 14:00:51 +02:00

122 lines
4.5 KiB
Java

package jmri.jmrix.cmri.serial;
import jmri.Manager.NameValidity;
import jmri.Sensor;
import jmri.util.JUnitUtil;
import org.junit.Assert;
import org.junit.jupiter.api.*;
/**
* JUnit tests for the SerialSensorManager class.
*
* @author Bob Jacobsen Copyright 2003
* @author Paul Bender Copyright (C) 2016
*/
public class SerialSensorManagerTest extends jmri.managers.AbstractSensorMgrTestBase {
private jmri.jmrix.cmri.CMRISystemConnectionMemo memo = null;
private SerialTrafficControlScaffold stcs = null;
private SerialNode n0 = null;
private SerialNode n1 = null;
private SerialNode n2 = null;
@Override
public String getSystemName(int i) {
return "CS" + i;
}
@Test
public void testSensorCreationAndRegistration() {
Assert.assertTrue("none expected A0", !(n0.getSensorsActive()));
Assert.assertTrue("none expected A1", !(n1.getSensorsActive()));
Assert.assertTrue("none expected A2", !(n2.getSensorsActive()));
Sensor sensor = l.provideSensor("3");
Assert.assertNotNull("found sensor", sensor);
Assert.assertTrue("right name", sensor.getSystemName().equals("CS3"));
Assert.assertTrue("UA 0", n0.getSensorsActive());
Assert.assertTrue("2nd none expected A1", !(n1.getSensorsActive()));
Assert.assertTrue("2nd none expected A2", !(n2.getSensorsActive()));
l.provideSensor("11");
l.provideSensor("8");
l.provideSensor("19");
l.provideSensor("23");
l.provideSensor("CS2048");
Assert.assertTrue("2nd UA 0", n0.getSensorsActive());
Assert.assertTrue("3rd none expected UA 1", !(n1.getSensorsActive()));
Assert.assertTrue("UA 2", n2.getSensorsActive());
l.provideSensor("15");
l.provideSensor("1001");
Assert.assertTrue("3rd UA 0", n0.getSensorsActive());
Assert.assertTrue("UA 1", n1.getSensorsActive());
Assert.assertTrue("2nd UA 2", n0.getSensorsActive());
l.provideSensor("17");
l.provideSensor("1017");
l.provideSensor("2017");
Assert.assertTrue("4th UA 0", n0.getSensorsActive());
Assert.assertTrue("2nd UA 1", n1.getSensorsActive());
Assert.assertTrue("3rd UA 2", n0.getSensorsActive());
}
@Test
public void testValidSystemNameFormat() {
Assert.assertEquals(NameValidity.VALID, l.validSystemNameFormat("CS1"));
Assert.assertEquals(NameValidity.VALID, l.validSystemNameFormat("CS21"));
Assert.assertEquals(NameValidity.VALID, l.validSystemNameFormat("CS2001"));
Assert.assertEquals(NameValidity.VALID, l.validSystemNameFormat("CS21001"));
Assert.assertEquals(NameValidity.INVALID, l.validSystemNameFormat("CSx"));
// jmri.util.JUnitAppender.assertWarnMessage("invalid character in number field of CMRI system name: CSx");
Assert.assertEquals(NameValidity.VALID_AS_PREFIX_ONLY, l.validSystemNameFormat("CS2000"));
// jmri.util.JUnitAppender.assertWarnMessage("bit number not in range 1 - 999 in CMRI system name: CS2000");
Assert.assertEquals(NameValidity.INVALID, l.validSystemNameFormat("CS"));
// jmri.util.JUnitAppender.assertWarnMessage("invalid character in number field of CMRI system name: CS");
}
@Test
public void testDefinitions() {
Assert.assertEquals("Node definitions match", SerialSensorManager.SENSORSPERUA,
SerialNode.MAXSENSORS + 1);
}
@Override
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
// replace the SerialTrafficController
stcs = new SerialTrafficControlScaffold();
memo = new jmri.jmrix.cmri.CMRISystemConnectionMemo();
memo.setTrafficController(stcs);
l = new SerialSensorManager(memo);
n0 = new SerialNode(stcs);
n1 = new SerialNode(1, SerialNode.SMINI, stcs);
n2 = new SerialNode(2, SerialNode.USIC_SUSIC, stcs);
n2.setNumBitsPerCard(24);
n2.setCardTypeByAddress(0, SerialNode.INPUT_CARD);
n2.setCardTypeByAddress(1, SerialNode.OUTPUT_CARD);
n2.setCardTypeByAddress(3, SerialNode.OUTPUT_CARD);
n2.setCardTypeByAddress(4, SerialNode.INPUT_CARD);
n2.setCardTypeByAddress(2, SerialNode.OUTPUT_CARD);
}
@AfterEach
public void tearDown() {
l.dispose();
if (stcs != null) stcs.terminateThreads();
stcs = null;
memo = null;
JUnitUtil.clearShutDownManager(); // put in place because AbstractMRTrafficController implementing subclass was not terminated properly
JUnitUtil.tearDown();
}
}