197 lines
6.1 KiB
Java
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();
|
|
}
|
|
}
|