100 lines
3.1 KiB
Java
100 lines
3.1 KiB
Java
package jmri.jmrix.pi;
|
|
|
|
import jmri.JmriException;
|
|
import jmri.Sensor;
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.util.junit.annotations.*;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
*
|
|
* @author Paul Bender Copyright (C) 2017
|
|
*/
|
|
public class RaspberryPiSensorTest extends jmri.implementation.AbstractSensorTestBase {
|
|
|
|
@Override
|
|
public int numListeners() {return 0;}
|
|
|
|
@Override
|
|
public void checkActiveMsgSent() {}
|
|
|
|
@Override
|
|
public void checkInactiveMsgSent() {}
|
|
|
|
@Override
|
|
public void checkStatusRequestMsgSent() {}
|
|
|
|
@Override
|
|
@Test
|
|
public void testCreate() {
|
|
// RaspberryPi Sensors always have a known state
|
|
Assert.assertEquals("initial state 1", Sensor.ACTIVE, t.getState());
|
|
Assert.assertEquals("initial state 2", "Active", t.describeState(t.getState()));
|
|
}
|
|
|
|
@Override
|
|
@Test
|
|
public void testDebounce() throws JmriException {
|
|
t.setSensorDebounceGoingActiveTimer(81L);
|
|
Assert.assertEquals("timer", 81L, t.getSensorDebounceGoingActiveTimer());
|
|
|
|
t.setSensorDebounceGoingInActiveTimer(31L);
|
|
Assert.assertEquals("timer", 31L, t.getSensorDebounceGoingInActiveTimer());
|
|
|
|
Assert.assertEquals("initial state", Sensor.ACTIVE, t.getState());
|
|
t.setOwnState(Sensor.INACTIVE); // next is considered to run immediately, before debounce
|
|
Assert.assertEquals("post-set state", Sensor.ACTIVE, t.getState());
|
|
jmri.util.JUnitUtil.waitFor(()->{return t.getState() == t.getRawState();}, "raw state = state");
|
|
Assert.assertEquals("2nd state", Sensor.INACTIVE, t.getState());
|
|
|
|
t.setOwnState(Sensor.ACTIVE); // next is considered to run immediately, before debounce
|
|
Assert.assertEquals("post-set state", Sensor.INACTIVE, t.getState());
|
|
jmri.util.JUnitUtil.waitFor(()->{return t.getState() == t.getRawState();}, "raw state = state");
|
|
Assert.assertEquals("Final state", Sensor.ACTIVE, t.getState());
|
|
}
|
|
|
|
@Override
|
|
@Test
|
|
@Disabled("Base class test does not function correctly for RaspberryPi Sensors")
|
|
@ToDo("provide mock raspberry pi implementation so code can be tested using parent class test")
|
|
public void testAddListener() throws JmriException {
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
public void testGetPullResistance(){
|
|
Assert.assertEquals("default pull state", jmri.Sensor.PullResistance.PULL_DOWN, t.getPullResistance());
|
|
}
|
|
|
|
private PiGpioProviderScaffold myProvider = null;
|
|
|
|
@Override
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.resetInstanceManager();
|
|
myProvider = new PiGpioProviderScaffold();
|
|
|
|
t = new RaspberryPiSensor("PS4");
|
|
}
|
|
|
|
@Override
|
|
@AfterEach
|
|
public void tearDown() {
|
|
if (t != null) {
|
|
t.dispose();
|
|
}
|
|
Assertions.assertNotNull(myProvider);
|
|
myProvider.shutdown();
|
|
|
|
JUnitUtil.clearShutDownManager();
|
|
JUnitUtil.resetInstanceManager();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
// private static final Logger log = LoggerFactory.getLogger(RaspberryPiSensorTest.class);
|
|
|
|
}
|