146 lines
4.8 KiB
Java
146 lines
4.8 KiB
Java
package jmri.jmrix.marklin;
|
|
|
|
import jmri.Sensor;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* Tests for MarklinSensorManager
|
|
* @author Paul Bender Copyright (C) 2017
|
|
* @author Steve Young Copyright (C) 2024
|
|
*/
|
|
public class MarklinSensorManagerTest extends jmri.managers.AbstractSensorMgrTestBase {
|
|
|
|
private MarklinSystemConnectionMemo memo;
|
|
private MarklinTrafficControlScaffold tc;
|
|
|
|
@Override
|
|
public String getSystemName(int i) {
|
|
return ("MS1:0"+i);
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
public void testDefaultSystemName() {
|
|
// create
|
|
Sensor t = l.provideSensor("MS1:0" + getNumToTest1());
|
|
// check
|
|
Assertions.assertNotNull(t);
|
|
Assertions.assertEquals(t, l.getBySystemName(getSystemName(getNumToTest1())), "system name correct");
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
public void testProvideName() {
|
|
// create
|
|
Sensor t = l.provide("" + getSystemName(getNumToTest1()));
|
|
// check
|
|
Assertions.assertNotNull(t);
|
|
Assertions.assertEquals(t, l.getBySystemName(getSystemName(getNumToTest1())), "system name correct");
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
@Disabled("Tested class requires further development")
|
|
public void testMakeSystemNameWithPrefixNotASystemName(){}
|
|
|
|
@Test
|
|
@Override
|
|
@Disabled("Tested class requires further development")
|
|
public void testMakeSystemNameWithNoPrefixNotASystemName(){}
|
|
|
|
@Test
|
|
public void testCreateSystemName(){
|
|
Assertions.assertDoesNotThrow( () -> {
|
|
String name = l.createSystemName("1:1", memo.getSystemPrefix());
|
|
Assertions.assertEquals("MS1:01", name);
|
|
});
|
|
|
|
Exception ex = Assertions.assertThrows(jmri.JmriException.class, () -> l.createSystemName("123", "M"));
|
|
Assertions.assertNotNull(ex);
|
|
}
|
|
|
|
@Test
|
|
public void testReplyS88Command() {
|
|
Sensor sensor = l.provideSensor("MS1:01");
|
|
Assertions.assertNotNull(sensor);
|
|
sensor.setCommandedState(Sensor.INACTIVE);
|
|
|
|
MarklinReply reply = new MarklinReply();
|
|
((MarklinSensorManager)l).reply(reply);
|
|
Assertions.assertEquals(Sensor.INACTIVE, sensor.getState());
|
|
|
|
reply.setCommand(MarklinConstants.S88EVENT);
|
|
reply.setElement(MarklinConstants.CANADDRESSBYTE1, 0); // Module 1 hi
|
|
reply.setElement(MarklinConstants.CANADDRESSBYTE2, 1); // Module 1 lo
|
|
reply.setElement(MarklinConstants.CANADDRESSBYTE3, 0); // Contact 1 hi
|
|
reply.setElement(MarklinConstants.CANADDRESSBYTE4, 1); // Contact 1 lo
|
|
reply.setElement(9, 0x00); // Sensor ACTIVE
|
|
reply.setElement(10, 0x01); // Sensor ACTIVE
|
|
|
|
((MarklinSensorManager)l).reply(reply);
|
|
Assertions.assertEquals(Sensor.ACTIVE, sensor.getState());
|
|
|
|
reply.setElement(9, 0x01); // Sensor INACTIVE
|
|
reply.setElement(10, 0x00); // SENSOR INACTIVE
|
|
((MarklinSensorManager)l).reply(reply);
|
|
Assertions.assertEquals(Sensor.INACTIVE, sensor.getState());
|
|
|
|
JUnitUtil.waitFor(() -> tc.getSentMessages().size()==1, "Sensor booard Poll message sent");
|
|
Assertions.assertEquals(MarklinMessage.sensorPollMessage(1), tc.getLastMessageSent());
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testReplyFeeCommand() {
|
|
Sensor sensor = l.provideSensor("MS1:01");
|
|
Sensor sensor2 = l.provideSensor("MS1:16");
|
|
Assertions.assertNotNull(sensor);
|
|
Assertions.assertNotNull(sensor2);
|
|
sensor.setCommandedState(Sensor.INACTIVE);
|
|
sensor2.setCommandedState(Sensor.ACTIVE);
|
|
|
|
MarklinReply reply = new MarklinReply();
|
|
reply.setCommand(MarklinConstants.FEECOMMANDSTART);
|
|
reply.setElement(9, 0x01); // S88 Module Number
|
|
reply.setElement(10, 0b00000000); // status hi
|
|
reply.setElement(11, 0b00000001); // status lo
|
|
|
|
((MarklinSensorManager)l).reply(reply);
|
|
Assertions.assertEquals(Sensor.ACTIVE, sensor.getState());
|
|
Assertions.assertEquals(Sensor.INACTIVE, sensor2.getState());
|
|
|
|
reply.setElement(10, 0b10000000); // status hi
|
|
reply.setElement(11, 0b00000000); // status lo
|
|
((MarklinSensorManager)l).reply(reply);
|
|
Assertions.assertEquals(Sensor.INACTIVE, sensor.getState());
|
|
Assertions.assertEquals(Sensor.ACTIVE, sensor2.getState());
|
|
}
|
|
|
|
@BeforeEach
|
|
@Override
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
tc = new MarklinTrafficControlScaffold();
|
|
memo = new MarklinSystemConnectionMemo(tc);
|
|
l = new MarklinSensorManager(memo);
|
|
Assertions.assertNotNull(l, "exists");
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
Assertions.assertNotNull(memo);
|
|
tc.dispose();
|
|
memo.dispose();
|
|
memo = null;
|
|
tc = null;
|
|
l = null;
|
|
JUnitUtil.tearDown();
|
|
|
|
}
|
|
|
|
// private static final Logger log = LoggerFactory.getLogger(MarklinSensorManagerTest.class);
|
|
|
|
}
|