96 lines
2.8 KiB
Java
96 lines
2.8 KiB
Java
package jmri.progdebugger;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
|
import jmri.ProgListener;
|
|
import jmri.Programmer;
|
|
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* Test the DebugProgrammer class.
|
|
*
|
|
* @author Bob Jacobsen Copyright 2013
|
|
*/
|
|
public class DebugProgrammerTest {
|
|
|
|
private int readValue = -2;
|
|
private boolean replied = false;
|
|
|
|
@Test
|
|
public void testWriteRead() throws jmri.ProgrammerException, InterruptedException {
|
|
Programmer p = new ProgDebugger();
|
|
ProgListener l = new ProgListener() {
|
|
@Override
|
|
public void programmingOpReply(int value, int status) {
|
|
log.debug("callback value={} status={}", value, status);
|
|
replied = true;
|
|
readValue = value;
|
|
}
|
|
};
|
|
p.writeCV("4", 12, l);
|
|
waitReply();
|
|
log.debug("readValue is {}", readValue);
|
|
p.readCV("4", l);
|
|
waitReply();
|
|
log.debug("readValue is {}", readValue);
|
|
assertEquals( 12, readValue, "read back");
|
|
}
|
|
|
|
@Test
|
|
public void testCvLimit() {
|
|
Programmer p = new jmri.progdebugger.ProgDebugger();
|
|
assertTrue( p.getCanRead("256"), "CV limit read");
|
|
assertTrue( p.getCanWrite("256"), "CV limit write");
|
|
assertFalse( p.getCanRead("257"), "CV limit read");
|
|
assertFalse( p.getCanWrite("257"), "CV limit write");
|
|
}
|
|
|
|
@Test
|
|
public void testKnowsWrite() throws jmri.ProgrammerException {
|
|
ProgDebugger p = new ProgDebugger();
|
|
ProgListener l = new ProgListener() {
|
|
@Override
|
|
public void programmingOpReply(int value, int status) {
|
|
log.debug("callback value={} status={}", value, status);
|
|
replied = true;
|
|
readValue = value;
|
|
}
|
|
};
|
|
|
|
assertFalse( p.hasBeenWritten(4), "initially not written");
|
|
p.writeCV("4", 12, l);
|
|
assertTrue( p.hasBeenWritten(4), "after 1st write");
|
|
p.clearHasBeenWritten(4);
|
|
assertFalse( p.hasBeenWritten(4), "now longer written");
|
|
p.writeCV("4", 12, l);
|
|
assertTrue( p.hasBeenWritten(4), "after 2nd write");
|
|
|
|
}
|
|
|
|
// from here down is testing infrastructure
|
|
private void waitReply() {
|
|
JUnitUtil.waitFor(() -> {
|
|
return replied;
|
|
}, "reply received");
|
|
replied = false;
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(DebugProgrammerTest.class);
|
|
|
|
}
|