Files
2026-06-17 14:00:51 +02:00

167 lines
5.7 KiB
Java

package jmri.jmrix.srcp;
import jmri.util.JUnitUtil;
import org.junit.Assert;
import org.junit.jupiter.api.*;
/**
* SRCPMessageTest.java
* <p>
* Test for the jmri.jmrix.srcp.SRCPMessage class
*
* @author Bob Jacobsen
* @author Paul Bender Copyright (C) 2017
*/
public class SRCPMessageTest extends jmri.jmrix.AbstractMessageTestBase {
private SRCPMessage msg = null;
// Test the string constructor.
@Test
public void testStringCtor() {
String s = "100 OK REASON GOES HERE\n\r";
msg = new SRCPMessage(s);
Assert.assertNotNull(m);
Assert.assertTrue("String Constructor Correct", s.equals(msg.toString()));
}
// check validation methods.
@Test
public void checkIsKillMain() {
SRCPMessage m1 = new SRCPMessage("SET 1 POWER ON\n");
SRCPMessage m2 = new SRCPMessage("SET 1 POWER OFF\n");
SRCPMessage m3 = new SRCPMessage("SET 1 PWOER ON\n");
Assert.assertFalse("POWER ON", m1.isKillMain());
Assert.assertTrue("POWER OFF", m2.isKillMain());
Assert.assertFalse("Bad POWER message", m3.isKillMain());
}
@Test
public void checkIsEnableMain() {
SRCPMessage m1 = new SRCPMessage("SET 1 POWER ON\n");
SRCPMessage m2 = new SRCPMessage("SET 1 POWER OFF\n");
SRCPMessage m3 = new SRCPMessage("SET 1 PWOER ON\n");
Assert.assertTrue("POWER ON", m1.isEnableMain());
Assert.assertFalse("POWER OFF", m2.isEnableMain());
Assert.assertFalse("Bad POWER message", m3.isEnableMain());
}
//Test canned message formats
@Test
public void checkGetEnableMain() {
msg = SRCPMessage.getEnableMain();
Assert.assertEquals("Enable Main Message", new SRCPMessage("SET 1 POWER ON\n"), msg);
Assert.assertFalse("not binary", msg.isBinary());
}
@Test
public void checkGetKillMain() {
msg = SRCPMessage.getKillMain();
Assert.assertEquals("Kill Main Message", new SRCPMessage("SET 1 POWER OFF\n"), msg);
Assert.assertFalse("not binary", msg.isBinary());
}
@Test
public void checkGetProgMode() {
Assert.assertEquals("Init Prog Mode Message", new SRCPMessage("INIT 2 SM NMRA\n"), SRCPMessage.getProgMode(2));
}
@Test
public void checkGetExitProgMode() {
Assert.assertEquals("Exit Prog Mode Message", new SRCPMessage("TERM 2 SM\n"), SRCPMessage.getExitProgMode(2));
}
@Test
public void checkGetReadDirectCV() {
msg = SRCPMessage.getReadDirectCV(2, 19);
Assert.assertEquals("Read CV in Direct Mode Message", new SRCPMessage("GET 2 SM 0 CV 19\n"), msg);
Assert.assertEquals("Timeout", 180000, msg.getTimeout());
}
@Test
public void checkGetConfirmDirectCV() {
msg = SRCPMessage.getConfirmDirectCV(2, 19, 20);
Assert.assertEquals("Confirm CV in Direct Mode Message", new SRCPMessage("VERIFY 2 SM 0 CV 19 20\n"), msg);
Assert.assertEquals("Timeout", 180000, msg.getTimeout());
}
@Test
public void checkGetWriteDirectCV() {
msg = SRCPMessage.getWriteDirectCV(2, 19, 20);
Assert.assertEquals("Write CV in Direct Mode Message", new SRCPMessage("SET 2 SM 0 CV 19 20\n"), msg);
Assert.assertEquals("Timeout", 180000, msg.getTimeout());
}
@Test
public void checkGetReadBitDirectCV() {
msg = SRCPMessage.getReadDirectBitCV(2, 19, 1);
Assert.assertEquals("Read CV Bit in Direct Mode Message", new SRCPMessage("GET 2 SM 0 CVBIT 19 1\n"), msg);
Assert.assertEquals("Timeout", 180000, msg.getTimeout());
}
@Test
public void checkGetConfirmBitDirectCV() {
msg = SRCPMessage.getConfirmDirectBitCV(2, 19, 1, 0);
Assert.assertEquals("Confirm CV in Direct Mode Message", new SRCPMessage("VERIFY 2 SM 0 CVBIT 19 1 0\n"), msg);
Assert.assertEquals("Timeout", 180000, msg.getTimeout());
}
@Test
public void checkGetWriteBitDirectCV() {
msg = SRCPMessage.getWriteDirectBitCV(2, 19, 1, 0);
Assert.assertEquals("Write CV in Direct Mode Message", new SRCPMessage("SET 2 SM 0 CVBIT 19 1 0\n"), msg);
Assert.assertEquals("Timeout", 180000, msg.getTimeout());
}
@Test
public void checkGetReadRegister() {
msg = SRCPMessage.getReadRegister(2, 2);
Assert.assertEquals("Read Register Message", new SRCPMessage("GET 2 SM 0 REG 2\n"), msg);
Assert.assertEquals("Timeout", 180000, msg.getTimeout());
}
@Test
public void checkGetReadRegisterIlegalArgument() {
Assert.assertThrows(IllegalArgumentException.class, () -> SRCPMessage.getReadRegister(2, 10));
}
@Test
public void checkGetConfirmRegister() {
msg = SRCPMessage.getConfirmRegister(2, 2, 5);
Assert.assertEquals("Confirm Register Message", new SRCPMessage("VERIFY 2 SM 0 REG 2 5\n"), msg);
Assert.assertEquals("Timeout", 180000, msg.getTimeout());
}
@Test
public void checkGetConfirmRegisterIlegalArgument() {
Assert.assertThrows(IllegalArgumentException.class, () -> SRCPMessage.getConfirmRegister(2, 10, 5));
}
@Test
public void checkGetWriteRegister() {
msg = SRCPMessage.getWriteRegister(2, 2, 5);
Assert.assertEquals("Write Register Message", new SRCPMessage("SET 2 SM 0 REG 2 5\n"), msg);
Assert.assertEquals("Timeout", 180000, msg.getTimeout());
}
@Test
public void checkGetWriteRegisterIlegalArgument() {
Assert.assertThrows(IllegalArgumentException.class, () -> SRCPMessage.getWriteRegister(2, 10, 5));
}
@BeforeEach
@Override
public void setUp() {
JUnitUtil.setUp();
m = msg = new SRCPMessage();
}
@Override
@AfterEach
public void tearDown() {
m = msg = null;
JUnitUtil.tearDown();
}
}