231 lines
7.0 KiB
Java
231 lines
7.0 KiB
Java
package jmri.jmrit;
|
|
|
|
import jmri.Programmer;
|
|
import jmri.ProgrammingMode;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
import org.junit.Assert;
|
|
|
|
/**
|
|
* Test the AbstractIdentify class. Since that's an abstract base class, we
|
|
* define a local subclass here for the tests.
|
|
*
|
|
* @author Bob Jacobsen Copyright 2001
|
|
*/
|
|
public class AbstractIdentifyTest {
|
|
|
|
@Test
|
|
public void testFullSequence() {
|
|
// walk through all 8 steps
|
|
AITest a = new AITest(new jmri.ProgrammerScaffold(ProgrammingMode.DIRECTMODE));
|
|
|
|
retval = false;
|
|
invoked = -1;
|
|
ivalue = -1;
|
|
|
|
Assert.assertEquals("before start, running ", false, a.isRunning());
|
|
|
|
// start to state 1, invokes test1
|
|
a.start();
|
|
Assert.assertEquals("start invoked ", 1, invoked);
|
|
Assert.assertEquals("at start running ", true, a.isRunning());
|
|
|
|
// reply 1, state 1 -> 2, invokes test2
|
|
a.programmingOpReply(12, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 1 invoked ", 2, invoked);
|
|
Assert.assertEquals("reply 1 value ", 12, ivalue);
|
|
Assert.assertEquals("reply 1 running ", true, a.isRunning());
|
|
|
|
// reply 2, state 2 -> 3, invokes test3
|
|
a.programmingOpReply(13, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 2 invoked ", 3, invoked);
|
|
Assert.assertEquals("reply 2 value ", 13, ivalue);
|
|
Assert.assertEquals("reply 2 running ", true, a.isRunning());
|
|
|
|
// reply 3, state 3 -> 4, invokes test4
|
|
a.programmingOpReply(14, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 3 invoked ", 4, invoked);
|
|
Assert.assertEquals("reply 3 value ", 14, ivalue);
|
|
Assert.assertEquals("reply 3 running ", true, a.isRunning());
|
|
|
|
// reply 4, state 4 -> 5, invokes test5
|
|
a.programmingOpReply(15, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 4 invoked ", 5, invoked);
|
|
Assert.assertEquals("reply 4 value ", 15, ivalue);
|
|
Assert.assertEquals("reply 4 running ", true, a.isRunning());
|
|
|
|
// reply 5, state 5 -> 6, invokes test6
|
|
a.programmingOpReply(16, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 5 invoked ", 6, invoked);
|
|
Assert.assertEquals("reply 5 value ", 16, ivalue);
|
|
Assert.assertEquals("reply 5 running ", true, a.isRunning());
|
|
|
|
// reply 6, state 6 -> 7, invokes test7
|
|
a.programmingOpReply(17, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 6 invoked ", 7, invoked);
|
|
Assert.assertEquals("reply 6 value ", 17, ivalue);
|
|
Assert.assertEquals("reply 6 running ", true, a.isRunning());
|
|
|
|
// reply 7, state 7 -> 8, invokes test8
|
|
retval = true;
|
|
a.programmingOpReply(18, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 7 invoked ", 8, invoked);
|
|
Assert.assertEquals("reply 7 value ", 18, ivalue);
|
|
Assert.assertEquals("reply 7 running ", false, a.isRunning());
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testShortSequence() {
|
|
// walk through just 4 steps
|
|
AITest a = new AITest(new jmri.ProgrammerScaffold(ProgrammingMode.DIRECTMODE));
|
|
|
|
retval = false;
|
|
invoked = -1;
|
|
ivalue = -1;
|
|
|
|
Assert.assertEquals("before start, running ", false, a.isRunning());
|
|
|
|
// start to state 1, invokes test1
|
|
a.start();
|
|
Assert.assertEquals("start invoked ", 1, invoked);
|
|
Assert.assertEquals("at start running ", true, a.isRunning());
|
|
|
|
// reply 1, state 1 -> 2, invokes test2
|
|
a.programmingOpReply(12, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 1 invoked ", 2, invoked);
|
|
Assert.assertEquals("reply 1 value ", 12, ivalue);
|
|
Assert.assertEquals("reply 1 running ", true, a.isRunning());
|
|
|
|
// reply 2, state 2 -> 3, invokes test3
|
|
a.programmingOpReply(13, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 2 invoked ", 3, invoked);
|
|
Assert.assertEquals("reply 2 value ", 13, ivalue);
|
|
Assert.assertEquals("reply 2 running ", true, a.isRunning());
|
|
|
|
// reply 3, state 3 -> 4, invokes test4
|
|
a.programmingOpReply(14, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 3 invoked ", 4, invoked);
|
|
Assert.assertEquals("reply 3 value ", 14, ivalue);
|
|
Assert.assertEquals("reply 3 running ", true, a.isRunning());
|
|
|
|
// reply 4, state 4 -> 5, invokes test5, which ends
|
|
retval = true;
|
|
a.programmingOpReply(15, jmri.ProgListener.OK);
|
|
Assert.assertEquals("reply 4 invoked ", 5, invoked);
|
|
Assert.assertEquals("reply 4 value ", 15, ivalue);
|
|
Assert.assertEquals("reply 4 running ", false, a.isRunning());
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testOptionalCv() {
|
|
// walk through just 4 steps
|
|
AITest a = new AITest(new jmri.ProgrammerScaffold(ProgrammingMode.DIRECTMODE));
|
|
|
|
a.setOptionalCv(true);
|
|
Assert.assertEquals("Test setOptionalCv(true)", a.isOptionalCv(), true);
|
|
a.setOptionalCv(false);
|
|
Assert.assertEquals("Test setOptionalCv(true)", a.isOptionalCv(), false);
|
|
a.setOptionalCv(true);
|
|
Assert.assertEquals("Test setOptionalCv(true)", a.isOptionalCv(), true);
|
|
|
|
}
|
|
|
|
// internal class for testing
|
|
private class AITest extends AbstractIdentify {
|
|
|
|
AITest(Programmer p) {
|
|
super(p);
|
|
}
|
|
|
|
@Override
|
|
public boolean test1() {
|
|
invoked = 1;
|
|
return retval;
|
|
}
|
|
|
|
@Override
|
|
public boolean test2(int value) {
|
|
invoked = 2;
|
|
ivalue = value;
|
|
return retval;
|
|
}
|
|
|
|
@Override
|
|
public boolean test3(int value) {
|
|
invoked = 3;
|
|
ivalue = value;
|
|
return retval;
|
|
}
|
|
|
|
@Override
|
|
public boolean test4(int value) {
|
|
invoked = 4;
|
|
ivalue = value;
|
|
return retval;
|
|
}
|
|
|
|
@Override
|
|
public boolean test5(int value) {
|
|
invoked = 5;
|
|
ivalue = value;
|
|
return retval;
|
|
}
|
|
|
|
@Override
|
|
public boolean test6(int value) {
|
|
invoked = 6;
|
|
ivalue = value;
|
|
return retval;
|
|
}
|
|
|
|
@Override
|
|
public boolean test7(int value) {
|
|
invoked = 7;
|
|
ivalue = value;
|
|
return retval;
|
|
}
|
|
|
|
@Override
|
|
public boolean test8(int value) {
|
|
invoked = 8;
|
|
ivalue = value;
|
|
return retval;
|
|
}
|
|
|
|
@Override
|
|
public boolean test9(int value) {
|
|
invoked = 8;
|
|
ivalue = value;
|
|
return retval;
|
|
}
|
|
|
|
@Override
|
|
protected void statusUpdate(String s) {
|
|
}
|
|
|
|
@Override
|
|
public void error() {
|
|
}
|
|
|
|
}
|
|
|
|
protected int invoked = -1;
|
|
protected int ivalue = -1;
|
|
protected boolean retval = false;
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
// private static final Logger log = LoggerFactory.getLogger(AbstractIdentifyTest.class);
|
|
}
|