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

148 lines
4.5 KiB
Java

package jmri.jmrix.nce;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import jmri.JmriException;
import jmri.ProgrammingMode;
import org.junit.jupiter.api.*;
/**
* JUnit tests for the NceProgrammer class
* <p>
*
* @author Bob Jacobsen
*/
public class NceProgrammerTest extends jmri.jmrix.AbstractProgrammerTest {
@Test
@Override
public void testDefault() {
assertEquals( ProgrammingMode.PAGEMODE, programmer.getMode(),
"Check Default");
}
@Override
@Test
public void testDefaultViaBestMode() {
assertEquals( ProgrammingMode.PAGEMODE, ((NceProgrammer) programmer).getBestMode(),
"Check Default");
}
@Override
@Test
public void testGetCanWriteAddress() {
assertFalse( programmer.getCanWrite("1234"), "can write address");
}
@Test
public void testWriteCvSequenceAscii() throws JmriException {
// and do the write
p.writeCV("10", 20, l);
// correct message sent
assertEquals( 1, tc.outbound.size(), "mode message sent");
assertEquals( "P010 020",
((tc.outbound.elementAt(0))).toString(),
"write message contents");
// reply from programmer arrives
NceReply r = new NceReply(tc);
tc.sendTestReply(r, p);
assertEquals( 20, l.getRcvdValue(), " got data value back");
assertEquals( 1, l.getRcvdInvoked(), " listener invoked");
}
@Test
public void testWriteRegisterSequenceAscii() throws JmriException {
// set register mode
p.setMode(ProgrammingMode.REGISTERMODE);
// and do the write
p.writeCV("3", 12, l);
// check "prog mode" message sent
assertEquals( 1, tc.outbound.size(), "write message sent");
assertEquals( "S3 012",
((tc.outbound.elementAt(0))).toString(),
"write message contents");
// reply from programmer arrives
NceReply r = new NceReply(tc);
tc.sendTestReply(r, p);
assertEquals( 12, l.getRcvdValue(), " got data value back");
assertEquals( 1, l.getRcvdInvoked(), " listener invoked");
}
@Test
public void testReadCvSequenceAscii() throws JmriException {
// and do the read
p.readCV("10", l);
// check "read command" message sent
assertEquals( 1, tc.outbound.size(), "read message sent");
assertEquals( "R010",
((tc.outbound.elementAt(0))).toString(),
"read message contents");
// reply from programmer arrives
NceReply r = new NceReply(tc);
r.setElement(0, '0');
r.setElement(1, '2');
r.setElement(2, '0');
tc.sendTestReply(r, p);
assertEquals( 1, l.getRcvdInvoked(), " programmer listener invoked");
assertEquals( 20, l.getRcvdValue(), " value read");
}
@Test
public void testReadRegisterSequenceAscii() throws JmriException {
// set register mode
p.setMode(ProgrammingMode.REGISTERMODE);
// and do the read
p.readCV("3", l);
// check "read command" message sent
assertEquals( 1, tc.outbound.size(), "read message sent");
assertEquals( "V3",
((tc.outbound.elementAt(0))).toString(),
"read message contents");
// reply from programmer arrives
NceReply r = new NceReply(tc);
r.setElement(0, '0');
r.setElement(1, '2');
r.setElement(2, '0');
tc.sendTestReply(r, p);
assertEquals( 1, l.getRcvdInvoked(), " programmer listener invoked");
assertEquals( 20, l.getRcvdValue(), " value read");
}
// infrastructure objects
private NceInterfaceScaffold tc;
private NceProgrammer p = null;
private jmri.ProgListenerScaffold l;
@Override
@BeforeEach
public void setUp() {
jmri.util.JUnitUtil.setUp();
// infrastructure objects
l = new jmri.ProgListenerScaffold();
tc = new NceInterfaceScaffold();
tc.setCommandOptions(NceTrafficController.OPTION_2004);
p = new NceProgrammer(tc);
programmer = p;
}
@Override
@AfterEach
public void tearDown() {
tc.terminateThreads();
tc = null;
p = null;
programmer = null;
jmri.util.JUnitUtil.tearDown();
}
// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(NceProgrammerTest.class);
}