100 lines
3.3 KiB
Java
100 lines
3.3 KiB
Java
package jmri.jmrix.roco.z21;
|
|
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.jupiter.api.*;
|
|
|
|
import jmri.jmrix.lenz.XNetInterfaceScaffold;
|
|
import jmri.jmrix.lenz.XNetMessage;
|
|
import jmri.jmrix.lenz.XNetReply;
|
|
|
|
/**
|
|
* Z21XNetOpsModeProgrammerTest.java
|
|
*
|
|
* Test for the jmri.jmrix.roco.z21.Z21XNetOpsModeProgrammer class
|
|
*
|
|
* @author Paul Bender
|
|
*/
|
|
public class Z21XNetOpsModeProgrammerTest extends jmri.jmrix.lenz.XNetOpsModeProgrammerTest {
|
|
|
|
@Override
|
|
@Test
|
|
public void testWriteCV() throws jmri.ProgrammerException{
|
|
op.writeCV("29",5,pl);
|
|
XNetMessage m = XNetMessage.getWriteOpsModeCVMsg(0,5,29,5);
|
|
Assert.assertEquals("outbound message sent",1,tc.outbound.size());
|
|
Assert.assertEquals("outbound message",m,tc.outbound.elementAt(0));
|
|
op.message(new XNetReply("01 04 05")); // send "OK" message to the programmer.
|
|
// and now we need to check the status is right
|
|
jmri.util.JUnitUtil.waitFor( ()->{ return lastValue == 5; }, "written value" );
|
|
Assert.assertEquals("status",jmri.ProgListener.OK,lastStatus);
|
|
}
|
|
|
|
@Override
|
|
@Test
|
|
public void testReadCV() throws jmri.ProgrammerException{
|
|
op.readCV("29",pl);
|
|
XNetMessage m = XNetMessage.getVerifyOpsModeCVMsg(0,5,29,0);
|
|
Assert.assertEquals("outbound message sent",1,tc.outbound.size());
|
|
Assert.assertEquals("outbound message",m,tc.outbound.elementAt(0));
|
|
// send a message reply
|
|
op.message(new XNetReply("64 14 00 1C 05 69"));
|
|
jmri.util.JUnitUtil.waitFor(()->{return lastValue != -1;}, "Receive Called by Programmer");
|
|
// and verify the status is right.
|
|
Assert.assertEquals("read value",5,lastValue);
|
|
Assert.assertEquals("status",jmri.ProgListener.OK,lastStatus);
|
|
}
|
|
|
|
@Override
|
|
@Test
|
|
public void testConfirmCV() throws jmri.ProgrammerException{
|
|
op.confirmCV("29",5,pl);
|
|
XNetMessage m = XNetMessage.getVerifyOpsModeCVMsg(0,5,29,5);
|
|
Assert.assertEquals("outbound message sent",1,tc.outbound.size());
|
|
Assert.assertEquals("outbound message",m,tc.outbound.elementAt(0));
|
|
// send a message reply
|
|
op.message(new XNetReply("64 14 00 1C 05 69"));
|
|
jmri.util.JUnitUtil.waitFor(()->{return lastValue != -1;}, "Receive Called by Programmer");
|
|
// and now we need to check the status is right
|
|
Assert.assertEquals("confirm value",5,lastValue);
|
|
Assert.assertEquals("status",jmri.ProgListener.OK,lastStatus);
|
|
}
|
|
|
|
@BeforeEach
|
|
@Override
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
// infrastructure objects
|
|
tc = new XNetInterfaceScaffold(new RocoZ21CommandStation());
|
|
|
|
op = new Z21XNetOpsModeProgrammer(5, tc);
|
|
|
|
pl = new jmri.ProgListener(){
|
|
@Override
|
|
public void programmingOpReply(int value, int status){
|
|
lastValue = value;
|
|
lastStatus = status;
|
|
}
|
|
};
|
|
|
|
lastValue = -1;
|
|
lastStatus = -1;
|
|
programmer = op;
|
|
|
|
}
|
|
|
|
@AfterEach
|
|
@Override
|
|
public void tearDown() {
|
|
tc = null;
|
|
op = null;
|
|
pl = null;
|
|
programmer = null;
|
|
JUnitUtil.clearShutDownManager(); // put in place because AbstractMRTrafficController implementing subclass was not terminated properly
|
|
JUnitUtil.tearDown();
|
|
|
|
}
|
|
|
|
}
|