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 ",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); } }