Files
JIMRI/java/test/jmri/jmrix/pi/RaspberryPiSensorTest.java
T
2026-06-17 14:00:51 +02:00

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);
}