package jmri.jmrix.can.cbus; import jmri.jmrix.can.CanSystemConnectionMemo; import jmri.jmrix.can.TrafficControllerScaffold; import jmri.util.JUnitUtil; import org.junit.Assert; import org.junit.jupiter.api.*; /** * * @author Paul Bender Copyright (C) 2017 * @author Steve Young Copyright (c) 2019 * testSendPacket modified from LocoNet SlotManagerTest */ public class CbusCommandStationTest { private CbusCommandStation t = null; private CanSystemConnectionMemo memo = null; private TrafficControllerScaffold lnis = null; @Test public void testCtor() { Assert.assertNotNull("exists",t); } @Test public void testgetCanSystemPrefix() { Assert.assertNotNull(t); Assert.assertEquals("sys prefix", "M", t.getSystemPrefix()); } @Test public void testgetCanUserName() { Assert.assertNotNull(t); Assert.assertEquals("user name obtainable", "CAN", t.getUserName()); } // test originates from loconet @Test public void testSendPacket() { Assert.assertNotNull(t); Assert.assertNotNull(lnis); byte msg[] = jmri.NmraPacket.accDecPktOpsMode(1, 4, 53); t.sendPacket(msg, 1); Assert.assertEquals("nmra packet 1", "[78] E0 01 81 F0 EC 03 35 AB", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accDecPktOpsMode(128, 4, 53); t.sendPacket(msg, 2); Assert.assertEquals("nmra packet 2", "[78] E0 02 80 D0 EC 03 35 8A", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg= jmri.NmraPacket.accDecPktOpsMode(256, 4, 53); t.sendPacket(msg, 3); Assert.assertEquals("nmra packet 3", "[78] E0 03 80 B0 EC 03 35 EA", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accDecPktOpsMode(1, 37, 53); t.sendPacket(msg, 4); Assert.assertEquals("nmra packet 4", "[78] E0 04 81 F0 EC 24 35 8C", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accDecPktOpsMode(1, 129, 53); t.sendPacket(msg, 5); Assert.assertEquals("nmra packet 5", "[78] E0 05 81 F0 EC 80 35 28", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accDecPktOpsMode(1, 10, 0); t.sendPacket(msg, 6); Assert.assertEquals("nmra packet 6", "[78] E0 06 81 F0 EC 09 00 94", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accDecPktOpsMode(1, 10, 128); t.sendPacket(msg, 7); Assert.assertEquals("nmra packet 7", "[78] E0 07 81 F0 EC 09 80 14", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accDecPktOpsMode(1, 10, 255); t.sendPacket(msg, 8); Assert.assertEquals("nmra packet 8", "[78] E0 08 81 F0 EC 09 FF 6B", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accDecPktOpsMode(511, 255, 0); t.sendPacket(msg, 9); jmri.util.JUnitAppender.assertWarnMessage("Ops Mode Accessory Packet 'Send count' reduced to 8."); Assert.assertEquals("nmra packet 9", "[78] E0 08 BF 80 EC FE 00 2D", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(1, 31); t.sendPacket(msg, 0); jmri.util.JUnitAppender.assertWarnMessage("Ops Mode Accessory Packet 'Send count' of < 1 is illegal and is forced to 1."); Assert.assertEquals("nmra packet 10", "[78] A0 01 81 71 1F EF", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(2, 30); t.sendPacket(msg, -1); jmri.util.JUnitAppender.assertWarnMessage("Ops Mode Accessory Packet 'Send count' of < 1 is illegal and is forced to 1."); Assert.assertEquals("nmra packet 11", "[78] A0 01 81 73 1E EC", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(4, 29); t.sendPacket(msg, 3); Assert.assertEquals("nmra packet 12", "[78] A0 03 81 77 1D EB", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(8, 27); t.sendPacket(msg, 2); Assert.assertEquals("nmra packet 13", "[78] A0 02 82 77 1B EE", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(16, 23); t.sendPacket(msg, 2); Assert.assertEquals("nmra packet 14", "[78] A0 02 84 77 17 E4", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(32, 15); t.sendPacket(msg, 2); Assert.assertEquals("nmra packet 15", "[78] A0 02 88 77 0F F0", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(64, 1); t.sendPacket(msg, 2); Assert.assertEquals("nmra packet 16", "[78] A0 02 90 77 01 E6", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(128, 0); t.sendPacket(msg, 2); Assert.assertEquals("nmra packet 17", "[78] A0 02 A0 77 00 D7", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(256, 2); t.sendPacket(msg, 2); Assert.assertEquals("nmra packet 18", "[78] A0 02 80 67 02 E5", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(512, 4); t.sendPacket(msg, 2); Assert.assertEquals("nmra packet 19", "[78] A0 02 80 57 04 D3", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(1024, 8); t.sendPacket(msg, 2); Assert.assertEquals("nmra packet 20", "[78] A0 02 80 37 08 BF", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); msg = jmri.NmraPacket.accSignalDecoderPkt(511, 16); t.sendPacket(msg, 2); Assert.assertEquals("nmra packet 21", "[78] A0 02 80 55 10 C5", lnis.outbound.elementAt(lnis.outbound.size() - 1).toString()); } @BeforeEach public void setUp() { JUnitUtil.setUp(); lnis = new TrafficControllerScaffold(); memo = new CanSystemConnectionMemo(); memo.setTrafficController(lnis); t = new CbusCommandStation(memo); } @AfterEach public void tearDown() { Assertions.assertNotNull(lnis); lnis.terminateThreads(); lnis = null; Assertions.assertNotNull(memo); memo.dispose(); memo = null; t = null; JUnitUtil.tearDown(); } // private static final org.slf4j.Logger.Logger log = org.slf4j.Logger.LoggerFactory.getLogger(CbusCommandStationTest.class); }