172 lines
5.3 KiB
Java
172 lines
5.3 KiB
Java
package jmri.jmrix.roco.z21;
|
|
|
|
import jmri.Sensor;
|
|
import jmri.SensorManager;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* Tests for the jmri.jmrix.roco.z21.Z21SensorManager class for CanBus sensors.
|
|
*
|
|
* @author Paul Bender Copyright (c) 2018,2019
|
|
*/
|
|
public class Z21CanBusSensorManagerTest extends jmri.managers.AbstractSensorMgrTestBase {
|
|
|
|
private Z21InterfaceScaffold znis;
|
|
private Z21SystemConnectionMemo memo;
|
|
|
|
@Override
|
|
public String getSystemName(int i) {
|
|
return "ZSABCD:" + i;
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
public void testDefaultSystemName() {
|
|
// create
|
|
Sensor t = l.provideSensor("ZSABCD:5");
|
|
// check
|
|
Assert.assertNotNull("real object returned ", t);
|
|
Assert.assertEquals("system name correct ", t,l.getBySystemName(getSystemName(5)));
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
public void testProvideName() {
|
|
// create
|
|
Sensor t = l.provide("ZSABCD:5");
|
|
// check
|
|
Assert.assertTrue("real object returned ", t != null);
|
|
Assert.assertEquals("system name correct ", t,l.getBySystemName(getSystemName(5)));
|
|
}
|
|
|
|
@Test
|
|
public void testDefaultSystemNameLowerCase() {
|
|
// create
|
|
Sensor t = l.provideSensor("ZSabcd:5");
|
|
// check
|
|
Assert.assertNotNull("real object returned ", t);
|
|
Assert.assertEquals("system name same input correct ", t,l.getBySystemName("ZSabcd:5"));
|
|
Assert.assertEquals("system name same value correct ", t,l.getBySystemName(getSystemName(5)));
|
|
}
|
|
|
|
@Test
|
|
public void testDefaultSystemMixedDigit() {
|
|
// create
|
|
Sensor t = l.provideSensor("ZSa1c3:5");
|
|
// check
|
|
Assert.assertNotNull("real object returned ", t);
|
|
Assert.assertEquals("system name same input correct ", t,l.getBySystemName("ZSa1c3:5"));
|
|
Assert.assertEquals("system name same value correct ", t,l.getBySystemName("ZSA1C3:5"));
|
|
}
|
|
|
|
@Test
|
|
public void testDefaultSystemMixedCase() {
|
|
// create
|
|
Sensor t = l.provideSensor("ZSaBcD:5");
|
|
// check
|
|
Assert.assertNotNull("real object returned ", t);
|
|
Assert.assertEquals("system name same input correct",t,l.getBySystemName("ZSaBcD:5"));
|
|
Assert.assertEquals("system name opposite input correct", t, l.getBySystemName("ZSAbCd:5"));
|
|
Assert.assertEquals("system name same all lower", t,l.getBySystemName("ZSabcd:5"));
|
|
Assert.assertEquals("system name same all upper", t,l.getBySystemName("ZSABCD:5"));
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testZ21CanBusCTor() {
|
|
Assert.assertNotNull(l);
|
|
}
|
|
|
|
@Test
|
|
public void testByAddress() {
|
|
// sample sensor object
|
|
Sensor t = l.newSensor("ZSABCD:3", "test");
|
|
|
|
// test get
|
|
Assert.assertTrue(t == l.getByUserName("test"));
|
|
Assert.assertTrue(t == l.getBySystemName("ZSABCD:3"));
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
public void testMisses() {
|
|
// sample turnout object
|
|
Sensor s = l.newSensor("ZSABCD:2", "test");
|
|
Assert.assertNotNull("exists", s);
|
|
|
|
// try to get nonexistant turnouts
|
|
Assert.assertTrue(null == l.getByUserName("foo"));
|
|
Assert.assertTrue(null == l.getBySystemName("bar"));
|
|
}
|
|
|
|
@Test
|
|
public void testZ21CanBusMessages() {
|
|
// send messages for feedback encoder abcd:1
|
|
// notify the Z21 that somebody else changed it...
|
|
byte msg[]={(byte)0x0E,(byte)0x00,(byte)0xC4,(byte)0x00,(byte)0xcd,(byte)0xab,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00};
|
|
Z21Reply reply = new Z21Reply(msg,14);
|
|
znis.sendTestMessage(reply);
|
|
|
|
// see if sensor exists note that the node value is numeric,
|
|
// but in hex format.
|
|
Assert.assertNotNull(l.getBySystemName("ZSabcd:1"));
|
|
Assert.assertNotNull(l.getBySystemName("ZSABCD:1"));
|
|
}
|
|
|
|
@Test
|
|
public void testAsAbstractFactory() {
|
|
jmri.InstanceManager.setSensorManager(l);
|
|
|
|
// ask for a Sensor, and check type
|
|
SensorManager t = jmri.InstanceManager.sensorManagerInstance();
|
|
|
|
Sensor o = t.newSensor("ZSABCD:1", "my name");
|
|
Assert.assertNotNull("received sensor value",o);
|
|
|
|
// make sure loaded into tables
|
|
Assert.assertNotNull("get by system name",t.getBySystemName("ZSABCD:1"));
|
|
Assert.assertNotNull("get by user name",t.getByUserName("my name"));
|
|
}
|
|
|
|
@Test
|
|
public void testGetSystemPrefix() {
|
|
Assert.assertEquals("prefix", "Z", l.getSystemPrefix());
|
|
}
|
|
|
|
@Test
|
|
public void testAllowMultipleAdditions() {
|
|
Assert.assertTrue(l.allowMultipleAdditions("foo"));
|
|
}
|
|
|
|
@Override
|
|
protected int getNumToTest1() {
|
|
return 6; // overriding 9 since outside valid range
|
|
}
|
|
|
|
@Override
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
// prepare an interface
|
|
znis = new Z21InterfaceScaffold();
|
|
memo = new Z21SystemConnectionMemo();
|
|
memo.setTrafficController(znis);
|
|
memo.setRocoZ21CommandStation(new RocoZ21CommandStation());
|
|
// create and register the manager object
|
|
l = new Z21SensorManager(memo);
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
l.dispose();
|
|
znis.terminateThreads();
|
|
znis = null;
|
|
memo = null;
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
}
|