174 lines
4.8 KiB
Java
174 lines
4.8 KiB
Java
package jmri.jmrix.powerline;
|
|
|
|
import jmri.NamedBean;
|
|
import jmri.Sensor;
|
|
import jmri.util.JUnitAppender;
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.util.junit.annotations.*;
|
|
|
|
import java.beans.PropertyVetoException;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* JUnit tests for the SerialSensorManager class.
|
|
*
|
|
* @author Bob Jacobsen Copyright 2003, 2007, 2008 Converted to multiple
|
|
* connection
|
|
* @author kcameron Copyright (C) 2011
|
|
* @author Paul Bender Copyright (C) 2016
|
|
*/
|
|
public class SerialSensorManagerTest extends jmri.managers.AbstractSensorMgrTestBase {
|
|
|
|
@Override
|
|
public String getSystemName(int i) {
|
|
return "PSP" + i;
|
|
}
|
|
|
|
/**
|
|
* Number of sensor to test. Made a separate method so it can be overridden
|
|
* in subclasses that do or don't support various numbers
|
|
*/
|
|
@Override
|
|
protected int getNumToTest1() {
|
|
return 8;
|
|
}
|
|
|
|
@Override
|
|
protected int getNumToTest2() {
|
|
return 9;
|
|
}
|
|
|
|
@Test
|
|
public void testSensorCreationAndRegistration() {
|
|
l.provideSensor("PSA3");
|
|
|
|
l.provideSensor("PSA11");
|
|
|
|
l.provideSensor("PSP8");
|
|
|
|
l.provideSensor("PSP9");
|
|
|
|
l.provideSensor("PSK13");
|
|
|
|
l.provideSensor("PSJ6");
|
|
|
|
l.provideSensor("PSA15");
|
|
|
|
l.provideSensor("PSB5");
|
|
|
|
l.provideSensor("PSH7");
|
|
|
|
l.provideSensor("PSI7");
|
|
|
|
l.provideSensor("PSJ7");
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
public void testProvideName() {
|
|
// create
|
|
Sensor t = l.provide(getSystemName(getNumToTest1()));
|
|
// check
|
|
Assert.assertTrue("real object returned ", t != null);
|
|
Assert.assertTrue("system name correct ", t == l.getBySystemName(getSystemName(getNumToTest1())));
|
|
}
|
|
|
|
@Override
|
|
@Test
|
|
public void testDefaultSystemName() {
|
|
// create
|
|
// powerline systems require a module letter(?) which
|
|
// isn't provided by makeSystemName();
|
|
Sensor t = l.provideSensor(getSystemName(getNumToTest1()));
|
|
// check
|
|
Assert.assertTrue("real object returned ", t != null);
|
|
Assert.assertTrue("system name correct ", t == l.getBySystemName(getSystemName(getNumToTest1())));
|
|
}
|
|
|
|
@Override
|
|
@Disabled("ignoring this test due to the system name format, needs to be properly coded")
|
|
@Test
|
|
@ToDo("modify system name format, then remove this overriden test so that the test in the parent class can run")
|
|
public void testUpperLower() {
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
public void testMoveUserName() {
|
|
Sensor t1 = l.provideSensor(getSystemName(getNumToTest1()));
|
|
Sensor t2 = l.provideSensor(getSystemName(getNumToTest2()));
|
|
t1.setUserName("UserName");
|
|
Assert.assertTrue(t1 == l.getByUserName("UserName"));
|
|
|
|
t2.setUserName("UserName");
|
|
Assert.assertTrue(t2 == l.getByUserName("UserName"));
|
|
|
|
Assert.assertTrue(null == t1.getUserName());
|
|
}
|
|
|
|
@Override
|
|
@Test
|
|
public void testRegisterDuplicateSystemName() throws PropertyVetoException, NoSuchFieldException,
|
|
NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
|
|
String s1 = l.makeSystemName("B1");
|
|
String s2 = l.makeSystemName("B2");
|
|
testRegisterDuplicateSystemName(l, s1, s2);
|
|
}
|
|
|
|
@Override
|
|
@Test
|
|
public void testMakeSystemName() {
|
|
try {
|
|
l.makeSystemName("1");
|
|
Assert.fail("Expected exception not thrown");
|
|
} catch (NamedBean.BadSystemNameException ex) {
|
|
Assert.assertEquals("\"PS1\" is not a recognized format.", ex.getMessage());
|
|
}
|
|
JUnitAppender.assertErrorMessage("Invalid system name for Sensor: \"PS1\" is not a recognized format.");
|
|
String s = l.makeSystemName("B1");
|
|
Assert.assertNotNull(s);
|
|
Assert.assertFalse(s.isEmpty());
|
|
}
|
|
|
|
@Override
|
|
protected String getASystemNameWithNoPrefix(){
|
|
return "B2";
|
|
}
|
|
|
|
@Override
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
// replace the SerialTrafficController to get clean reset
|
|
SerialTrafficController t = new jmri.jmrix.powerline.SerialTrafficController() {
|
|
SerialTrafficController test() {
|
|
return this;
|
|
}
|
|
}.test();
|
|
Assert.assertNotNull("exists", t);
|
|
|
|
SerialSystemConnectionMemo m = new SerialSystemConnectionMemo();
|
|
|
|
m.setSerialAddress(new SerialAddress(m));
|
|
|
|
t.setAdapterMemo(m);
|
|
|
|
l = new SerialSensorManager(t) {
|
|
@Override
|
|
public void reply(SerialReply r) {
|
|
}
|
|
};
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
l.dispose();
|
|
JUnitUtil.clearShutDownManager(); // put in place because AbstractMRTrafficController implementing subclass was not terminated properly
|
|
JUnitUtil.tearDown();
|
|
|
|
}
|
|
|
|
}
|