Files
JIMRI/java/test/jmri/NmraPacketTest.java
2026-06-17 14:00:51 +02:00

1994 lines
76 KiB
Java

package jmri;
import jmri.util.JUnitAppender;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Unit tests for NmraPacket.
* @author Bob Jacobsen
*/
public class NmraPacketTest {
// output values for some of these tests were provided by Bob Scheffler
// create an accessory decoder packet
@Test
public void testAccDecoderPacket1() {
// test fixed bits
byte[] ba = NmraPacket.accDecoderPkt(1, 0, 0);
assertEquals( 0x81, ba[0] & 0xFF, "first byte ");
assertEquals( 0xF0, ba[1] & 0xFF, "second byte ");
assertEquals( 0x71, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket2() {
// test C bit
byte[] ba = NmraPacket.accDecoderPkt(1, 1, 0);
assertEquals( 0x81, ba[0] & 0xFF, "first byte ");
assertEquals( 0xF8, ba[1] & 0xFF, "second byte ");
assertEquals( 0x79, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket3() {
// test D bits
byte[] ba = NmraPacket.accDecoderPkt(1, 0, 7);
assertEquals( 0x81, ba[0] & 0xFF, "first byte ");
assertEquals( 0xF7, ba[1] & 0xFF, "second byte ");
assertEquals( 0x76, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket4() {
// test short part of address
byte[] ba = NmraPacket.accDecoderPkt(3, 0, 0);
assertEquals( 0x83, ba[0] & 0xFF, "first byte ");
assertEquals( 0xF0, ba[1] & 0xFF, "second byte ");
assertEquals( 0x73, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket5() {
// test top part of address
byte[] ba = NmraPacket.accDecoderPkt(128, 0, 0);
assertEquals( 0x80, ba[0] & 0xFF, "first byte ");
assertEquals( 0xD0, ba[1] & 0xFF, "second byte ");
assertEquals( 0x50, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket6() {
// "typical packet" test
byte[] ba = NmraPacket.accDecoderPkt(33, 1, 5);
assertEquals( 0xA1, ba[0] & 0xFF, "first byte ");
assertEquals( 0xFD, ba[1] & 0xFF, "second byte ");
assertEquals( 0x5C, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket7() {
// address 256
byte[] ba = NmraPacket.accDecoderPkt(256, true);
assertEquals( 0x80, ba[0] & 0xFF, "first byte ");
assertEquals( 0xEF, ba[1] & 0xFF, "second byte ");
assertEquals( 0x6F, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket8() {
// address 257
byte[] ba = NmraPacket.accDecoderPkt(257, true);
assertEquals( 0x81, ba[0] & 0xFF, "first byte ");
assertEquals( 0xE9, ba[1] & 0xFF, "second byte ");
assertEquals( 0x68, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket9() {
// address 512
byte[] ba = NmraPacket.accDecoderPkt(512, true);
assertEquals( 0x80, ba[0] & 0xFF, "first byte ");
assertEquals( 0xDF, ba[1] & 0xFF, "second byte ");
assertEquals( 0x5F, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket10() {
// address 513
byte[] ba = NmraPacket.accDecoderPkt(513, true);
assertEquals( 0x81, ba[0] & 0xFF, "first byte ");
assertEquals( 0xD9, ba[1] & 0xFF, "second byte ");
assertEquals( 0x58, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket11() {
// address 1024
byte[] ba = NmraPacket.accDecoderPkt(1024, true);
assertEquals( 0x80, ba[0] & 0xFF, "first byte ");
assertEquals( 0xBF, ba[1] & 0xFF, "second byte ");
assertEquals( 0x3F, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket12() {
// address 1025
byte[] ba = NmraPacket.accDecoderPkt(1025, true);
assertEquals( 0x81, ba[0] & 0xFF, "first byte ");
assertEquals( 0xB9, ba[1] & 0xFF, "second byte ");
assertEquals( 0x38, ba[2] & 0xFF, "third byte ");
}
@Test
public void testAccDecoderPacket13() {
// invalid address (0)
int addr = 0;
// expect this to throw exception
Exception ex = assertThrows( IllegalArgumentException.class, () ->
NmraPacket.accDecoderPkt(addr, 0, 0), "Expected exception");
assertNotNull(ex);
jmri.util.JUnitAppender.assertErrorMessage("invalid address " + addr);
}
@Test
public void testOpsModeLong() {
// "typical packet" test
byte[] ba = NmraPacket.opsCvWriteByte(2065, true, 21, 75);
assertEquals( 0xC8, ba[0] & 0xFF, "first byte ");
assertEquals( 0x11, ba[1] & 0xFF, "second byte ");
assertEquals( 0xEC, ba[2] & 0xFF, "third byte ");
assertEquals( 0x14, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0x4B, ba[4] & 0xFF, "fifth byte ");
assertEquals( 0x6A, ba[5] & 0xFF, "sixth byte ");
}
@Test
public void testOpsModeShort() {
// "typical packet" test
byte[] ba = NmraPacket.opsCvWriteByte(65, false, 21, 75);
assertEquals( 0x41, ba[0] & 0xFF, "first byte ");
assertEquals( 0xEC, ba[1] & 0xFF, "second byte ");
assertEquals( 0x14, ba[2] & 0xFF, "third byte ");
assertEquals( 0x4B, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0xF2, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testAnalog1() {
// "typical packet" test
byte[] ba = NmraPacket.analogControl(60, false, 1, 00);
assertEquals( 0x3C, ba[0] & 0xFF, "first byte ");
assertEquals( 0x3D, ba[1] & 0xFF, "second byte ");
assertEquals( 0x01, ba[2] & 0xFF, "third byte ");
assertEquals( 0x00, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0x3C ^ 0x3D ^ 0x01, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testAnalog2() {
// "typical packet" test
byte[] ba = NmraPacket.analogControl(60, false, 1, 12);
assertEquals( 0x3C, ba[0] & 0xFF, "first byte ");
assertEquals( 0x3D, ba[1] & 0xFF, "second byte ");
assertEquals( 0x01, ba[2] & 0xFF, "third byte ");
assertEquals( 0x0C, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0x3C ^ 0x3D ^ 0x01 ^ 0x0C, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testF13F20A() {
// "typical packet" test, short address
byte[] ba = NmraPacket.function13Through20Packet(60, false, true, false, true, false, true, false, true, false);
assertEquals( 0x3C, ba[0] & 0xFF, "first byte ");
assertEquals( 0xDE, ba[1] & 0xFF, "second byte ");
assertEquals( 0x55, ba[2] & 0xFF, "third byte ");
assertEquals( 0x3C ^ 0xDE ^ 0x55, ba[3] & 0xFF, "fourth byte ");
}
@Test
public void testF13F20B() {
// "typical packet" test, long address
byte[] ba = NmraPacket.function13Through20Packet(2065, true, true, false, true, false, true, false, true, false);
assertEquals( 0xC8, ba[0] & 0xFF, "first byte ");
assertEquals( 0x11, ba[1] & 0xFF, "second byte ");
assertEquals( 0xDE, ba[2] & 0xFF, "third byte ");
assertEquals( 0x55, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0xC8 ^ 0x11 ^ 0xDE ^ 0x55, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testF21F28A() {
// "typical packet" test, short address
byte[] ba = NmraPacket.function21Through28Packet(60, false, true, false, true, false, true, false, true, false);
assertEquals( 0x3C, ba[0] & 0xFF, "first byte ");
assertEquals( 0xDF, ba[1] & 0xFF, "second byte ");
assertEquals( 0x55, ba[2] & 0xFF, "third byte ");
assertEquals( 0x3C ^ 0xDF ^ 0x55, ba[3] & 0xFF, "fourth byte ");
}
@Test
public void testF21F28B() {
// "typical packet" test, long address
byte[] ba = NmraPacket.function21Through28Packet(2065, true, true, false, true, false, true, false, true, false);
assertEquals( 0xC8, ba[0] & 0xFF, "first byte ");
assertEquals( 0x11, ba[1] & 0xFF, "second byte ");
assertEquals( 0xDF, ba[2] & 0xFF, "third byte ");
assertEquals( 0x55, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0xC8 ^ 0x11 ^ 0xDF ^ 0x55, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testF29F36A() {
// "typical packet" test, short address
byte[] ba = NmraPacket.function29Through36Packet(60, false, true, false, true, false, true, false, true, false);
assertEquals( 0x3C, ba[0] & 0xFF, "first byte ");
assertEquals( 0xD8, ba[1] & 0xFF, "second byte ");
assertEquals( 0x55, ba[2] & 0xFF, "third byte ");
assertEquals( 0x3C ^ 0xD8 ^ 0x55, ba[3] & 0xFF, "fourth byte ");
}
@Test
public void testF29F36B() {
// "typical packet" test, long address
byte[] ba = NmraPacket.function29Through36Packet(2065, true, true, false, true, false, true, false, true, false);
assertEquals( 0xC8, ba[0] & 0xFF, "first byte ");
assertEquals( 0x11, ba[1] & 0xFF, "second byte ");
assertEquals( 0xD8, ba[2] & 0xFF, "third byte ");
assertEquals( 0x55, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0xC8 ^ 0x11 ^ 0xD8 ^ 0x55, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testF37F44A() {
// "typical packet" test, short address
byte[] ba = NmraPacket.function37Through44Packet(60, false, true, false, true, false, true, false, true, false);
assertEquals( 0x3C, ba[0] & 0xFF, "first byte ");
assertEquals( 0xD9, ba[1] & 0xFF, "second byte ");
assertEquals( 0x55, ba[2] & 0xFF, "third byte ");
assertEquals( 0x3C ^ 0xD9 ^ 0x55, ba[3] & 0xFF, "fourth byte ");
}
@Test
public void testF37F44B() {
// "typical packet" test, long address
byte[] ba = NmraPacket.function37Through44Packet(2065, true, true, false, true, false, true, false, true, false);
assertEquals( 0xC8, ba[0] & 0xFF, "first byte ");
assertEquals( 0x11, ba[1] & 0xFF, "second byte ");
assertEquals( 0xD9, ba[2] & 0xFF, "third byte ");
assertEquals( 0x55, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0xC8 ^ 0x11 ^ 0xD9 ^ 0x55, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testF45F52A() {
// "typical packet" test, short address
byte[] ba = NmraPacket.function45Through52Packet(60, false, true, false, true, false, true, false, true, false);
assertEquals( 0x3C, ba[0] & 0xFF, "first byte ");
assertEquals( 0xDA, ba[1] & 0xFF, "second byte ");
assertEquals( 0x55, ba[2] & 0xFF, "third byte ");
assertEquals( 0x3C ^ 0xDA ^ 0x55, ba[3] & 0xFF, "fourth byte ");
}
@Test
public void testF45F52B() {
// "typical packet" test, long address
byte[] ba = NmraPacket.function45Through52Packet(2065, true, true, false, true, false, true, false, true, false);
assertEquals( 0xC8, ba[0] & 0xFF, "first byte ");
assertEquals( 0x11, ba[1] & 0xFF, "second byte ");
assertEquals( 0xDA, ba[2] & 0xFF, "third byte ");
assertEquals( 0x55, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0xC8 ^ 0x11 ^ 0xDA ^ 0x55, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testF53F60A() {
// "typical packet" test, short address
byte[] ba = NmraPacket.function53Through60Packet(60, false, true, false, true, false, true, false, true, false);
assertEquals( 0x3C, ba[0] & 0xFF, "first byte ");
assertEquals( 0xDB, ba[1] & 0xFF, "second byte ");
assertEquals( 0x55, ba[2] & 0xFF, "third byte ");
assertEquals( 0x3C ^ 0xDB ^ 0x55, ba[3] & 0xFF, "fourth byte ");
}
@Test
public void testF53F60B() {
// "typical packet" test, long address
byte[] ba = NmraPacket.function53Through60Packet(2065, true, true, false, true, false, true, false, true, false);
assertEquals( 0xC8, ba[0] & 0xFF, "first byte ");
assertEquals( 0x11, ba[1] & 0xFF, "second byte ");
assertEquals( 0xDB, ba[2] & 0xFF, "third byte ");
assertEquals( 0x55, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0xC8 ^ 0x11 ^ 0xDB ^ 0x55, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testF61F68A() {
// "typical packet" test, short address
byte[] ba = NmraPacket.function61Through68Packet(60, false, true, false, true, false, true, false, true, false);
assertEquals( 0x3C, ba[0] & 0xFF, "first byte ");
assertEquals( 0xDC, ba[1] & 0xFF, "second byte ");
assertEquals( 0x55, ba[2] & 0xFF, "third byte ");
assertEquals( 0x3C ^ 0xDC ^ 0x55, ba[3] & 0xFF, "fourth byte ");
}
@Test
public void testF61F68B() {
// "typical packet" test, long address
byte[] ba = NmraPacket.function61Through68Packet(2065, true, true, false, true, false, true, false, true, false);
assertEquals( 0xC8, ba[0] & 0xFF, "first byte ");
assertEquals( 0x11, ba[1] & 0xFF, "second byte ");
assertEquals( 0xDC, ba[2] & 0xFF, "third byte ");
assertEquals( 0x55, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0xC8 ^ 0x11 ^ 0xDC ^ 0x55, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testConsist1() {
// "typical packet" test
byte[] ba = NmraPacket.consistControl(60, false, 1, true);
assertEquals( 0x3C, ba[0] & 0xFF, "first byte ");
assertEquals( 0x12, ba[1] & 0xFF, "second byte ");
assertEquals( 0x01, ba[2] & 0xFF, "third byte ");
assertEquals( 0x3C ^ 0x12 ^ 0x01, ba[3] & 0xFF, "fourth byte ");
}
@Test
public void testConsist2() {
// "typical packet" test
byte[] ba = NmraPacket.consistControl(2065, true, 12, false);
assertEquals( 0xC8, ba[0] & 0xFF, "first byte ");
assertEquals( 0x11, ba[1] & 0xFF, "second byte ");
assertEquals( 0x13, ba[2] & 0xFF, "third byte ");
assertEquals( 0x0C, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0xC8 ^ 0x11 ^ 0x13 ^ 0x0C, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testConsist3() {
// "typical packet" test
byte[] ba = NmraPacket.consistControl(2065, true, 0, false);
assertEquals( 0xC8, ba[0] & 0xFF, "first byte ");
assertEquals( 0x11, ba[1] & 0xFF, "second byte ");
assertEquals( 0x13, ba[2] & 0xFF, "third byte ");
assertEquals( 0x00, ba[3] & 0xFF, "fourth byte ");
assertEquals( 0xC8 ^ 0x11 ^ 0x13 ^ 0x00, ba[4] & 0xFF, "fifth byte ");
}
@Test
public void testIsAccSignalDecoderPktOK() {
byte[] ba = NmraPacket.accSignalDecoderPkt(123, 12);
assertTrue(NmraPacket.isAccSignalDecoderPkt(ba));
}
@Test
public void testIsAccSignalDecoderPktFalseConsist() {
byte[] ba = NmraPacket.consistControl(2065, true, 0, false);
assertFalse(NmraPacket.isAccSignalDecoderPkt(ba));
}
@Test
public void testIsAccSignalDecoderPktFalseFunction() {
byte[] ba = NmraPacket.function21Through28Packet(2065, true, true, false, true, false, true, false, true, false);
assertFalse(NmraPacket.isAccSignalDecoderPkt(ba));
}
@Test
public void testIsAccSignalDecoderPktFalseAnalog() {
byte[] ba = NmraPacket.analogControl(60, false, 1, 12);
assertFalse(NmraPacket.isAccSignalDecoderPkt(ba));
}
@Test
public void testIsAccSignalDecoderPktFalseOpsWrite() {
byte[] ba = NmraPacket.opsCvWriteByte(65, false, 21, 75);
assertFalse(NmraPacket.isAccSignalDecoderPkt(ba));
}
@Test
public void testIsAccSignalDecoderPktFalseAccDecoder() {
byte[] ba = NmraPacket.accDecoderPkt(257, true);
assertFalse(NmraPacket.isAccSignalDecoderPkt(ba));
}
@Test
public void testIsAccSignalDecoderPktFalseAccDecoderPktOpsMode() {
byte[] ba = NmraPacket.accDecoderPktOpsMode(257, 33, 5);
assertFalse(NmraPacket.isAccSignalDecoderPkt(ba));
}
@Test
public void testIsAccSignalDecoderPktFalseAccDecoderPktOpsModeLegacy() {
byte[] ba = NmraPacket.accDecoderPktOpsModeLegacy(1843, 384, 255);
assertFalse(NmraPacket.isAccSignalDecoderPkt(ba));
}
@Test
public void testIsAccDecoderPktOpsModeFalseSignalDecoderPkt() {
byte[] ba = NmraPacket.accSignalDecoderPkt(123, 12);
assertFalse(NmraPacket.isAccDecoderPktOpsMode(ba));
}
@Test
public void testIsAccDecoderPktOpsModeFalseConsist() {
byte[] ba = NmraPacket.consistControl(2065, true, 0, false);
assertFalse(NmraPacket.isAccDecoderPktOpsMode(ba));
}
@Test
public void testIsAccDecoderPktOpsModeFalseFunction() {
byte[] ba = NmraPacket.function21Through28Packet(2065, true, true, false, true, false, true, false, true, false);
assertFalse(NmraPacket.isAccDecoderPktOpsMode(ba));
}
@Test
public void testIsAccDecoderPktOpsModeFalseAnalog() {
byte[] ba = NmraPacket.analogControl(60, false, 1, 12);
assertFalse(NmraPacket.isAccDecoderPktOpsMode(ba));
}
@Test
public void testIsAccDecoderPktOpsModeFalseOpsWrite() {
byte[] ba = NmraPacket.opsCvWriteByte(65, false, 21, 75);
assertFalse(NmraPacket.isAccDecoderPktOpsMode(ba));
}
@Test
public void testIsAccDecoderPktOpsModeFalseAccDecoder() {
byte[] ba = NmraPacket.accDecoderPkt(257, true);
assertFalse(NmraPacket.isAccDecoderPktOpsMode(ba));
}
@Test
public void testIsAccDecoderPktOpsModeOK() {
byte[] ba = NmraPacket.accDecoderPktOpsMode(257, 33, 5);
assertTrue(NmraPacket.isAccDecoderPktOpsMode(ba));
}
@Test
public void testIsAccDecoderPktOpsModeFalseAccDecoderPktOpsModeLegacy() {
byte[] ba = NmraPacket.accDecoderPktOpsModeLegacy(1843, 384, 255);
assertFalse(NmraPacket.isAccDecoderPktOpsMode(ba));
}
@Test
public void testIsAccDecoderPktOpsModeLegacyFalseSignalDecoderPkt() {
byte[] ba = NmraPacket.accSignalDecoderPkt(123, 12);
assertFalse(NmraPacket.isAccDecoderPktOpsModeLegacy(ba));
}
@Test
public void testIsAccDecoderPktOpsModeLegacyFalseConsist() {
byte[] ba = NmraPacket.consistControl(2065, true, 0, false);
assertFalse(NmraPacket.isAccDecoderPktOpsModeLegacy(ba));
}
@Test
public void testIsAccDecoderPktOpsModeLegacyFalseFunction() {
byte[] ba = NmraPacket.function21Through28Packet(2065, true, true, false, true, false, true, false, true, false);
assertFalse(NmraPacket.isAccDecoderPktOpsModeLegacy(ba));
}
@Test
public void testIsAccDecoderPktOpsModeLegacyFalseAnalog() {
byte[] ba = NmraPacket.analogControl(60, false, 1, 12);
assertFalse(NmraPacket.isAccDecoderPktOpsModeLegacy(ba));
}
@Test
public void testIsAccDecoderPktOpsModeLegacyFalseOpsWrite() {
byte[] ba = NmraPacket.opsCvWriteByte(65, false, 21, 75);
assertFalse(NmraPacket.isAccDecoderPktOpsModeLegacy(ba));
}
@Test
public void testIsAccDecoderPktOpsModeLegacyFalseAccDecoder() {
byte[] ba = NmraPacket.accDecoderPkt(257, true);
assertFalse(NmraPacket.isAccDecoderPktOpsModeLegacy(ba));
}
@Test
public void testIsAccDecoderPktOpsModeLegacyFalseAccDecoderPktOpsMode() {
byte[] ba = NmraPacket.accDecoderPktOpsMode(257, 33, 5);
assertFalse(NmraPacket.isAccDecoderPktOpsModeLegacy(ba));
}
@Test
public void testIsAccDecoderPktOpsModeLegacyOK() {
byte[] ba = NmraPacket.accDecoderPktOpsModeLegacy(1843, 384, 255);
assertTrue(NmraPacket.isAccDecoderPktOpsModeLegacy(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr1() {
int addr = 1;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr2() {
int addr = 2;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr4() {
int addr = 4;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr8() {
int addr = 8;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr16() {
int addr = 16;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr32() {
int addr = 32;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr64() {
int addr = 64;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr128() {
int addr = 128;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr256() {
int addr = 256;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr512() {
int addr = 512;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr1024() {
int addr = 1024;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testGetAccSignalDecoderPktAddr2044() { // max valid value
int addr = 2044;
byte[] ba = NmraPacket.accSignalDecoderPkt(addr, 12);
assertEquals(addr, NmraPacket.getAccSignalDecoderPktAddress(ba));
}
@Test
public void testAccDecPktOpsModeLegacy1() {
int address = 1;
int cv = 29;
int data = 136;
byte[] ba = NmraPacket.accDecPktOpsModeLegacy(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 5, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x7C, ba[1] & 0xFF, "byte 1");
assertEquals( 0x1C, ba[2] & 0xFF, "byte 2");
assertEquals( 0x88, ba[3] & 0xFF, "byte 3");
assertEquals( 0x69, ba[4] & 0xFF, "byte 4");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsModeLegacy(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecPktOpsModeLegacyAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecPktOpsMode1() {
int address = 1;
int cv = 29;
int data = 136;
byte[] ba = NmraPacket.accDecPktOpsMode(address, cv, data);
// the following values based on NCE Power Pro output adjusted for CDDD=0000
assertEquals( 6, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0xF0, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x1C, ba[3] & 0xFF, "byte 3");
assertEquals( 0x88, ba[4] & 0xFF, "byte 4");
assertEquals( 0x09, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecPktOpsModeAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecPktOpsModeLegacy2() {
int address = 2;
int cv = 41;
int data = 24;
byte[] ba = NmraPacket.accDecPktOpsModeLegacy(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 5, ba.length, "length");
assertEquals( 0x82, ba[0] & 0xFF, "byte 0");
assertEquals( 0x7C, ba[1] & 0xFF, "byte 1");
assertEquals( 0x28, ba[2] & 0xFF, "byte 2");
assertEquals( 0x18, ba[3] & 0xFF, "byte 3");
assertEquals( 0xCE, ba[4] & 0xFF, "byte 4");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsModeLegacy(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecPktOpsModeLegacyAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecPktOpsMode2() {
int address = 2;
int cv = 41;
int data = 24;
byte[] ba = NmraPacket.accDecPktOpsMode(address, cv, data);
// the following values based on NCE Power Pro output adjusted for CDDD=0000
assertEquals( 6, ba.length, "length");
assertEquals( 0x82, ba[0] & 0xFF, "byte 0");
assertEquals( 0xF0, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x28, ba[3] & 0xFF, "byte 3");
assertEquals( 0x18, ba[4] & 0xFF, "byte 4");
assertEquals( 0xAE, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecPktOpsModeAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecPktOpsModeLegacy510() {
int address = 510;
int cv = 892;
int data = 135;
byte[] ba = NmraPacket.accDecPktOpsModeLegacy(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 5, ba.length, "length");
assertEquals( 0xBE, ba[0] & 0xFF, "byte 0");
assertEquals( 0x0F, ba[1] & 0xFF, "byte 1");
assertEquals( 0x7B, ba[2] & 0xFF, "byte 2");
assertEquals( 0x87, ba[3] & 0xFF, "byte 3");
assertEquals( 0x4D, ba[4] & 0xFF, "byte 4");
}
@Test
public void testAccDecPktOpsMode510() {
int address = 510;
int cv = 892;
int data = 135;
byte[] ba = NmraPacket.accDecPktOpsMode(address, cv, data);
// the following values based on NCE Power Pro output adjusted for CDDD=0000
assertEquals( 6, ba.length, "length");
assertEquals( 0xBE, ba[0] & 0xFF, "byte 0");
assertEquals( 0x80, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEF, ba[2] & 0xFF, "byte 2");
assertEquals( 0x7B, ba[3] & 0xFF, "byte 3");
assertEquals( 0x87, ba[4] & 0xFF, "byte 4");
assertEquals( 0x2D, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecPktOpsModeAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecPktOpsModeLegacy511() {
int address = 511;
int cv = 275;
int data = 198;
byte[] ba = NmraPacket.accDecPktOpsModeLegacy(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 5, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0x0D, ba[1] & 0xFF, "byte 1");
assertEquals( 0x12, ba[2] & 0xFF, "byte 2");
assertEquals( 0xC6, ba[3] & 0xFF, "byte 3");
assertEquals( 0x66, ba[4] & 0xFF, "byte 4");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsModeLegacy(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecPktOpsModeLegacyAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecPktOpsMode511() {
int address = 511;
int cv = 275;
int data = 198;
byte[] ba = NmraPacket.accDecPktOpsMode(address, cv, data);
// the following values based on NCE Power Pro output adjusted for CDDD=0000
assertEquals( 6, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0x80, ba[1] & 0xFF, "byte 1");
assertEquals( 0xED, ba[2] & 0xFF, "byte 2");
assertEquals( 0x12, ba[3] & 0xFF, "byte 3");
assertEquals( 0xC6, ba[4] & 0xFF, "byte 4");
assertEquals( 0x6, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecPktOpsModeAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecoderPktOpsModeLegacy1() {
int address = 1;
int cv = 384;
int data = 255;
byte[] ba = NmraPacket.accDecoderPktOpsModeLegacy(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 5, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x7D, ba[1] & 0xFF, "byte 1");
assertEquals( 0x7F, ba[2] & 0xFF, "byte 2");
assertEquals( 0xFF, ba[3] & 0xFF, "byte 3");
assertEquals( 0x7C, ba[4] & 0xFF, "byte 4");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsModeLegacy(ba), "verify packet type");
assertEquals( decAddr(address), NmraPacket.getAccDecoderPktOpsModeLegacyAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecoderPktOpsMode1() {
int address = 1;
int cv = 384;
int data = 255;
byte[] ba = NmraPacket.accDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0xF9, ba[1] & 0xFF, "byte 1");
assertEquals( 0xED, ba[2] & 0xFF, "byte 2");
assertEquals( 0x7F, ba[3] & 0xFF, "byte 3");
assertEquals( 0xFF, ba[4] & 0xFF, "byte 4");
assertEquals( 0x15, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecoderPktOpsModeAddress(ba), "reverse lookup of address");
}
@Test
public void testAccDecoderPktOpsModeLegacy4() {
int address = 4;
int cv = 56;
int data = 0;
byte[] ba = NmraPacket.accDecoderPktOpsModeLegacy(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 5, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x7C, ba[1] & 0xFF, "byte 1");
assertEquals( 0x37, ba[2] & 0xFF, "byte 2");
assertEquals( 0x00, ba[3] & 0xFF, "byte 3");
assertEquals( 0xCA, ba[4] & 0xFF, "byte 4");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsModeLegacy(ba), "verify packet type");
assertEquals( decAddr(address), NmraPacket.getAccDecoderPktOpsModeLegacyAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecoderPktOpsMode4() {
int address = 4;
int cv = 56;
int data = 0;
byte[] ba = NmraPacket.accDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0xFF, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x37, ba[3] & 0xFF, "byte 3");
assertEquals( 0x00, ba[4] & 0xFF, "byte 4");
assertEquals( 0xA5, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecoderPktOpsModeAddress(ba), "reverse lookup of address");
}
@Test
public void testAccDecoderPktOpsModeLegacy5() {
int address = 5;
int cv = 1;
int data = 30;
byte[] ba = NmraPacket.accDecoderPktOpsModeLegacy(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 5, ba.length, "length");
assertEquals( 0x82, ba[0] & 0xFF, "byte 0");
assertEquals( 0x7C, ba[1] & 0xFF, "byte 1");
assertEquals( 0x00, ba[2] & 0xFF, "byte 2");
assertEquals( 0x1E, ba[3] & 0xFF, "byte 3");
assertEquals( 0xE0, ba[4] & 0xFF, "byte 4");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsModeLegacy(ba), "verify packet type");
assertEquals( decAddr(address), NmraPacket.getAccDecoderPktOpsModeLegacyAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecoderPktOpsMode5() {
int address = 5;
int cv = 1;
int data = 30;
byte[] ba = NmraPacket.accDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x82, ba[0] & 0xFF, "byte 0");
assertEquals( 0xF9, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x00, ba[3] & 0xFF, "byte 3");
assertEquals( 0x1E, ba[4] & 0xFF, "byte 4");
assertEquals( 0x89, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecoderPktOpsModeAddress(ba), "reverse lookup of address");
}
@Test
public void testAccDecoderPktOpsMode252() {
int address = 252;
int cv = 999;
int data = 179;
byte[] ba = NmraPacket.accDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0xFF, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEF, ba[2] & 0xFF, "byte 2");
assertEquals( 0xE6, ba[3] & 0xFF, "byte 3");
assertEquals( 0xB3, ba[4] & 0xFF, "byte 4");
assertEquals( 0xFA, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecoderPktOpsModeAddress(ba), "reverse lookup of address");
}
@Test
public void testAccDecoderPktOpsMode253() {
int address = 253;
int cv = 1;
int data = 241;
byte[] ba = NmraPacket.accDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0xE9, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x00, ba[3] & 0xFF, "byte 3");
assertEquals( 0xF1, ba[4] & 0xFF, "byte 4");
assertEquals( 0x74, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecoderPktOpsModeAddress(ba), "reverse lookup of address");
}
@Test
public void testAccDecoderPktOpsMode256() {
int address = 256;
int cv = 55;
int data = 127;
byte[] ba = NmraPacket.accDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0xEF, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x36, ba[3] & 0xFF, "byte 3");
assertEquals( 0x7F, ba[4] & 0xFF, "byte 4");
assertEquals( 0xCA, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecoderPktOpsModeAddress(ba), "reverse lookup of address");
}
@Test
public void testAccDecoderPktOpsMode257() {
int address = 257;
int cv = 55;
int data = 99;
byte[] ba = NmraPacket.accDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0xE9, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x36, ba[3] & 0xFF, "byte 3");
assertEquals( 0x63, ba[4] & 0xFF, "byte 4");
assertEquals( 0xD1, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecoderPktOpsModeAddress(ba), "reverse lookup of address");
}
@Test
public void testAccDecoderPktOpsModeLegacy2037() {
int address = 2037;
int cv = 556;
int data = 175;
byte[] ba = NmraPacket.accDecoderPktOpsModeLegacy(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 5, ba.length, "length");
assertEquals( 0xBE, ba[0] & 0xFF, "byte 0");
assertEquals( 0x0E, ba[1] & 0xFF, "byte 1");
assertEquals( 0x2B, ba[2] & 0xFF, "byte 2");
assertEquals( 0xAF, ba[3] & 0xFF, "byte 3");
assertEquals( 0x34, ba[4] & 0xFF, "byte 4");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsModeLegacy(ba), "verify packet type");
assertEquals( decAddr(address), NmraPacket.getAccDecoderPktOpsModeLegacyAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecoderPktOpsMode2037() {
int address = 2037;
int cv = 556;
int data = 175;
byte[] ba = NmraPacket.accDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0xBE, ba[0] & 0xFF, "byte 0");
assertEquals( 0x89, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEE, ba[2] & 0xFF, "byte 2");
assertEquals( 0x2B, ba[3] & 0xFF, "byte 3");
assertEquals( 0xAF, ba[4] & 0xFF, "byte 4");
assertEquals( 0x5D, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecoderPktOpsModeAddress(ba), "reverse lookup of address");
}
@Test
public void testAccDecoderPktOpsModeLegacy2040() {
int address = 2040;
int cv = 771;
int data = 102;
byte[] ba = NmraPacket.accDecoderPktOpsModeLegacy(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 5, ba.length, "length");
assertEquals( 0xBE, ba[0] & 0xFF, "byte 0");
assertEquals( 0x0F, ba[1] & 0xFF, "byte 1");
assertEquals( 0x02, ba[2] & 0xFF, "byte 2");
assertEquals( 0x66, ba[3] & 0xFF, "byte 3");
assertEquals( 0xD5, ba[4] & 0xFF, "byte 4");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsModeLegacy(ba), "verify packet type");
assertEquals( decAddr(address), NmraPacket.getAccDecoderPktOpsModeLegacyAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecoderPktOpsMode2040() {
int address = 2040;
int cv = 771;
int data = 102;
byte[] ba = NmraPacket.accDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0xBE, ba[0] & 0xFF, "byte 0");
assertEquals( 0x8F, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEF, ba[2] & 0xFF, "byte 2");
assertEquals( 0x02, ba[3] & 0xFF, "byte 3");
assertEquals( 0x66, ba[4] & 0xFF, "byte 4");
assertEquals( 0xBA, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecoderPktOpsModeAddress(ba), "reverse lookup of address");
}
@Test
public void testAccDecoderPktOpsModeLegacy2044() {
int address = 2044;
int cv = 1024;
int data = 151;
byte[] ba = NmraPacket.accDecoderPktOpsModeLegacy(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 5, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0x0F, ba[1] & 0xFF, "byte 1");
assertEquals( 0xFF, ba[2] & 0xFF, "byte 2");
assertEquals( 0x97, ba[3] & 0xFF, "byte 3");
assertEquals( 0xD8, ba[4] & 0xFF, "byte 4");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsModeLegacy(ba), "verify packet type");
assertEquals( decAddr(address), NmraPacket.getAccDecoderPktOpsModeLegacyAddress(ba), "reverse lookup of decoder address");
}
@Test
public void testAccDecoderPktOpsMode2044() {
int address = 2044;
int cv = 1024;
int data = 151;
byte[] ba = NmraPacket.accDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0x8F, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEF, ba[2] & 0xFF, "byte 2");
assertEquals( 0xFF, ba[3] & 0xFF, "byte 3");
assertEquals( 0x97, ba[4] & 0xFF, "byte 4");
assertEquals( 0xB7, ba[5] & 0xFF, "byte 5");
// check packet type and reverse address lookup
assertTrue( NmraPacket.isAccDecoderPktOpsMode(ba), "verify packet type");
assertEquals( address, NmraPacket.getAccDecoderPktOpsModeAddress(ba), "reverse lookup of address");
}
@Test
public void testAccSignalDecoderPktOpsMode1() {
int address = 1;
int cv = 384;
int data = 255;
byte[] ba = NmraPacket.accSignalDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x71, ba[1] & 0xFF, "byte 1");
assertEquals( 0xED, ba[2] & 0xFF, "byte 2");
assertEquals( 0x7F, ba[3] & 0xFF, "byte 3");
assertEquals( 0xFF, ba[4] & 0xFF, "byte 4");
assertEquals( 0x9D, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAccSignalDecoderPktOpsMode4() {
int address = 4;
int cv = 56;
int data = 0;
byte[] ba = NmraPacket.accSignalDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x77, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x37, ba[3] & 0xFF, "byte 3");
assertEquals( 0x00, ba[4] & 0xFF, "byte 4");
assertEquals( 0x2D, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAccSignalDecoderPktOpsMode5() {
int address = 5;
int cv = 1;
int data = 30;
byte[] ba = NmraPacket.accSignalDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x82, ba[0] & 0xFF, "byte 0");
assertEquals( 0x71, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x00, ba[3] & 0xFF, "byte 3");
assertEquals( 0x1E, ba[4] & 0xFF, "byte 4");
assertEquals( 0x01, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAccSignalDecoderPktOpsMode252() {
int address = 252;
int cv = 999;
int data = 179;
byte[] ba = NmraPacket.accSignalDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0x77, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEF, ba[2] & 0xFF, "byte 2");
assertEquals( 0xE6, ba[3] & 0xFF, "byte 3");
assertEquals( 0xB3, ba[4] & 0xFF, "byte 4");
assertEquals( 0x72, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAccSignalDecoderPktOpsMode253() {
int address = 253;
int cv = 1;
int data = 241;
byte[] ba = NmraPacket.accSignalDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0x61, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x00, ba[3] & 0xFF, "byte 3");
assertEquals( 0xF1, ba[4] & 0xFF, "byte 4");
assertEquals( 0xFC, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAccSignalDecoderPktOpsMode256() {
int address = 256;
int cv = 55;
int data = 127;
byte[] ba = NmraPacket.accSignalDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0x67, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x36, ba[3] & 0xFF, "byte 3");
assertEquals( 0x7F, ba[4] & 0xFF, "byte 4");
assertEquals( 0x42, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAccSignalDecoderPktOpsMode257() {
int address = 257;
int cv = 55;
int data = 99;
byte[] ba = NmraPacket.accSignalDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x61, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x36, ba[3] & 0xFF, "byte 3");
assertEquals( 0x63, ba[4] & 0xFF, "byte 4");
assertEquals( 0x59, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAccSignalDecoderPktOpsMode2037() {
int address = 2037;
int cv = 556;
int data = 175;
byte[] ba = NmraPacket.accSignalDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0xBE, ba[0] & 0xFF, "byte 0");
assertEquals( 0x01, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEE, ba[2] & 0xFF, "byte 2");
assertEquals( 0x2B, ba[3] & 0xFF, "byte 3");
assertEquals( 0xAF, ba[4] & 0xFF, "byte 4");
assertEquals( 0xD5, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAccSignalDecoderPktOpsMode2040() {
int address = 2040;
int cv = 771;
int data = 102;
byte[] ba = NmraPacket.accSignalDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0xBE, ba[0] & 0xFF, "byte 0");
assertEquals( 0x07, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEF, ba[2] & 0xFF, "byte 2");
assertEquals( 0x02, ba[3] & 0xFF, "byte 3");
assertEquals( 0x66, ba[4] & 0xFF, "byte 4");
assertEquals( 0x32, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAccSignalDecoderPktOpsMode2044() {
int address = 2044;
int cv = 1024;
int data = 151;
byte[] ba = NmraPacket.accSignalDecoderPktOpsMode(address, cv, data);
// the following values validated against NCE Power Pro output
assertEquals( 6, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0x07, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEF, ba[2] & 0xFF, "byte 2");
assertEquals( 0xFF, ba[3] & 0xFF, "byte 3");
assertEquals( 0x97, ba[4] & 0xFF, "byte 4");
assertEquals( 0x3F, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAccSignalDecoderPkt1Aspect23() {
int address = 1;
int aspect = 23;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x71, ba[1] & 0xFF, "byte 1");
assertEquals( 0x17, ba[2] & 0xFF, "byte 2");
assertEquals( 0xE7, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt2Aspect5() {
int address = 2;
int aspect = 5;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x73, ba[1] & 0xFF, "byte 1");
assertEquals( 0x05, ba[2] & 0xFF, "byte 2");
assertEquals( 0xF7, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt3Aspect9() {
int address = 3;
int aspect = 9;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x75, ba[1] & 0xFF, "byte 1");
assertEquals( 0x09, ba[2] & 0xFF, "byte 2");
assertEquals( 0xFD, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt4Aspect11() {
int address = 4;
int aspect = 11;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x77, ba[1] & 0xFF, "byte 1");
assertEquals( 0x0B, ba[2] & 0xFF, "byte 2");
assertEquals( 0xFD, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt5Aspect15() {
int address = 5;
int aspect = 15;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x82, ba[0] & 0xFF, "byte 0");
assertEquals( 0x71, ba[1] & 0xFF, "byte 1");
assertEquals( 0x0F, ba[2] & 0xFF, "byte 2");
assertEquals( 0xFC, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt6Aspect28() {
int address = 6;
int aspect = 28;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x82, ba[0] & 0xFF, "byte 0");
assertEquals( 0x73, ba[1] & 0xFF, "byte 1");
assertEquals( 0x1C, ba[2] & 0xFF, "byte 2");
assertEquals( 0xED, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt7Aspect10() {
int address = 7;
int aspect = 10;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x82, ba[0] & 0xFF, "byte 0");
assertEquals( 0x75, ba[1] & 0xFF, "byte 1");
assertEquals( 0x0A, ba[2] & 0xFF, "byte 2");
assertEquals( 0xFD, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt8Aspect11() {
int address = 8;
int aspect = 11;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x82, ba[0] & 0xFF, "byte 0");
assertEquals( 0x77, ba[1] & 0xFF, "byte 1");
assertEquals( 0x0B, ba[2] & 0xFF, "byte 2");
assertEquals( 0xFE, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt252Aspect13() {
int address = 252;
int aspect = 13;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0x77, ba[1] & 0xFF, "byte 1");
assertEquals( 0x0D, ba[2] & 0xFF, "byte 2");
assertEquals( 0xC5, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt253Aspect19() {
int address = 253;
int aspect = 19;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0x61, ba[1] & 0xFF, "byte 1");
assertEquals( 0x13, ba[2] & 0xFF, "byte 2");
assertEquals( 0xF2, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt254Aspect2() {
int address = 254;
int aspect = 2;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0x63, ba[1] & 0xFF, "byte 1");
assertEquals( 0x02, ba[2] & 0xFF, "byte 2");
assertEquals( 0xE1, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt255Aspect3() {
int address = 255;
int aspect = 3;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0x65, ba[1] & 0xFF, "byte 1");
assertEquals( 0x3, ba[2] & 0xFF, "byte 2");
assertEquals( 0xE6, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt256Aspect7() {
int address = 256;
int aspect = 7;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0x67, ba[1] & 0xFF, "byte 1");
assertEquals( 0x07, ba[2] & 0xFF, "byte 2");
assertEquals( 0xE0, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt2044Aspect0() {
int address = 2044;
int aspect = 0;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0x07, ba[1] & 0xFF, "byte 1");
assertEquals( 0x00, ba[2] & 0xFF, "byte 2");
assertEquals( 0xB8, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAccSignalDecoderPkt2044Aspect31() {
int address = 2044;
int aspect = 31;
byte[] ba = NmraPacket.accSignalDecoderPkt(address, aspect);
// the following values validated against NCE Power Pro output
assertEquals( 4, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0x07, ba[1] & 0xFF, "byte 1");
assertEquals( 0x1F, ba[2] & 0xFF, "byte 2");
assertEquals( 0xA7, ba[3] & 0xFF, "byte 3");
}
@Test
public void testAltAccSignalDecoderPktOpsMode1() {
int address = 1;
int cv = 384;
int data = 255;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0x71, ba[1] & 0xFF, "byte 1");
assertEquals( 0xED, ba[2] & 0xFF, "byte 2");
assertEquals( 0x7F, ba[3] & 0xFF, "byte 3");
assertEquals( 0xFF, ba[4] & 0xFF, "byte 4");
assertEquals( 0x9C, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAltAccSignalDecoderPktOpsMode4() {
int address = 4;
int cv = 384;
int data = 255;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0x77, ba[1] & 0xFF, "byte 0");
assertEquals( 0xED, ba[2] & 0xFF, "byte 1");
assertEquals( 0x7F, ba[3] & 0xFF, "byte 2");
assertEquals( 0xFF, ba[4] & 0xFF, "byte 3");
assertEquals( 0x9A, ba[5] & 0xFF, "byte 4");
}
@Test
public void testAltAccSignalDecoderPktOpsMode5() {
int address = 5;
int cv = 384;
int data = 255;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x71, ba[1] & 0xFF, "byte 1");
assertEquals( 0xED, ba[2] & 0xFF, "byte 2");
assertEquals( 0x7F, ba[3] & 0xFF, "byte 3");
assertEquals( 0xFF, ba[4] & 0xFF, "byte 4");
assertEquals( 0x9D, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAltAccSignalDecoderPktOpsMode8() {
int address = 8;
int cv = 56;
int data = 0;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF,"byte 0");
assertEquals( 0x77, ba[1] & 0xFF,"byte 1");
assertEquals( 0xEC, ba[2] & 0xFF,"byte 2");
assertEquals( 0x37, ba[3] & 0xFF,"byte 3");
assertEquals( 0x00, ba[4] & 0xFF,"byte 4");
assertEquals( 0x2D, ba[5] & 0xFF,"byte 5");
}
@Test
public void testAltAccSignalDecoderPktOpsMode9() {
int address = 9;
int cv = 1;
int data = 30;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0x82, ba[0] & 0xFF, "byte 0");
assertEquals( 0x71, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x00, ba[3] & 0xFF, "byte 3");
assertEquals( 0x1E, ba[4] & 0xFF, "byte 4");
assertEquals( 0x01, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAltAccSignalDecoderPktOpsMode256() {
int address = 256;
int cv = 999;
int data = 179;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0xBF, ba[0] & 0xFF, "byte 0");
assertEquals( 0x77, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEF, ba[2] & 0xFF, "byte 2");
assertEquals( 0xE6, ba[3] & 0xFF, "byte 3");
assertEquals( 0xB3, ba[4] & 0xFF, "byte 4");
assertEquals( 0x72, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAltAccSignalDecoderPktOpsMode257() {
int address = 257;
int cv = 1;
int data = 241;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0x61, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x00, ba[3] & 0xFF, "byte 3");
assertEquals( 0xF1, ba[4] & 0xFF, "byte 4");
assertEquals( 0xFC, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAltAccSignalDecoderPktOpsMode260() {
int address = 260;
int cv = 55;
int data = 127;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0x80, ba[0] & 0xFF, "byte 0");
assertEquals( 0x67, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x36, ba[3] & 0xFF, "byte 3");
assertEquals( 0x7F, ba[4] & 0xFF, "byte 4");
assertEquals( 0x42, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAltAccSignalDecoderPktOpsMode261() {
int address = 261;
int cv = 55;
int data = 99;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0x81, ba[0] & 0xFF, "byte 0");
assertEquals( 0x61, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEC, ba[2] & 0xFF, "byte 2");
assertEquals( 0x36, ba[3] & 0xFF, "byte 3");
assertEquals( 0x63, ba[4] & 0xFF, "byte 4");
assertEquals( 0x59, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAltAccSignalDecoderPktOpsMode2041() {
int address = 2041;
int cv = 556;
int data = 175;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0xBE, ba[0] & 0xFF, "byte 0");
assertEquals( 0x01, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEE, ba[2] & 0xFF, "byte 2");
assertEquals( 0x2B, ba[3] & 0xFF, "byte 3");
assertEquals( 0xAF, ba[4] & 0xFF, "byte 4");
assertEquals( 0xD5, ba[5] & 0xFF, "byte 5");
}
@Test
public void testAltAccSignalDecoderPktOpsMode2044() {
int address = 2044;
int cv = 771;
int data = 102;
byte[] ba = NmraPacket.altAccSignalDecoderPktOpsMode(address, cv, data);
assertEquals( 6, ba.length, "length");
assertEquals( 0xBE, ba[0] & 0xFF, "byte 0");
assertEquals( 0x07, ba[1] & 0xFF, "byte 1");
assertEquals( 0xEF, ba[2] & 0xFF, "byte 2");
assertEquals( 0x02, ba[3] & 0xFF, "byte 3");
assertEquals( 0x66, ba[4] & 0xFF, "byte 4");
assertEquals( 0x32, ba[5] & 0xFF, "byte 5");
}
@Test
public void testExtractAddressTypeAcc() {
byte[] ba = NmraPacket.accSignalDecoderPkt(123, 12);
assertEquals( NmraPacket.DccAddressType.ACCESSORY_ADDRESS, NmraPacket.extractAddressType(ba), "Accessory");
}
@Test
public void testExtractAddressTypeShort() {
byte[] bs = NmraPacket.function13Through20Packet(60, false, true, false, true, false, true, false, true, false);
assertEquals( NmraPacket.DccAddressType.LOCO_SHORT_ADDRESS, NmraPacket.extractAddressType(bs), "Short Loco");
}
@Test
public void testExtractAddressTypeLong() {
byte[] bl = NmraPacket.function13Through20Packet(2060, true, true, false, true, false, true, false, true, false);
assertEquals( NmraPacket.DccAddressType.LOCO_LONG_ADDRESS, NmraPacket.extractAddressType(bl), "Long Loco");
}
@Test
public void testExtractAddressNumberAccSignal1() {
byte[] ba = NmraPacket.accSignalDecoderPkt(1, 12);
NmraPacket.extractAddressNumber(ba);
assertEquals(1, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAccSignal2() {
byte[] ba = NmraPacket.accSignalDecoderPkt(2, 12);
NmraPacket.extractAddressNumber(ba);
assertEquals(2, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAccSignal4() {
byte[] ba = NmraPacket.accSignalDecoderPkt(4, 12);
NmraPacket.extractAddressNumber(ba);
assertEquals(4, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAccSignal8() {
byte[] ba = NmraPacket.accSignalDecoderPkt(8, 12);
NmraPacket.extractAddressNumber(ba);
assertEquals(8, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAccSignal16() {
byte[] ba = NmraPacket.accSignalDecoderPkt(16, 12);
NmraPacket.extractAddressNumber(ba);
assertEquals(16, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAccSignal32() {
byte[] ba = NmraPacket.accSignalDecoderPkt(32, 12);
NmraPacket.extractAddressNumber(ba);
assertEquals(32, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAccSignal64() {
byte[] ba = NmraPacket.accSignalDecoderPkt(64, 12);
NmraPacket.extractAddressNumber(ba);
assertEquals(64, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAccSignal128() {
byte[] ba = NmraPacket.accSignalDecoderPkt(128, 12);
NmraPacket.extractAddressNumber(ba);
assertEquals(128, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAccSignal256() {
byte[] ba = NmraPacket.accSignalDecoderPkt(256, 12);
NmraPacket.extractAddressNumber(ba);
assertEquals(256, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAcc1() {
byte[] ba = NmraPacket.accDecoderPkt(1, true);
NmraPacket.extractAddressNumber(ba);
assertEquals(1, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAcc2() {
byte[] ba = NmraPacket.accDecoderPkt(2, true);
NmraPacket.extractAddressNumber(ba);
assertEquals(2, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAcc4() {
byte[] ba = NmraPacket.accDecoderPkt(4, true);
NmraPacket.extractAddressNumber(ba);
assertEquals(4, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAcc8() {
byte[] ba = NmraPacket.accDecoderPkt(8, true);
NmraPacket.extractAddressNumber(ba);
assertEquals(8, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAcc16() {
byte[] ba = NmraPacket.accDecoderPkt(16, true);
NmraPacket.extractAddressNumber(ba);
assertEquals(16, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAcc32() {
byte[] ba = NmraPacket.accDecoderPkt(32, true);
NmraPacket.extractAddressNumber(ba);
assertEquals(32, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAcc64() {
byte[] ba = NmraPacket.accDecoderPkt(64, true);
NmraPacket.extractAddressNumber(ba);
assertEquals(64, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAcc128() {
byte[] ba = NmraPacket.accDecoderPkt(128, true);
NmraPacket.extractAddressNumber(ba);
assertEquals(128, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAcc256() {
byte[] ba = NmraPacket.accDecoderPkt(256, true);
NmraPacket.extractAddressNumber(ba);
assertEquals(256, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberAcc512() {
byte[] ba = NmraPacket.accDecoderPkt(512, true);
NmraPacket.extractAddressNumber(ba);
assertEquals(512, NmraPacket.extractAddressNumber(ba));
}
@Test
public void testExtractAddressNumberShort() {
byte[] bs = NmraPacket.function13Through20Packet(60, false, true, false, true, false, true, false, true, false);
assertEquals( 60, NmraPacket.extractAddressNumber(bs), "Short Loco");
}
@Test
public void testExtractAddressNumberLong() {
byte[] bl = NmraPacket.function13Through20Packet(2060, true, true, false, true, false, true, false, true, false);
assertEquals( 2060, NmraPacket.extractAddressNumber(bl), "Long Loco");
}
/**
* Test the 28 speed step forward throttle Note that this has not been
* independently verified
*/
@Test
public void testSpeedStep28PacketOld() {
int address = 100;
// results for speed steps 0-28 when forward
byte[][] speeds = {
{-64, 100, 96, -60}, // 0
{-64, 100, 113, -43}, // 1
{-64, 100, 98, -58}, // 2
{-64, 100, 114, -42}, // 3
{-64, 100, 99, -57}, // 4
{-64, 100, 115, -41}, // 5
{-64, 100, 100, -64}, // 6
{-64, 100, 116, -48}, // 7
{-64, 100, 101, -63}, // 8
{-64, 100, 117, -47}, // 9
{-64, 100, 102, -62}, // 10
{-64, 100, 118, -46}, // 11
{-64, 100, 103, -61}, // 12
{-64, 100, 119, -45}, // 13
{-64, 100, 104, -52}, // 14
{-64, 100, 120, -36}, // 15
{-64, 100, 105, -51}, // 16
{-64, 100, 121, -35}, // 17
{-64, 100, 106, -50}, // 18
{-64, 100, 122, -34}, // 19
{-64, 100, 107, -49}, // 20
{-64, 100, 123, -33}, // 21
{-64, 100, 108, -56}, // 22
{-64, 100, 124, -40}, // 23
{-64, 100, 109, -55}, // 24
{-64, 100, 125, -39}, // 25
{-64, 100, 110, -54}, // 26
{-64, 100, 126, -38}, // 27
{-64, 100, 111, -53} // 28
};
for (int speed = 0; speed < 29; speed++) {
byte[] packet = NmraPacket.speedStep28Packet(address, true, speed, true);
assertNotNull(packet);
assertArrayEquals( speeds[speed], packet, "Speed step " + speed);
}
// invalid inputs should result in null output
assertNull( NmraPacket.speedStep28Packet(address, true, -1, true), "Speed step -1");
JUnitAppender.assertErrorMessage("invalid speed -1");
assertNull( NmraPacket.speedStep28Packet(address, true, 29, true), "Speed step 29");
JUnitAppender.assertErrorMessage("invalid speed 29");
}
/**
* Test the 28 speed step forward throttle Note that this has not been
* independently verified
*/
@Test
public void testSpeedStep28Packet() {
int address = 100;
// results for speed steps 0-31 when forward
byte[][] forward = {
{-64, 100, 96, -60}, // 0
{-64, 100, 112, -44}, // 1
{-64, 100, 97, -59}, // 2
{-64, 100, 113, -43}, // 3
{-64, 100, 98, -58}, // 4
{-64, 100, 114, -42}, // 5
{-64, 100, 99, -57}, // 6
{-64, 100, 115, -41}, // 7
{-64, 100, 100, -64}, // 8
{-64, 100, 116, -48}, // 9
{-64, 100, 101, -63}, // 10
{-64, 100, 117, -47}, // 11
{-64, 100, 102, -62}, // 12
{-64, 100, 118, -46}, // 13
{-64, 100, 103, -61}, // 14
{-64, 100, 119, -45}, // 15
{-64, 100, 104, -52}, // 16
{-64, 100, 120, -36}, // 17
{-64, 100, 105, -51}, // 18
{-64, 100, 121, -35}, // 19
{-64, 100, 106, -50}, // 20
{-64, 100, 122, -34}, // 21
{-64, 100, 107, -49}, // 22
{-64, 100, 123, -33}, // 23
{-64, 100, 108, -56}, // 24
{-64, 100, 124, -40}, // 25
{-64, 100, 109, -55}, // 26
{-64, 100, 125, -39}, // 27
{-64, 100, 110, -54}, // 28
{-64, 100, 126, -38}, // 29
{-64, 100, 111, -53}, // 30
{-64, 100, 127, -37} // 31
};
for (int speed = 0; speed < 32; speed++) {
byte[] packet = NmraPacket.speedStep28Packet(true, address, true, speed, true);
assertNotNull(packet);
assertArrayEquals( forward[speed], packet, "Speed step " + speed);
}
// results for speed steps 0-31 when reversed
byte[][] reverse = {
{-64, 100, 64, -28}, // 0
{-64, 100, 80, -12}, // 1
{-64, 100, 65, -27}, // 2
{-64, 100, 81, -11}, // 3
{-64, 100, 66, -26}, // 4
{-64, 100, 82, -10}, // 5
{-64, 100, 67, -25}, // 6
{-64, 100, 83, -9}, // 7
{-64, 100, 68, -32}, // 8
{-64, 100, 84, -16}, // 9
{-64, 100, 69, -31}, // 10
{-64, 100, 85, -15}, // 11
{-64, 100, 70, -30}, // 12
{-64, 100, 86, -14}, // 13
{-64, 100, 71, -29}, // 14
{-64, 100, 87, -13}, // 15
{-64, 100, 72, -20}, // 16
{-64, 100, 88, -4}, // 17
{-64, 100, 73, -19}, // 18
{-64, 100, 89, -3}, // 19
{-64, 100, 74, -18}, // 20
{-64, 100, 90, -2}, // 21
{-64, 100, 75, -17}, // 22
{-64, 100, 91, -1}, // 23
{-64, 100, 76, -24}, // 24
{-64, 100, 92, -8}, // 25
{-64, 100, 77, -23}, // 26
{-64, 100, 93, -7}, // 27
{-64, 100, 78, -22}, // 28
{-64, 100, 94, -6}, // 29
{-64, 100, 79, -21}, // 30
{-64, 100, 95, -5} // 31
};
for (int speed = 0; speed < 32; speed++) {
byte[] packet = NmraPacket.speedStep28Packet(true, address, true, speed, false);
assertNotNull(packet);
assertArrayEquals( reverse[speed], packet, "Speed step " + speed);
}
// invalid inputs should result in null output
assertNull( NmraPacket.speedStep28Packet(true, address, true, -1, true), "Speed step -1");
JUnitAppender.assertErrorMessage("invalid speed -1");
assertNull( NmraPacket.speedStep28Packet(true, address, true, 32, true), "Speed step 32");
JUnitAppender.assertErrorMessage("invalid speed 32");
}
@Test
public void testToStringNoPacket() {
boolean thrown = false;
try {
NmraPacket.toString(new byte[]{});
} catch (IllegalArgumentException e) {
thrown = true;
}
assertTrue(thrown);
}
@Test
public void testToStringShortLocoPacket() {
// short address function set
String display = NmraPacket.toString(new byte[]{(byte) 0x3C, (byte) 0xDE, (byte) 0x55, (byte) 00});
assertEquals("LOCO_SHORT_ADDRESS type: 222 to addr 60", display);
}
@Test
public void testToStringAccessoryPacket1() {
String display = NmraPacket.toString(NmraPacket.accDecoderPkt(1, true));
assertEquals("ACCESSORY_ADDRESS type: 120 to addr 1", display);
}
@Test
public void testToStringAccessoryPacket257() {
String display = NmraPacket.toString(NmraPacket.accDecoderPkt(257, true));
assertEquals("ACCESSORY_ADDRESS type: 104 to addr 257", display);
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
private static int decAddr(int accyAddr) {
return (((accyAddr - 1) >> 2) << 2) + 1;
}
}