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

1565 lines
72 KiB
Java

package jmri.jmrix.lenz;
import jmri.util.JUnitUtil;
import org.junit.Assert;
import org.junit.jupiter.api.*;
/**
* Tests for the jmri.jmrix.lenz.XNetMessage class
*
* @author Bob Jacobsen
*/
public class XNetMessageTest extends jmri.jmrix.AbstractMessageTestBase {
protected XNetMessage msg = null;
@Test
@Override
public void testCtor() {
Assert.assertEquals("length", 3, msg.getNumDataElements());
//domain checks.
try {
msg = new XNetMessage(21);
} catch(IllegalArgumentException iae) {
// the IllegalArgumentException is expected here.
// the error below is generated by XNetMessage.
jmri.util.JUnitAppender.assertErrorMessage("Invalid length in ctor: 21");
}
try {
msg = new XNetMessage(-21);
} catch(IllegalArgumentException iae){
// the IllegalArgumentException is expected here.
// the error below is generated by AbstractMRMessage.
jmri.util.JUnitAppender.assertErrorMessage("invalid length -21 in call to ctor");
}
}
// check opcode inclusion in message
@Test
public void testOpCode() {
msg = new XNetMessage(5);
msg.setOpCode(4);
Assert.assertEquals("readback op code", 4, msg.getOpCode());
Assert.assertEquals("stored op code", 0x43, msg.getElement(0));
}
// Test the string constructor.
@Test
public void testStringCtor() {
msg = new XNetMessage("12 34 AB 3 19 6 B B1");
Assert.assertEquals("length", 8, msg.getNumDataElements());
Assert.assertEquals("0th byte", 0x12, msg.getElement(0) & 0xFF);
Assert.assertEquals("1st byte", 0x34, msg.getElement(1) & 0xFF);
Assert.assertEquals("2nd byte", 0xAB, msg.getElement(2) & 0xFF);
Assert.assertEquals("3rd byte", 0x03, msg.getElement(3) & 0xFF);
Assert.assertEquals("4th byte", 0x19, msg.getElement(4) & 0xFF);
Assert.assertEquals("5th byte", 0x06, msg.getElement(5) & 0xFF);
Assert.assertEquals("6th byte", 0x0B, msg.getElement(6) & 0xFF);
Assert.assertEquals("7th byte", 0xB1, msg.getElement(7) & 0xFF);
}
@Test
public void testStringCtorEmptyString() {
msg = new XNetMessage("");
Assert.assertEquals("length", 0, msg.getNumDataElements());
Assert.assertEquals("empty reply", "", msg.toString());
}
@Test
public void testCtorXNetReply(){
XNetReply x = new XNetReply("12 34 AB 03 19 06 0B B1");
msg = new XNetMessage(x);
Assert.assertEquals("length", x.getNumDataElements(), msg.getNumDataElements());
Assert.assertEquals("0th byte", x.getElement(0)& 0xFF, msg.getElement(0)& 0xFF);
Assert.assertEquals("1st byte", x.getElement(1)& 0xFF, msg.getElement(1)& 0xFF);
Assert.assertEquals("2nd byte", x.getElement(2)& 0xFF, msg.getElement(2)& 0xFF);
Assert.assertEquals("3rd byte", x.getElement(3)& 0xFF, msg.getElement(3)& 0xFF);
Assert.assertEquals("4th byte", x.getElement(4)& 0xFF, msg.getElement(4)& 0xFF);
Assert.assertEquals("5th byte", x.getElement(5)& 0xFF, msg.getElement(5)& 0xFF);
Assert.assertEquals("6th byte", x.getElement(6)& 0xFF, msg.getElement(6)& 0xFF);
Assert.assertEquals("7th byte", x.getElement(7)& 0xFF, msg.getElement(7)& 0xFF);
}
// test setting/getting the opcode
@Test
public void testSetAndGetOpCode(){
msg = new XNetMessage("12 34 56");
Assert.assertEquals(0x1,msg.getOpCode());
msg.setOpCode(0xA);
Assert.assertEquals(0xA,msg.getOpCode());
//domain checks.
msg.setOpCode(21);
jmri.util.JUnitAppender.assertErrorMessage("Opcode invalid: 21");
msg.setOpCode(-21);
jmri.util.JUnitAppender.assertErrorMessage("Opcode invalid: -21");
}
// test setting/getting the opcode
@Test
public void testGetOpCodeHex(){
msg = new XNetMessage("12 34 56");
Assert.assertEquals("0x1",msg.getOpCodeHex());
msg.setOpCode(0xA);
Assert.assertEquals("0xa",msg.getOpCodeHex());
}
// check parity operations
@Test
public void testParity() {
msg = new XNetMessage(3);
msg.setElement(0, 0x21);
msg.setElement(1, 0x21);
msg.setParity();
Assert.assertEquals("parity set test 1", 0, msg.getElement(2));
Assert.assertTrue("parity check test 1", msg.checkParity());
msg = new XNetMessage(3);
msg.setElement(0, 0x21);
msg.setElement(1, ~0x21);
msg.setParity();
Assert.assertEquals("parity set test 2", 0xFF, msg.getElement(2));
Assert.assertTrue("parity check test 2", msg.checkParity());
msg = new XNetMessage(3);
msg.setElement(0, 0x18);
msg.setElement(1, 0x36);
msg.setParity();
Assert.assertEquals("parity set test 3", 0x2E, msg.getElement(2));
Assert.assertTrue("parity check test 3", msg.checkParity());
msg = new XNetMessage(3);
msg.setElement(0, 0x87);
msg.setElement(1, 0x31);
msg.setParity();
Assert.assertEquals("parity set test 4", 0xB6, msg.getElement(2));
Assert.assertTrue("parity check test 4", msg.checkParity());
msg = new XNetMessage(3);
msg.setElement(0, 0x18);
msg.setElement(1, 0x36);
msg.setElement(2, 0x0e);
Assert.assertFalse("parity check test 5", msg.checkParity());
msg = new XNetMessage(3);
msg.setElement(0, 0x18);
msg.setElement(1, 0x36);
msg.setElement(2, 0x8e);
Assert.assertFalse("parity check test 6", msg.checkParity());
}
@Test
public void testGetElementBCD(){
msg = new XNetMessage("12 34 56");
Assert.assertEquals("BCD value",Integer.valueOf(12),msg.getElementBCD(0));
Assert.assertEquals("BCD value",Integer.valueOf(34),msg.getElementBCD(1));
Assert.assertEquals("BCD value",Integer.valueOf(56),msg.getElementBCD(2));
}
@Test
public void testLength(){
msg = new XNetMessage("12 34 56");
Assert.assertEquals("length",3,msg.length());
msg = new XNetMessage("12 34 56 78");
Assert.assertEquals("length",4,msg.length());
}
@Test
public void testSetXNetMessageRetries(){
msg = new XNetMessage("12 34 56");
Assert.assertEquals("Retries ",5,msg.getRetries());
XNetMessage.setXNetMessageRetries(0);
// the default number of retires should be 0, so create a message to see.
msg = new XNetMessage("56 34 12");
Assert.assertEquals("Retries",0,msg.getRetries());
}
@Test
public void testSetXNetMessageTimeout(){
msg = new XNetMessage("12 34 56");
Assert.assertEquals("Timeout",5000,msg.getTimeout());
XNetMessage.setXNetMessageTimeout(0);
// the default timeout should be 0, so create a message to see.
msg = new XNetMessage("56 34 12");
Assert.assertEquals("Timeout",0,msg.getTimeout());
}
@Test
public void testGetAndSetBroadcastReply(){
msg = new XNetMessage("12 34 56");
Assert.assertTrue(msg.replyExpected()); // reply expected returns
// !broadcastReply, which defaults
// to false.
msg.setBroadcastReply();
Assert.assertFalse(msg.replyExpected());
}
@Test
public void testEquality(){
msg = new XNetMessage("11 34 45");
XNetMessage n = new XNetMessage("11 34 45");
XNetMessage o = new XNetMessage(3);
o.setElement(0,0x11);
o.setElement(1,0x34);
o.setElement(2,0x45);
Assert.assertEquals("messages equal",msg,n);
Assert.assertEquals("messages equal",msg,o);
}
// test canned messages.
@Test
public void testGetNMRAXNetMsg() {
msg = XNetMessage.getNMRAXNetMsg(jmri.NmraPacket.opsCvWriteByte(2,false,29,32));
Assert.assertEquals(0xE5,msg.getElement(0));
Assert.assertEquals(0x30,msg.getElement(1));
Assert.assertEquals(0x02,msg.getElement(2));
Assert.assertEquals(0xEC,msg.getElement(3));
Assert.assertEquals(0x1C,msg.getElement(4));
Assert.assertEquals(0x20,msg.getElement(5));
Assert.assertEquals(0x07,msg.getElement(6));
}
@Test
public void testToMonitorStringNMRAXNetMsg(){
msg = XNetMessage.getNMRAXNetMsg(jmri.NmraPacket.opsCvWriteByte(2,false,29,32));
Assert.assertEquals("Monitor String","E5 30 02 EC 1C 20 07",msg.toMonitorString());
}
@Test
public void testGetTurnoutCommandMsg() {
msg = XNetMessage.getTurnoutCommandMsg(5,false,true,true);
Assert.assertEquals(0x52,msg.getElement(0));
Assert.assertEquals(0x01,msg.getElement(1));
Assert.assertEquals(0x89,msg.getElement(2));
Assert.assertEquals(0xDA,msg.getElement(3));
msg = XNetMessage.getTurnoutCommandMsg(5,true,false,true);
Assert.assertEquals(0x52,msg.getElement(0));
Assert.assertEquals(0x01,msg.getElement(1));
Assert.assertEquals(0x88,msg.getElement(2));
Assert.assertEquals(0xDB,msg.getElement(3));
msg = XNetMessage.getTurnoutCommandMsg(5,false,true,false);
Assert.assertEquals(0x52,msg.getElement(0));
Assert.assertEquals(0x01,msg.getElement(1));
Assert.assertEquals(0x81,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
msg = XNetMessage.getTurnoutCommandMsg(5,true,false,false);
Assert.assertEquals(0x52,msg.getElement(0));
Assert.assertEquals(0x01,msg.getElement(1));
Assert.assertEquals(0x80,msg.getElement(2));
Assert.assertEquals(0xD3,msg.getElement(3));
// both thrown and close generates an error message.
msg = XNetMessage.getTurnoutCommandMsg(5,true,true,false);
jmri.util.JUnitAppender.assertErrorMessage("XpressNet turnout logic can't handle both THROWN and CLOSED yet");
}
@Test
public void testToMonitorStringTurnoutCmdMsg(){
msg = XNetMessage.getTurnoutCommandMsg(5,false,true,true);
Assert.assertEquals("Monitor String","Accessory Decoder Operations Request: Turnout Address 5(Base Address 1,Sub Address 0) Turn Output 1 On.",msg.toMonitorString());
msg = XNetMessage.getTurnoutCommandMsg(5,true,false,true);
Assert.assertEquals("Monitor String","Accessory Decoder Operations Request: Turnout Address 5(Base Address 1,Sub Address 0) Turn Output 0 On.",msg.toMonitorString());
msg = XNetMessage.getTurnoutCommandMsg(5,false,true,false);
Assert.assertEquals("Monitor String","Accessory Decoder Operations Request: Turnout Address 5(Base Address 1,Sub Address 0) Turn Output 1 Off.",msg.toMonitorString());
msg = XNetMessage.getTurnoutCommandMsg(5,true,false,false);
Assert.assertEquals("Monitor String","Accessory Decoder Operations Request: Turnout Address 5(Base Address 1,Sub Address 0) Turn Output 0 Off.",msg.toMonitorString());
}
@Test
public void testGetFeedbackRequestMsg() {
msg = XNetMessage.getFeedbackRequestMsg(5,true);
Assert.assertEquals(0x42,msg.getElement(0));
Assert.assertEquals(0x01,msg.getElement(1));
Assert.assertEquals(0x80,msg.getElement(2));
Assert.assertEquals(0xC3,msg.getElement(3));
msg = XNetMessage.getFeedbackRequestMsg(5,false);
Assert.assertEquals(0x42,msg.getElement(0));
Assert.assertEquals(0x01,msg.getElement(1));
Assert.assertEquals(0x81,msg.getElement(2));
Assert.assertEquals(0xC2,msg.getElement(3));
}
@Test
public void testToMonitorStringFeedbackRequestMsg(){
msg = XNetMessage.getFeedbackRequestMsg(5,true);
Assert.assertEquals("Monitor String","Accessory Decoder/Feedback Encoder Status Request: Base Address 1,Lower Nibble.",msg.toMonitorString());
msg = XNetMessage.getFeedbackRequestMsg(5,false);
Assert.assertEquals("Monitor String","Accessory Decoder/Feedback Encoder Status Request: Base Address 1,Upper Nibble.",msg.toMonitorString());
}
@Test
public void testGetServiceModeResultMsg(){
msg = XNetMessage.getServiceModeResultsMsg();
Assert.assertEquals(0x21,msg.getElement(0));
Assert.assertEquals(0x10,msg.getElement(1));
Assert.assertEquals(0x31,msg.getElement(2));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
}
@Test
public void testToMonitorStringServiceModeResultMsg(){
msg = XNetMessage.getServiceModeResultsMsg();
Assert.assertEquals("Monitor String","REQUEST: Service Mode Result",msg.toMonitorString());
}
@Test
public void testGetExitProgModeMsg(){
msg = XNetMessage.getExitProgModeMsg();
Assert.assertEquals(0x21,msg.getElement(0));
Assert.assertEquals(0x81,msg.getElement(1));
Assert.assertEquals(0xA0,msg.getElement(2));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
}
@Test
public void testToMonitorStringExitProgModeMsg(){
msg = XNetMessage.getExitProgModeMsg();
Assert.assertEquals("Monitor String","REQUEST: Normal Operations Resumed",msg.toMonitorString());
}
@Test
public void testGetReadPagedCVMsg(){
msg = XNetMessage.getReadPagedCVMsg(29);
Assert.assertEquals(0x22,msg.getElement(0));
Assert.assertEquals(0x14,msg.getElement(1));
Assert.assertEquals(0x1D,msg.getElement(2));
Assert.assertEquals(0x2B,msg.getElement(3));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
}
@Test
public void testToMonitorStringReadPagedCVMsg(){
msg = XNetMessage.getReadPagedCVMsg(29);
Assert.assertEquals("Monitor String","Service Mode Request: Read CV 29 in Paged Mode",msg.toMonitorString());
}
@Test
public void testGetReadDirectCVMsg(){
msg = XNetMessage.getReadDirectCVMsg(29);
Assert.assertEquals(0x22,msg.getElement(0));
Assert.assertEquals(0x15,msg.getElement(1));
Assert.assertEquals(0x1D,msg.getElement(2));
Assert.assertEquals(0x2A,msg.getElement(3));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
// CV > 256, version 3.6+ command.
msg = XNetMessage.getReadDirectCVMsg(300);
Assert.assertEquals(0x22,msg.getElement(0));
Assert.assertEquals(0x19,msg.getElement(1));
Assert.assertEquals(0x2C,msg.getElement(2));
Assert.assertEquals(0x17,msg.getElement(3));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
// CV = 1024, version 3.6+ command, a special case.
// (sends 0 for CV value).
msg = XNetMessage.getReadDirectCVMsg(1024);
Assert.assertEquals(0x22,msg.getElement(0));
Assert.assertEquals(0x18,msg.getElement(1));
Assert.assertEquals(0x00,msg.getElement(2));
Assert.assertEquals(0x3A,msg.getElement(3));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
}
@Test
public void testToMonitorStringReadDirectCVMsg(){
msg = XNetMessage.getReadDirectCVMsg(29);
Assert.assertEquals("Monitor String","Service Mode Request: Read CV 29 in Direct Mode",msg.toMonitorString());
msg = XNetMessage.getReadDirectCVMsg(300);
Assert.assertEquals("Monitor String","Service Mode Request (V3.6): Read CV 300 in Direct Mode",msg.toMonitorString());
msg = XNetMessage.getReadDirectCVMsg(600);
Assert.assertEquals("Monitor String","Service Mode Request (V3.6): Read CV 600 in Direct Mode",msg.toMonitorString());
msg = XNetMessage.getReadDirectCVMsg(900);
Assert.assertEquals("Monitor String","Service Mode Request (V3.6): Read CV 900 in Direct Mode",msg.toMonitorString());
msg = XNetMessage.getReadDirectCVMsg(1024);
Assert.assertEquals("Monitor String","Service Mode Request (V3.6): Read CV 1024 in Direct Mode",msg.toMonitorString());
}
@Test
public void testGetWritePagedCVMsg(){
msg = XNetMessage.getWritePagedCVMsg(29,5);
Assert.assertEquals(0x23,msg.getElement(0));
Assert.assertEquals(0x17,msg.getElement(1));
Assert.assertEquals(0x1D,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0x2C,msg.getElement(4));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
}
@Test
public void testToMonitorStringWritePagedCVMsg(){
msg = XNetMessage.getWritePagedCVMsg(29,5);
Assert.assertEquals("Monitor String","Service Mode Request: Write 5 to CV 29 in Paged Mode",msg.toMonitorString());
}
@Test
public void testGetWriteDirectCVMsg(){
msg = XNetMessage.getWriteDirectCVMsg(29,5);
Assert.assertEquals(0x23,msg.getElement(0));
Assert.assertEquals(0x16,msg.getElement(1));
Assert.assertEquals(0x1D,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0x2D,msg.getElement(4));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
// CV > 256, version 3.6+ command.
msg = XNetMessage.getWriteDirectCVMsg(300,5);
Assert.assertEquals(0x23,msg.getElement(0));
Assert.assertEquals(0x1D,msg.getElement(1));
Assert.assertEquals(0x2C,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0x17,msg.getElement(4));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
// CV = 1024, version 3.6+ command, a special case.
// (sends 0 for CV value).
msg = XNetMessage.getWriteDirectCVMsg(1024,5);
Assert.assertEquals(0x23,msg.getElement(0));
Assert.assertEquals(0x1C,msg.getElement(1));
Assert.assertEquals(0x00,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0x3A,msg.getElement(4));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
}
@Test
public void testToMonitorStringWriteDirectCVMsg(){
msg = XNetMessage.getWriteDirectCVMsg(29,5);
Assert.assertEquals("Monitor String","Service Mode Request: Write 5 to CV 29 in Direct Mode",msg.toMonitorString());
msg = XNetMessage.getWriteDirectCVMsg(300,5);
Assert.assertEquals("Monitor String","Service Mode Request (V3.6): Write 5 to CV 300 in Direct Mode",msg.toMonitorString());
msg = XNetMessage.getWriteDirectCVMsg(600,5);
Assert.assertEquals("Monitor String","Service Mode Request (V3.6): Write 5 to CV 600 in Direct Mode",msg.toMonitorString());
msg = XNetMessage.getWriteDirectCVMsg(900,5);
Assert.assertEquals("Monitor String","Service Mode Request (V3.6): Write 5 to CV 900 in Direct Mode",msg.toMonitorString());
msg = XNetMessage.getWriteDirectCVMsg(1024,5);
Assert.assertEquals("Monitor String","Service Mode Request (V3.6): Write 5 to CV 1024 in Direct Mode",msg.toMonitorString());
}
@Test
public void testGetReadRegisterMsg(){
msg = XNetMessage.getReadRegisterMsg(5);
Assert.assertEquals(0x22,msg.getElement(0));
Assert.assertEquals(0x11,msg.getElement(1));
Assert.assertEquals(0x05,msg.getElement(2));
Assert.assertEquals(0x36,msg.getElement(3));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
msg = XNetMessage.getReadRegisterMsg(10);
jmri.util.JUnitAppender.assertErrorMessage("register number too large: 10");
}
@Test
public void testToMonitorStringRegisterReadMsg(){
msg = XNetMessage.getReadRegisterMsg(5);
Assert.assertEquals("Monitor String","Service Mode Request: Read Register 5",msg.toMonitorString());
}
@Test
public void testGetWriteRegisterMsg(){
msg = XNetMessage.getWriteRegisterMsg(5,5);
Assert.assertEquals(0x23,msg.getElement(0));
Assert.assertEquals(0x12,msg.getElement(1));
Assert.assertEquals(0x05,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0x31,msg.getElement(4));
Assert.assertEquals("programming mode required",jmri.jmrix.AbstractMRTrafficController.PROGRAMINGMODE,msg.getNeededMode());
msg = XNetMessage.getWriteRegisterMsg(10,5);
jmri.util.JUnitAppender.assertErrorMessage("register number too large: 10");
}
@Test
public void testToMonitorStringRegisterWriteMsg(){
msg = XNetMessage.getWriteRegisterMsg(5,5);
Assert.assertEquals("Monitor String","Service Mode Request: Write 5 to Register 5",msg.toMonitorString());
}
@Test
public void testGetWriteOpsModeCVMsg(){
msg = XNetMessage.getWriteOpsModeCVMsg(0,5,29,5);
Assert.assertEquals(0xE6,msg.getElement(0));
Assert.assertEquals(0x30,msg.getElement(1));
Assert.assertEquals(0x00,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0xEC,msg.getElement(4));
Assert.assertEquals(0x1C,msg.getElement(5));
Assert.assertEquals(0x05,msg.getElement(6));
Assert.assertEquals(0x26,msg.getElement(7));
}
@Test
public void testToMonitorStringWriteOpsModeCVMsg(){
msg = XNetMessage.getWriteOpsModeCVMsg(0,5,29,5);
Assert.assertEquals("Monitor String","Operations Mode Programming Request: Byte Mode Write: 5 to CV 29 for Decoder Address 5",msg.toMonitorString());
}
@Test
public void testGetVerifyOpsModeCVMsg(){
msg = XNetMessage.getVerifyOpsModeCVMsg(0,5,29,5);
Assert.assertEquals(0xE6,msg.getElement(0));
Assert.assertEquals(0x30,msg.getElement(1));
Assert.assertEquals(0x00,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0xE4,msg.getElement(4));
Assert.assertEquals(0x1C,msg.getElement(5));
Assert.assertEquals(0x05,msg.getElement(6));
Assert.assertEquals(0x2E,msg.getElement(7));
}
@Test
public void testToMonitorStringVerifyOpsModeCVMsg(){
msg = XNetMessage.getVerifyOpsModeCVMsg(0,5,29,5);
Assert.assertEquals("Monitor String","Operations Mode Programming Request: Byte Mode Verify: 5 to CV 29 for Decoder Address 5",msg.toMonitorString());
}
@Test
public void testGetBitWriteOpsModeCVMsg(){
msg = XNetMessage.getBitWriteOpsModeCVMsg(0,5,29,2,true);
Assert.assertEquals(0xE6,msg.getElement(0));
Assert.assertEquals(0x30,msg.getElement(1));
Assert.assertEquals(0x00,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0xE8,msg.getElement(4));
Assert.assertEquals(0x1C,msg.getElement(5));
Assert.assertEquals(0xEA,msg.getElement(6));
Assert.assertEquals(0xCD,msg.getElement(7));
msg = XNetMessage.getBitWriteOpsModeCVMsg(0,5,29,2,false);
Assert.assertEquals(0xE6,msg.getElement(0));
Assert.assertEquals(0x30,msg.getElement(1));
Assert.assertEquals(0x00,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0xE8,msg.getElement(4));
Assert.assertEquals(0x1C,msg.getElement(5));
Assert.assertEquals(0xE2,msg.getElement(6));
Assert.assertEquals(0xC5,msg.getElement(7));
}
@Test
public void testToMonitorStringWriteOpsBitModeCVMsg(){
msg = XNetMessage.getBitWriteOpsModeCVMsg(0,5,29,2,true);
Assert.assertEquals("Monitor String","Operations Mode Programming Request: Bit Mode Write: 1 to CV 29 bit 2 for Decoder Address 5",msg.toMonitorString());
msg = XNetMessage.getBitWriteOpsModeCVMsg(0,5,29,2,false);
Assert.assertEquals("Monitor String","Operations Mode Programming Request: Bit Mode Write: 0 to CV 29 bit 2 for Decoder Address 5",msg.toMonitorString());
}
@Test
public void testGetBitVerifyOpsModeCVMsg(){
msg = XNetMessage.getBitVerifyOpsModeCVMsg(0,5,29,2,true);
Assert.assertEquals(0xE6,msg.getElement(0));
Assert.assertEquals(0x30,msg.getElement(1));
Assert.assertEquals(0x00,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0xE8,msg.getElement(4));
Assert.assertEquals(0x1C,msg.getElement(5));
Assert.assertEquals(0xFA,msg.getElement(6));
Assert.assertEquals(0xDD,msg.getElement(7));
msg = XNetMessage.getBitVerifyOpsModeCVMsg(0,5,29,2,false);
Assert.assertEquals(0xE6,msg.getElement(0));
Assert.assertEquals(0x30,msg.getElement(1));
Assert.assertEquals(0x00,msg.getElement(2));
Assert.assertEquals(0x05,msg.getElement(3));
Assert.assertEquals(0xE8,msg.getElement(4));
Assert.assertEquals(0x1C,msg.getElement(5));
Assert.assertEquals(0xF2,msg.getElement(6));
Assert.assertEquals(0xD5,msg.getElement(7));
}
@Test
public void testToMonitorStringVerifyOpsBitModeCVMsg(){
msg = XNetMessage.getBitVerifyOpsModeCVMsg(0,5,29,2,true);
Assert.assertEquals("Monitor String","Operations Mode Programming Request: Bit Mode Verify: 1 to CV 29 bit 2 for Decoder Address 5",msg.toMonitorString());
msg = XNetMessage.getBitVerifyOpsModeCVMsg(0,5,29,2,false);
Assert.assertEquals("Monitor String","Operations Mode Programming Request: Bit Mode Verify: 0 to CV 29 bit 2 for Decoder Address 5",msg.toMonitorString());
}
@Test
public void testGetBuildDoubleHeaderMessage(){
msg = XNetMessage.getBuildDoubleHeaderMsg(1234,4567);
Assert.assertEquals(0xE5,msg.getElement(0));
Assert.assertEquals(0x43,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xD1,msg.getElement(4));
Assert.assertEquals(0xD7,msg.getElement(5));
Assert.assertEquals(0xB6,msg.getElement(6));
}
@Test
public void testToMonitorStringBuildDoubleHeaderMessage(){
msg = XNetMessage.getBuildDoubleHeaderMsg(1234,4567);
Assert.assertEquals("Monitor String","Double Header Request: Establish Double Header with 1234 and 4567",msg.toMonitorString());
}
@Test
public void testGetDissolveDoubleHeaderMessage(){
msg = XNetMessage.getDisolveDoubleHeaderMsg(1234);
Assert.assertEquals(0xE5,msg.getElement(0));
Assert.assertEquals(0x43,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0x00,msg.getElement(5));
Assert.assertEquals(0xB0,msg.getElement(6));
}
@Test
public void testToMonitorStringDissolveDoubleHeaderMessage(){
msg = XNetMessage.getDisolveDoubleHeaderMsg(1234);
Assert.assertEquals("Monitor String","Double Header Request: Dissolve Double Header that includes mobile decoder 1234",msg.toMonitorString());
}
@Test
public void testGetAddLocoToConsistMsg(){
msg = XNetMessage.getAddLocoToConsistMsg(42,1234,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x40,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x2A,msg.getElement(4));
Assert.assertEquals(0x98,msg.getElement(5));
msg = XNetMessage.getAddLocoToConsistMsg(42,1234,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x41,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x2A,msg.getElement(4));
Assert.assertEquals(0x99,msg.getElement(5));
}
@Test
public void testToMonitorStringAddLocoToConsistMessage(){
msg = XNetMessage.getAddLocoToConsistMsg(42,1234,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Add Locomotive: 1234 to Multi Unit Consist: 42 with Loco Direction Normal",msg.toMonitorString());
msg = XNetMessage.getAddLocoToConsistMsg(42,1234,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Add Locomotive: 1234 to Multi Unit Consist: 42 with Loco Direction Reversed",msg.toMonitorString());
}
@Test
public void testGetRemoveLocoFromConsistMsg(){
msg = XNetMessage.getRemoveLocoFromConsistMsg(42,1234);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x42,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x2A,msg.getElement(4));
Assert.assertEquals(0x9A,msg.getElement(5));
}
@Test
public void testToMonitorStringRemoveLocoFromConsistMessage(){
msg = XNetMessage.getRemoveLocoFromConsistMsg(42,1234);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Remove Locomotive: 1234 from Multi Unit Consist: 42",msg.toMonitorString());
}
@Test
public void testGetNextAddressOnStackMsg(){
// search forward
msg = XNetMessage.getNextAddressOnStackMsg(1234,true);
Assert.assertEquals(0xE3,msg.getElement(0));
Assert.assertEquals(0x05,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xF0,msg.getElement(4));
// search backward
msg = XNetMessage.getNextAddressOnStackMsg(1234,false);
Assert.assertEquals(0xE3,msg.getElement(0));
Assert.assertEquals(0x06,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xF3,msg.getElement(4));
}
@Test
public void testToMonitorStringNextAddressOnStackMsg(){
msg = XNetMessage.getNextAddressOnStackMsg(1234,true);
Assert.assertEquals("Monitor String","Search Command Station Stack Forward - Start Address: 1234",msg.toMonitorString());
msg = XNetMessage.getNextAddressOnStackMsg(1234,false);
Assert.assertEquals("Monitor String","Search Command Station Stack Backward - Start Address: 1234",msg.toMonitorString());
}
@Test
public void testGetDBSearchMsgConsistAddress(){
// search forward
msg = XNetMessage.getDBSearchMsgConsistAddress(42,true);
Assert.assertEquals(0xE2,msg.getElement(0));
Assert.assertEquals(0x03,msg.getElement(1));
Assert.assertEquals(0x2A,msg.getElement(2));
Assert.assertEquals(0xCB,msg.getElement(3));
// search backward
msg = XNetMessage.getDBSearchMsgConsistAddress(42,false);
Assert.assertEquals(0xE2,msg.getElement(0));
Assert.assertEquals(0x04,msg.getElement(1));
Assert.assertEquals(0x2A,msg.getElement(2));
Assert.assertEquals(0xCC,msg.getElement(3));
}
@Test
public void testToMonitorStringDBSearchMsgConsistAddress(){
msg = XNetMessage.getDBSearchMsgConsistAddress(42,true);
Assert.assertEquals("Monitor String","Search Command Station Stack Forward from Consist Address: 42",msg.toMonitorString());
msg = XNetMessage.getDBSearchMsgConsistAddress(42,false);
Assert.assertEquals("Monitor String","Search Command Station Stack Backward from Consist Address: 42",msg.toMonitorString());
}
@Test
public void testGetDBSearchMsgNextMULoco(){
// search forward
msg = XNetMessage.getDBSearchMsgNextMULoco(42,1234,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x01,msg.getElement(1));
Assert.assertEquals(0x2A,msg.getElement(2));
Assert.assertEquals(0xC4,msg.getElement(3));
Assert.assertEquals(0xD2,msg.getElement(4));
Assert.assertEquals(0xD9,msg.getElement(5));
// search backward
msg = XNetMessage.getDBSearchMsgNextMULoco(42,1234,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x02,msg.getElement(1));
Assert.assertEquals(0x2A,msg.getElement(2));
Assert.assertEquals(0xC4,msg.getElement(3));
Assert.assertEquals(0xD2,msg.getElement(4));
Assert.assertEquals(0xDA,msg.getElement(5));
}
@Test
public void testToMonitorStringDBSearchNextMULoco(){
msg = XNetMessage.getDBSearchMsgNextMULoco(42,1234,true);
Assert.assertEquals("Monitor String","Search Command Station Stack Forward for next address in Consist 42 Starting at 1234",msg.toMonitorString());
msg = XNetMessage.getDBSearchMsgNextMULoco(42,1234,false);
Assert.assertEquals("Monitor String","Search Command Station Stack Backward for next address in Consist 42 Starting at 1234",msg.toMonitorString());
}
@Test
public void testGetDeleteAddressOnStackMsg(){
msg = XNetMessage.getDeleteAddressOnStackMsg(1234);
Assert.assertEquals(0xE3,msg.getElement(0));
Assert.assertEquals(0x44,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xB1,msg.getElement(4));
}
@Test
public void testToMonitorStringDeleteAddressOnStackMsg(){
msg = XNetMessage.getDeleteAddressOnStackMsg(1234);
Assert.assertEquals("Monitor String","Delete Address 1234 from Command Station Stack.",msg.toMonitorString());
}
@Test
public void testGetLocomoitveInfoRequestMsg(){
msg = XNetMessage.getLocomotiveInfoRequestMsg(1234);
Assert.assertEquals(0xE3,msg.getElement(0));
Assert.assertEquals(0x00,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xF5,msg.getElement(4));
}
@Test
public void testToMonitorStringLocoInfoRequestMsg(){
msg = XNetMessage.getLocomotiveInfoRequestMsg(1234);
Assert.assertEquals("Monitor String","Request for Address 1234 speed/direction/function on/off status.",msg.toMonitorString());
}
@Test
public void testGetLocomoitveFunctionStatusMsg(){
msg = XNetMessage.getLocomotiveFunctionStatusMsg(1234);
Assert.assertEquals(0xE3,msg.getElement(0));
Assert.assertEquals(0x07,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xF2,msg.getElement(4));
}
@Test
public void testToMonitorStringLocoFunctionStatusMsg(){
msg = XNetMessage.getLocomotiveFunctionStatusMsg(1234);
Assert.assertEquals("Monitor String","Request for Address 1234 function momentary/continuous status.",msg.toMonitorString());
}
@Test
public void testGetLocomoitveFunctionHighOnStatusMsg(){
msg = XNetMessage.getLocomotiveFunctionHighOnStatusMsg(1234);
Assert.assertEquals(0xE3,msg.getElement(0));
Assert.assertEquals(0x09,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xFC,msg.getElement(4));
}
@Test
public void testToMonitorStringLocoFunctionHighOnStatusMsg(){
msg = XNetMessage.getLocomotiveFunctionHighOnStatusMsg(1234);
Assert.assertEquals("Monitor String","Request for Address 1234 F13-F28 on/off status.",msg.toMonitorString());
}
@Test
public void testGetLocomoitveFunctionHighMomStatusMsg(){
msg = XNetMessage.getLocomotiveFunctionHighMomStatusMsg(1234);
Assert.assertEquals(0xE3,msg.getElement(0));
Assert.assertEquals(0x08,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xFD,msg.getElement(4));
}
@Test
public void testToMonitorStringLocoFunctionHighMomStatusMsg(){
msg = XNetMessage.getLocomotiveFunctionHighMomStatusMsg(1234);
Assert.assertEquals("Monitor String","Request for Address 1234 F13-F28 momentary/continuous status.",msg.toMonitorString());
}
@Test
public void testGetAddressedEmergencyStop(){
msg = XNetMessage.getAddressedEmergencyStop(1234);
Assert.assertEquals(0x92,msg.getElement(0));
Assert.assertEquals(0xC4,msg.getElement(1));
Assert.assertEquals(0xD2,msg.getElement(2));
Assert.assertEquals(0x84,msg.getElement(3));
}
@Test
public void testToMonitorStringAddressedEmergencyStop(){
msg = XNetMessage.getAddressedEmergencyStop(1234);
Assert.assertEquals("Monitor String","Emergency Stop 1234",msg.toMonitorString());
}
@Test
public void testGetSpeedAndDirectionMsg(){
// 128 speed step mode, forward direction.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_128,0.5f,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x13,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xC0,msg.getElement(4));
Assert.assertEquals(0x21,msg.getElement(5));
// 128 speed step mode, reverse direction.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_128,0.5f,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x13,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x40,msg.getElement(4));
Assert.assertEquals(0xA1,msg.getElement(5));
// 128 speed step mode, forward direction, speed 0.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_128,0f,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x13,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x80,msg.getElement(4));
Assert.assertEquals(0x61,msg.getElement(5));
// 128 speed step mode, reverse direction, speed 0.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_128,0f,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x13,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xE1,msg.getElement(5));
// 28 speed step mode, forward direction.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_28,0.5f,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x12,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x98,msg.getElement(4));
Assert.assertEquals(0x78,msg.getElement(5));
// 28 speed step mode, reverse direction.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_28,0.5f,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x12,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x18,msg.getElement(4));
Assert.assertEquals(0xF8,msg.getElement(5));
// 28 speed step mode, forward direction, speed 0.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_28,0f,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x12,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x80,msg.getElement(4));
Assert.assertEquals(0x60,msg.getElement(5));
// 28 speed step mode, reverse direction, speed 0.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_28,0f,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x12,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xE0,msg.getElement(5));
// 27 speed step mode, forward direction.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_27,0.5f,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x11,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x98,msg.getElement(4));
Assert.assertEquals(0x7B,msg.getElement(5));
// 27 speed step mode, reverse direction.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_27,0.5f,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x11,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x18,msg.getElement(4));
Assert.assertEquals(0xFB,msg.getElement(5));
// 27 speed step mode, forward direction, speed 0.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_27,0f,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x11,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x80,msg.getElement(4));
Assert.assertEquals(0x63,msg.getElement(5));
// 27 speed step mode, reverse direction, speed 0.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_27,0,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x11,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xE3,msg.getElement(5));
// 14 speed step mode, forward direction.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_14,0.5f,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x10,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x88,msg.getElement(4));
Assert.assertEquals(0x6A,msg.getElement(5));
// 14 speed step mode, reverse direction.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_14,0.5f,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x10,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x08,msg.getElement(4));
Assert.assertEquals(0xEA,msg.getElement(5));
// 14 speed step mode, forward direction, speed 0.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_14,0f,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x10,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x80,msg.getElement(4));
Assert.assertEquals(0x62,msg.getElement(5));
// 14 speed step mode, reverse direction, speed 0.
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_14,0f,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x10,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xE2,msg.getElement(5));
}
@Test
public void testToMonitorStringSpeedAndDirectin128SpeedSteps(){
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_128,0.5f,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 64 and direction Forward in 128 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_128,0.5f,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 64 and direction Reverse in 128 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_128,0,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 0 and direction Forward in 128 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_128,0,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 0 and direction Reverse in 128 Speed Step Mode.",msg.toMonitorString());
}
@Test
public void testToMonitorStringSpeedAndDirectin28SpeedSteps(){
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_28,0.5f,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 14 and direction Forward in 28 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_28,0.5f,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 14 and direction Reverse in 28 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_28,0,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 0 and direction Forward in 28 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_28,0,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 0 and direction Reverse in 28 Speed Step Mode.",msg.toMonitorString());
}
@Test
public void testToMonitorStringSpeedAndDirectin27SpeedSteps(){
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_27,0.5f,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 14 and direction Forward in 27 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_27,0.5f,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 14 and direction Reverse in 27 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_27,0,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 0 and direction Forward in 27 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_27,0,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 0 and direction Reverse in 27 Speed Step Mode.",msg.toMonitorString());
}
@Test
public void testToMonitorStringSpeedAndDirectin14SpeedSteps(){
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_14,0.5f,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 8 and direction Forward in 14 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_14,0.5f,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 8 and direction Reverse in 14 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_14,0,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 0 and direction Forward in 14 Speed Step Mode.",msg.toMonitorString());
msg = XNetMessage.getSpeedAndDirectionMsg(1234,jmri.SpeedStepMode.NMRA_DCC_14,0,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Address 1234 to Speed Step 0 and direction Reverse in 14 Speed Step Mode.",msg.toMonitorString());
}
@Test
public void testGetFunctionGroup1OpsMsg() {
// all off
msg = XNetMessage.getFunctionGroup1OpsMsg(1234,
false,false,false,false,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x20,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xD2,msg.getElement(5));
// all on
msg = XNetMessage.getFunctionGroup1OpsMsg(1234,
true,true,true,true,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x20,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x1F,msg.getElement(4));
Assert.assertEquals(0xCD,msg.getElement(5));
}
@Test
public void testToMonitorStringFunctionGroup1OpsMsg(){
// all off
msg = XNetMessage.getFunctionGroup1OpsMsg(1234,
false,false,false,false,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 1 for Address: 1234 F0 Off; F1 Off; F2 Off; F3 Off; F4 Off; ",msg.toMonitorString());
// all on
msg = XNetMessage.getFunctionGroup1OpsMsg(1234,
true,true,true,true,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 1 for Address: 1234 F0 On; F1 On; F2 On; F3 On; F4 On; ",msg.toMonitorString());
}
@Test
public void testGetFunctionGroup1SetMomMsg() {
// all off
msg = XNetMessage.getFunctionGroup1SetMomMsg(1234,
false,false,false,false,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x24,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xD6,msg.getElement(5));
// all on
msg = XNetMessage.getFunctionGroup1SetMomMsg(1234,
true,true,true,true,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x24,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x1F,msg.getElement(4));
Assert.assertEquals(0xC9,msg.getElement(5));
}
@Test
public void testToMonitorStringFunctionGroup1SetMsg(){
// all off
msg = XNetMessage.getFunctionGroup1SetMomMsg(1234,
false,false,false,false,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 1 Momentary Status for Address: 1234 F0 Continuous; F1 Continuous; F2 Continuous; F3 Continuous; F4 Continuous; ",msg.toMonitorString());
// all on
msg = XNetMessage.getFunctionGroup1SetMomMsg(1234,
true,true,true,true,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 1 Momentary Status for Address: 1234 F0 Momentary; F1 Momentary; F2 Momentary; F3 Momentary; F4 Momentary; ",msg.toMonitorString());
}
@Test
public void testGetFunctionGroup2OpsMsg() {
// all off
msg = XNetMessage.getFunctionGroup2OpsMsg(1234,
false,false,false,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x21,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xD3,msg.getElement(5));
// all on
msg = XNetMessage.getFunctionGroup2OpsMsg(1234,
true,true,true,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x21,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x0F,msg.getElement(4));
Assert.assertEquals(0xDC,msg.getElement(5));
}
@Test
public void testToMonitorStringFunctionGroup2OpsMsg(){
// all off
msg = XNetMessage.getFunctionGroup2OpsMsg(1234,
false,false,false,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 2 for Address: 1234 F5 Off; F6 Off; F7 Off; F8 Off; ",msg.toMonitorString());
// all on
msg = XNetMessage.getFunctionGroup2OpsMsg(1234,
true,true,true,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 2 for Address: 1234 F5 On; F6 On; F7 On; F8 On; ",msg.toMonitorString());
}
@Test
public void testGetFunctionGroup2SetMomMsg() {
// all off
msg = XNetMessage.getFunctionGroup2SetMomMsg(1234,
false,false,false,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x25,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xD7,msg.getElement(5));
// all on
msg = XNetMessage.getFunctionGroup2SetMomMsg(1234,
true,true,true,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x25,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x0F,msg.getElement(4));
Assert.assertEquals(0xD8,msg.getElement(5));
}
@Test
public void testToMonitorStringFunctionGroup2SetMsg(){
// all off
msg = XNetMessage.getFunctionGroup2SetMomMsg(1234,
false,false,false,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 2 Momentary Status for Address: 1234 F5 Continuous; F6 Continuous; F7 Continuous; F8 Continuous; ",msg.toMonitorString());
// all on
msg = XNetMessage.getFunctionGroup2SetMomMsg(1234,
true,true,true,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 2 Momentary Status for Address: 1234 F5 Momentary; F6 Momentary; F7 Momentary; F8 Momentary; ",msg.toMonitorString());
}
@Test
public void testGetFunctionGroup3OpsMsg() {
// all off
msg = XNetMessage.getFunctionGroup3OpsMsg(1234,
false,false,false,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x22,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xD0,msg.getElement(5));
// all on
msg = XNetMessage.getFunctionGroup3OpsMsg(1234,
true,true,true,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x22,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x0F,msg.getElement(4));
Assert.assertEquals(0xDF,msg.getElement(5));
}
@Test
public void testToMonitorStringFunctionGroup3OpsMsg(){
// all off
msg = XNetMessage.getFunctionGroup3OpsMsg(1234,
false,false,false,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 3 for Address: 1234 F9 Off; F10 Off; F11 Off; F12 Off; ",msg.toMonitorString());
// all on
msg = XNetMessage.getFunctionGroup3OpsMsg(1234,
true,true,true,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 3 for Address: 1234 F9 On; F10 On; F11 On; F12 On; ",msg.toMonitorString());
}
@Test
public void testGetFunctionGroup3SetMomMsg() {
// all off
msg = XNetMessage.getFunctionGroup3SetMomMsg(1234,
false,false,false,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x26,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xD4,msg.getElement(5));
// all on
msg = XNetMessage.getFunctionGroup3SetMomMsg(1234,
true,true,true,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x26,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x0F,msg.getElement(4));
Assert.assertEquals(0xDB,msg.getElement(5));
}
@Test
public void testToMonitorStringFunctionGroup3SetMsg(){
// all off
msg = XNetMessage.getFunctionGroup3SetMomMsg(1234,
false,false,false,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 3 Momentary Status for Address: 1234 F9 Continuous; F10 Continuous; F11 Continuous; F12 Continuous; ",msg.toMonitorString());
// all on
msg = XNetMessage.getFunctionGroup3SetMomMsg(1234,
true,true,true,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 3 Momentary Status for Address: 1234 F9 Momentary; F10 Momentary; F11 Momentary; F12 Momentary; ",msg.toMonitorString());
}
@Test
public void testGetFunctionGroup4OpsMsg() {
// all off
msg = XNetMessage.getFunctionGroup4OpsMsg(1234,
false,false,false,false,false,false,false,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x23,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xD1,msg.getElement(5));
// all on
msg = XNetMessage.getFunctionGroup4OpsMsg(1234,
true,true,true,true,true,true,true,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x23,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xFF,msg.getElement(4));
Assert.assertEquals(0x2E,msg.getElement(5));
}
@Test
public void testToMonitorStringFunctionGroup4OpsMsg(){
// all off
msg = XNetMessage.getFunctionGroup4OpsMsg(1234,
false,false,false,false,false,false,false,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 4 for Address: 1234 F13 Off; F14 Off; F15 Off; F16 Off; F17 Off; F18 Off; F19 Off; F20 Off; ",msg.toMonitorString());
// all on
msg = XNetMessage.getFunctionGroup4OpsMsg(1234,
true,true,true,true,true,true,true,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 4 for Address: 1234 F13 On; F14 On; F15 On; F16 On; F17 On; F18 On; F19 On; F20 On; ",msg.toMonitorString());
}
@Test
public void testGetFunctionGroup4SetMomMsg() {
// all off
msg = XNetMessage.getFunctionGroup4SetMomMsg(1234,
false,false,false,false,false,false,false,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x27,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xD5,msg.getElement(5));
// all on
msg = XNetMessage.getFunctionGroup4SetMomMsg(1234,
true,true,true,true,true,true,true,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x27,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xFF,msg.getElement(4));
Assert.assertEquals(0x2A,msg.getElement(5));
}
@Test
public void testToMonitorStringFunctionGroup4SetMsg(){
// all off
msg = XNetMessage.getFunctionGroup4SetMomMsg(1234,
false,false,false,false,false,false,false,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 4 Momentary Status for Address: 1234 F13 Continuous; F14 Continuous; F15 Continuous; F16 Continuous; F17 Continuous; F18 Continuous; F19 Continuous; F20 Continuous; ",msg.toMonitorString());
// all on
msg = XNetMessage.getFunctionGroup4SetMomMsg(1234,
true,true,true,true,true,true,true,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 4 Momentary Status for Address: 1234 F13 Momentary; F14 Momentary; F15 Momentary; F16 Momentary; F17 Momentary; F18 Momentary; F19 Momentary; F20 Momentary; ",msg.toMonitorString());
}
@Test
public void testGetFunctionGroup5OpsMsg() {
// all off
msg = XNetMessage.getFunctionGroup5OpsMsg(1234,
false,false,false,false,false,false,false,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x28,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xDA,msg.getElement(5));
// all on
msg = XNetMessage.getFunctionGroup5OpsMsg(1234,
true,true,true,true,true,true,true,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x28,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xFF,msg.getElement(4));
Assert.assertEquals(0x25,msg.getElement(5));
}
@Test
public void testToMonitorStringFunctionGroup5OpsMsg(){
// all off
msg = XNetMessage.getFunctionGroup5OpsMsg(1234,
false,false,false,false,false,false,false,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 5 for Address: 1234 F21 Off; F22 Off; F23 Off; F24 Off; F25 Off; F26 Off; F27 Off; F28 Off; ",msg.toMonitorString());
// all on
msg = XNetMessage.getFunctionGroup5OpsMsg(1234,
true,true,true,true,true,true,true,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 5 for Address: 1234 F21 On; F22 On; F23 On; F24 On; F25 On; F26 On; F27 On; F28 On; ",msg.toMonitorString());
}
@Test
public void testGetFunctionGroup5SetMomMsg() {
// all off
msg = XNetMessage.getFunctionGroup5SetMomMsg(1234,
false,false,false,false,false,false,false,false);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x2C,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0x00,msg.getElement(4));
Assert.assertEquals(0xDE,msg.getElement(5));
// all on
msg = XNetMessage.getFunctionGroup5SetMomMsg(1234,
true,true,true,true,true,true,true,true);
Assert.assertEquals(0xE4,msg.getElement(0));
Assert.assertEquals(0x2C,msg.getElement(1));
Assert.assertEquals(0xC4,msg.getElement(2));
Assert.assertEquals(0xD2,msg.getElement(3));
Assert.assertEquals(0xFF,msg.getElement(4));
Assert.assertEquals(0x21,msg.getElement(5));
}
@Test
public void testToMonitorStringFunctionGroup5SetMsg(){
// all off
msg = XNetMessage.getFunctionGroup5SetMomMsg(1234,
false,false,false,false,false,false,false,false);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 5 Momentary Status for Address: 1234 F21 Continuous; F22 Continuous; F23 Continuous; F24 Continuous; F25 Continuous; F26 Continuous; F27 Continuous; F28 Continuous; ",msg.toMonitorString());
// all on
msg = XNetMessage.getFunctionGroup5SetMomMsg(1234,
true,true,true,true,true,true,true,true);
Assert.assertEquals("Monitor String","Mobile Decoder Operations Request: Set Function Group 5 Momentary Status for Address: 1234 F21 Momentary; F22 Momentary; F23 Momentary; F24 Momentary; F25 Momentary; F26 Momentary; F27 Momentary; F28 Momentary; ",msg.toMonitorString());
}
@Test
public void testGetResumeOperationsMsg() {
msg = XNetMessage.getResumeOperationsMsg();
Assert.assertEquals(0x21,msg.getElement(0));
Assert.assertEquals(0x81,msg.getElement(1));
Assert.assertEquals(0xA0,msg.getElement(2));
}
@Test
public void testToMonitorStringResumeOperationsMsg(){
msg = XNetMessage.getResumeOperationsMsg();
Assert.assertEquals("Monitor String","REQUEST: Normal Operations Resumed",msg.toMonitorString());
}
@Test
public void testGetEmergencyOffMsg() {
msg = XNetMessage.getEmergencyOffMsg();
Assert.assertEquals(0x21,msg.getElement(0));
Assert.assertEquals(0x80,msg.getElement(1));
Assert.assertEquals(0xA1,msg.getElement(2));
}
@Test
public void testToMonitorStringEmergencyOffMsg(){
msg = XNetMessage.getEmergencyOffMsg();
Assert.assertEquals("Monitor String","REQUEST: Emergency Off",msg.toMonitorString());
}
@Test
public void testGetEmergencyStopMsg() {
msg = XNetMessage.getEmergencyStopMsg();
Assert.assertEquals(0x80,msg.getElement(0));
Assert.assertEquals(0x80,msg.getElement(1));
}
@Test
public void testToMonitorStringEmergencyStopMsg(){
msg = XNetMessage.getEmergencyStopMsg();
Assert.assertEquals("Monitor String","REQUEST: Emergency Stop",msg.toMonitorString());
}
@Test
public void testGetCSVersionRequestMessage() {
msg = XNetMessage.getCSVersionRequestMessage();
Assert.assertEquals(0x21,msg.getElement(0));
Assert.assertEquals(0x21,msg.getElement(1));
Assert.assertEquals(0x00,msg.getElement(2));
}
@Test
public void testToMonitorStringCSVersionRequestMessage(){
msg = XNetMessage.getCSVersionRequestMessage();
Assert.assertEquals("Monitor String","REQUEST: Command Station Version",msg.toMonitorString());
}
@Test
public void testGetCSStatusRequestMessage() {
msg = XNetMessage.getCSStatusRequestMessage();
Assert.assertEquals(0x21,msg.getElement(0));
Assert.assertEquals(0x24,msg.getElement(1));
Assert.assertEquals(0x05,msg.getElement(2));
}
@Test
public void testToMonitorStringCSStatusRequestMessage(){
msg = XNetMessage.getCSStatusRequestMessage();
Assert.assertEquals("Monitor String","REQUEST: Command Station Status",msg.toMonitorString());
}
@Test
public void testGetCsAutoStartMessge() {
// test autostart mode.
msg = XNetMessage.getCSAutoStartMessage(true);
Assert.assertEquals(0x22,msg.getElement(0));
Assert.assertEquals(0x22,msg.getElement(1));
Assert.assertEquals(0x04,msg.getElement(2));
Assert.assertEquals(0x04,msg.getElement(3));
// test manual mode.
msg = XNetMessage.getCSAutoStartMessage(false);
Assert.assertEquals(0x22,msg.getElement(0));
Assert.assertEquals(0x22,msg.getElement(1));
Assert.assertEquals(0x00,msg.getElement(2));
Assert.assertEquals(0x00,msg.getElement(3));
}
@Test
public void testToMonitorStringCsAutoStartMessageMessage(){
msg = XNetMessage.getCSAutoStartMessage(true);
Assert.assertEquals("Monitor String","REQUEST: Set Power-up Mode to Automatic",msg.toMonitorString());
msg = XNetMessage.getCSAutoStartMessage(false);
Assert.assertEquals("Monitor String","REQUEST: Set Power-up Mode to Manual",msg.toMonitorString());
}
@Test
public void testGetLIVersionRequestMessage() {
msg = XNetMessage.getLIVersionRequestMessage();
Assert.assertEquals(0xF0,msg.getElement(0));
Assert.assertEquals(0xF0,msg.getElement(1));
}
@Test
public void testToMonitorStringLIVersionRequestMessage(){
msg = XNetMessage.getLIVersionRequestMessage();
Assert.assertEquals("Monitor String","REQUEST LI10x hardware/software version",msg.toMonitorString());
}
@Test
public void testGetLIAddressRequestMsg() {
msg = XNetMessage.getLIAddressRequestMsg(1);
Assert.assertEquals(0xF2,msg.getElement(0));
Assert.assertEquals(0x01,msg.getElement(1));
Assert.assertEquals(0x01,msg.getElement(2));
Assert.assertEquals(0xF2,msg.getElement(3));
}
@Test
public void testToMonitorStringLIAddressRequestMsg(){
msg = XNetMessage.getLIAddressRequestMsg(1);
Assert.assertEquals("Monitor String","REQUEST LI101 Address 1",msg.toMonitorString());
}
@Test
public void testGetLISpeedReqeustMessage() {
msg = XNetMessage.getLISpeedRequestMsg(1);
Assert.assertEquals(0xF2,msg.getElement(0));
Assert.assertEquals(0x02,msg.getElement(1));
Assert.assertEquals(0x01,msg.getElement(2));
Assert.assertEquals(0xF1,msg.getElement(3));
}
@Test
public void testgetOpsModeResultsMsg() {
msg = XNetMessage.getOpsModeResultsMsg();
Assert.assertEquals(0x21,msg.getElement(0));
Assert.assertEquals(0x27,msg.getElement(1));
Assert.assertEquals(0x06,msg.getElement(2));
}
@Test
public void testToMonitorStringLISpeedRequestMessage(){
msg = XNetMessage.getLISpeedRequestMsg(1);
Assert.assertEquals("Monitor String","REQUEST LI101 Baud Rate 19,200 bps (default)",msg.toMonitorString());
}
@Test
public void testToMonitorStringLISpeedRequestMessage2(){
msg = XNetMessage.getLISpeedRequestMsg(2);
Assert.assertEquals("Monitor String","REQUEST LI101 Baud Rate 38,400 bps",msg.toMonitorString());
}
@Test
public void testToMonitorStringLISpeedRequestMessage3(){
msg = XNetMessage.getLISpeedRequestMsg(3);
Assert.assertEquals("Monitor String","REQUEST LI101 Baud Rate 57,600 bps",msg.toMonitorString());
}
@Test
public void testToMonitorStringLISpeedRequestMessage4(){
msg = XNetMessage.getLISpeedRequestMsg(4);
Assert.assertEquals("Monitor String","REQUEST LI101 Baud Rate 115,200 bps",msg.toMonitorString());
}
@Test
public void testToMonitorStringLISpeedRequestMessage5(){
msg = XNetMessage.getLISpeedRequestMsg(5);
Assert.assertEquals("Monitor String","REQUEST LI101 Baud Rate <undefined>",msg.toMonitorString());
}
@BeforeEach
@Override
public void setUp() {
JUnitUtil.setUp();
m = msg = new XNetMessage(3);
}
@Override
@AfterEach
public void tearDown() {
m = msg = null;
JUnitUtil.tearDown();
// make sure the message timeouts and retries are set to
// the defaults.
XNetMessage.setXNetMessageTimeout(5000);
XNetMessage.setXNetMessageRetries(5);
}
}