Files
JIMRI/java/test/jmri/jmrit/automat/SigletTest.java
T
2026-06-17 14:00:51 +02:00

118 lines
2.9 KiB
Java

package jmri.jmrit.automat;
import jmri.*;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
import org.junit.Assert;
/**
*
* @author Paul Bender Copyright (C) 2017
*/
public class SigletTest {
@Test
public void testBasics() throws JmriException {
Siglet t = new Siglet() {
@Override
public void defineIO() {
defined = true;
setInputs(new NamedBean[]{is1, is2});
}
@Override
public void setOutput() {
output = true;
}
};
Assert.assertNotNull("exists",t);
t.setName("foo");
Assert.assertEquals("foo", t.getName());
Assert.assertFalse(defined);
t.start();
JUnitUtil.waitFor( ()->{ return defined; }, "defineIO run");
Assert.assertTrue(output); // first cycle included
output = false;
is1.setState(Sensor.ACTIVE);
JUnitUtil.waitFor( ()->{ return output; }, "setOutput run again");
t.stop();
}
@Test
public void testNoInpuUnNamed() throws JmriException {
Siglet t = new Siglet() {
@Override
public void defineIO() {
defined = true;
}
@Override
public void setOutput() {
output = true;
}
};
Assert.assertNotNull("exists",t);
Assert.assertFalse(defined);
try {
t.start();
} catch (IllegalArgumentException e) {
jmri.util.JUnitAppender.assertErrorMessage("Siglet start invoked (without a name), but no inputs provided");
}
t.stop();
}
@Test
public void testNoInputNamed() throws JmriException {
Siglet t = new Siglet() {
@Override
public void defineIO() {
defined = true;
}
@Override
public void setOutput() {
output = true;
}
};
Assert.assertNotNull("exists",t);
t.setName("foo");
Assert.assertEquals("foo", t.getName());
Assert.assertFalse(defined);
try {
t.start();
} catch (IllegalArgumentException e) {
jmri.util.JUnitAppender.assertErrorMessage("Siglet start invoked for \"foo\", but no inputs provided");
}
t.stop();
}
Sensor is1;
Sensor is2;
volatile boolean defined;
volatile boolean output;
@BeforeEach
public void setUp() {
JUnitUtil.setUp(); JUnitUtil.initInternalSensorManager();
is1 = InstanceManager.getDefault(SensorManager.class).provideSensor("IS1");
is2 = InstanceManager.getDefault(SensorManager.class).provideSensor("IS2");
defined = false;
output = false;
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
// private static final Logger log = LoggerFactory.getLogger(SigletTest.class);
}