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

197 lines
6.1 KiB
Java

package jmri.implementation;
import static org.junit.jupiter.api.Assertions.assertEquals;
import jmri.CommandStation;
import jmri.InstanceManager;
import jmri.SignalHead;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
/**
* Tests for the DccSignalHead implementation
*
* @author Bob Jacobsen Copyright (C) 2013
*/
public class DccSignalHeadTest extends AbstractSignalHeadTestBase {
@Test
public void testDccSignalHeadCtor1() {
DccSignalHead s = new DccSignalHead("IH$1");
assertEquals( "IH$1", s.getSystemName(), "system name");
assertEquals( 0, sentPacketCount, "Send count");
}
@Test
public void testRedAppearance() {
DccSignalHead s = new DccSignalHead("IH$1");
s.setAppearance(SignalHead.RED);
assertEquals( 1, sentPacketCount, "Send count");
assertEquals( 4, lastSentPacket.length, "Packet length");
assertEquals( 0x80, lastSentPacket[0] & 0xFF, "Packet byte 0");
assertEquals( 0x71, lastSentPacket[1] & 0xFF, "Packet byte 1");
assertEquals( 0x00, lastSentPacket[2] & 0xFF, "Packet byte 2");
}
@Test
public void testDarkAppearance() {
DccSignalHead s = new DccSignalHead("IH$1");
s.setAppearance(SignalHead.RED); // Default is DARK
s.setAppearance(SignalHead.DARK);
assertEquals( 2, sentPacketCount, "Send count");
assertEquals( 4, lastSentPacket.length, "Packet length");
assertEquals( 0x80, lastSentPacket[0] & 0xFF, "Packet byte 0");
assertEquals( 0x71, lastSentPacket[1] & 0xFF, "Packet byte 1");
assertEquals( 0x08, lastSentPacket[2] & 0xFF, "Packet byte 2");
}
@Test
public void testLunarAppearance() {
DccSignalHead s = new DccSignalHead("IH$1");
s.setAppearance(SignalHead.LUNAR);
assertEquals( 1, sentPacketCount, "Send count");
assertEquals( 4, lastSentPacket.length, "Packet length");
assertEquals( 0x80, lastSentPacket[0] & 0xFF, "Packet byte 0");
assertEquals( 0x71, lastSentPacket[1] & 0xFF, "Packet byte 1");
assertEquals( 0x03, lastSentPacket[2] & 0xFF, "Packet byte 2");
}
@Test
public void testYellowAppearance() {
DccSignalHead s = new DccSignalHead("IH$1");
s.setAppearance(SignalHead.YELLOW);
assertEquals( 1, sentPacketCount, "Send count");
assertEquals( 4, lastSentPacket.length, "Packet length");
assertEquals( 0x80, lastSentPacket[0] & 0xFF, "Packet byte 0");
assertEquals( 0x71, lastSentPacket[1] & 0xFF, "Packet byte 1");
assertEquals( 0x01, lastSentPacket[2] & 0xFF, "Packet byte 2");
}
@Test
public void testGreenAppearance() {
DccSignalHead s = new DccSignalHead("IH$1");
s.setAppearance(SignalHead.GREEN);
assertEquals( 1, sentPacketCount, "Send count");
assertEquals( 4, lastSentPacket.length, "Packet length");
assertEquals( 0x80, lastSentPacket[0] & 0xFF, "Packet byte 0");
assertEquals( 0x71, lastSentPacket[1] & 0xFF, "Packet byte 1");
assertEquals( 0x02, lastSentPacket[2] & 0xFF, "Packet byte 2");
}
@Test
public void testFlashRedAppearance() {
DccSignalHead s = new DccSignalHead("IH$1");
s.setAppearance(SignalHead.FLASHRED);
assertEquals( 1, sentPacketCount, "Send count");
assertEquals( 4, lastSentPacket.length, "Packet length");
assertEquals( 0x80, lastSentPacket[0] & 0xFF, "Packet byte 0");
assertEquals( 0x71, lastSentPacket[1] & 0xFF, "Packet byte 1");
assertEquals( 0x04, lastSentPacket[2] & 0xFF, "Packet byte 2");
}
@Test
public void testFlashLunarAppearance() {
DccSignalHead s = new DccSignalHead("IH$1");
s.setAppearance(SignalHead.FLASHLUNAR);
assertEquals( 1, sentPacketCount, "Send count");
assertEquals( 4, lastSentPacket.length, "Packet length");
assertEquals( 0x80, lastSentPacket[0] & 0xFF, "Packet byte 0");
assertEquals( 0x71, lastSentPacket[1] & 0xFF, "Packet byte 1");
assertEquals( 0x07, lastSentPacket[2] & 0xFF, "Packet byte 2");
}
@Test
public void testFlashYellowAppearance() {
DccSignalHead s = new DccSignalHead("IH$1");
s.setAppearance(SignalHead.FLASHYELLOW);
assertEquals( 1, sentPacketCount, "Send count");
assertEquals( 4, lastSentPacket.length, "Packet length");
assertEquals( 0x80, lastSentPacket[0] & 0xFF, "Packet byte 0");
assertEquals( 0x71, lastSentPacket[1] & 0xFF, "Packet byte 1");
assertEquals( 0x05, lastSentPacket[2] & 0xFF, "Packet byte 2");
}
@Test
public void testFlashGreenAppearance() {
DccSignalHead s = new DccSignalHead("IH$1");
s.setAppearance(SignalHead.FLASHGREEN);
assertEquals( 1, sentPacketCount, "Send count");
assertEquals( 4, lastSentPacket.length, "Packet length");
assertEquals( 0x80, lastSentPacket[0] & 0xFF, "Packet byte 0");
assertEquals( 0x71, lastSentPacket[1] & 0xFF, "Packet byte 1");
assertEquals( 0x06, lastSentPacket[2] & 0xFF, "Packet byte 2");
}
// from here down is testing infrastructure
@Override
public SignalHead getHeadToTest() {
return new DccSignalHead("IH$1");
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
JUnitUtil.initInternalTurnoutManager();
CommandStation c = new CommandStation() {
@Override
public boolean sendPacket(byte[] packet, int repeats) {
lastSentPacket = packet;
sentPacketCount++;
return true;
}
@Override
public String getUserName() {
return null;
}
@Override
public String getSystemPrefix() {
return "I";
}
};
InstanceManager.store(c, CommandStation.class);
lastSentPacket = null;
sentPacketCount = 0;
}
private byte[] lastSentPacket;
private int sentPacketCount;
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
}