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

220 lines
7.7 KiB
Java

package jmri.implementation;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Calendar;
import java.util.Date;
import jmri.*;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
/**
* Tests for the DefaultRailCom class
*
* @author Matthew Harris Copyright (C) 2011
*/
public class DefaultRailComTest {
@Test
public void testCreateRailCom() {
RailCom r = new DefaultRailCom("ID1234");
assertNotNull( r, "RailCom not null");
}
@Test
public void testGetRailComUserName() {
RailCom r = new DefaultRailCom("ID1234", "Test Tag");
assertEquals( "Test Tag", r.getUserName(), "RailCom user name is 'Test Tag'");
}
@Test
public void testGetRailComTagID() {
RailCom r = new DefaultRailCom("ID1234");
assertEquals( "1234", r.getTagID(), "RailCom TagID is 1234");
}
@Test
public void testRailComGetLocoAddress() {
RailCom r = new DefaultRailCom("ID1234");
assertEquals( new jmri.DccLocoAddress(1234,true), r.getLocoAddress(), "Loco Address");
}
@Test
public void testRailComToString() {
RailCom r = new DefaultRailCom("ID1234");
assertEquals( "ID1234", r.toString(), "RailCom toString ");
}
@Test
public void testRailComToReportString() {
DefaultRailCom r = new DefaultRailCom("ID1234");
assertEquals( "Address 1234(L) Unknown Orientation ", r.toReportString(), "RailCom toReportString");
}
@Test
public void testNotYetSeen() {
RailCom r = new DefaultRailCom("ID0413276BC1");
assertNull( r.getWhereLastSeen(), "At creation, Reporter where seen is null");
assertNull( r.getWhenLastSeen(), "At creation, Date when seen is null");
assertEquals( RailCom.UNSEEN, r.getState(), "At creation, RailCom status is UNSEEN");
r.setWhereLastSeen(null);
assertNull( r.getWhereLastSeen(), "After setWhereLastSeen(null), Reporter where seen is null");
assertNull( r.getWhenLastSeen(), "After setWhereLastSeen(null), Date when seen is null");
assertEquals( RailCom.UNSEEN, r.getState(), "After setWhereLastSeen(null), RailCom status is UNSEEN");
}
@Test
public void testHasBeenSeen() throws InterruptedException {
RailCom r = new DefaultRailCom("ID0413276BC1");
Reporter rep = new AbstractReporter("IR1") {
@Override
public int getState() {
return state;
}
@Override
public void setState(int s) {
state = s;
}
private int state = 0;
};
Date timeBefore = Calendar.getInstance().getTime();
JUnitUtil.waitFor(5);
r.setWhereLastSeen(rep);
JUnitUtil.waitFor(5);
Date timeAfter = Calendar.getInstance().getTime();
assertEquals( rep, r.getWhereLastSeen(), "Where last seen is 'IR1'");
Date date = r.getWhenLastSeen();
assertNotNull( date, "When last seen is not null");
assertEquals( RailCom.SEEN, r.getState(), "Status is SEEN");
assertTrue( date.after(timeBefore), "Time when last seen is later than 'timeBefore'");
assertTrue( date.before(timeAfter), "Time when last seen is earlier than 'timeAfter'");
r.setWhereLastSeen(null);
assertTrue( date.after(timeBefore), "Time when last seen is later than 'timeBefore'");
assertTrue( date.before(timeAfter), "Time when last seen is earlier than 'timeAfter'");
assertEquals( RailCom.UNSEEN, r.getState(), "After setWhereLastSeen(null), RailCom status is UNSEEN");
}
@Test
public void testGetSetOrientation(){
RailCom r = new DefaultRailCom("ID0415556BC1");
assertEquals( RailCom.Orientation.UNKNOWN , r.getOrientation(), "getorientation is UNKNOWN at start");
r.setOrientation(RailCom.Orientation.EAST);
assertEquals( RailCom.Orientation.EAST , r.getOrientation(), "getorientation is RailCom.EAST");
}
@Test
public void testGetSetActualSpeed(){
RailCom r = new DefaultRailCom("ID0415556BC2");
assertEquals( -1 , r.getActualSpeed(), "ActualSpeed is UNKNOWN at start");
r.setActualSpeed(44);
assertEquals( 44 , r.getActualSpeed(), "ActualSpeed is 44");
}
@Test
public void testGetSetActualLoad(){
RailCom r = new DefaultRailCom("ID0415556BC3");
assertEquals( -1 , r.getActualLoad(), "ActualLoad is UNKNOWN at start");
r.setActualLoad(3);
assertEquals( 3 , r.getActualLoad(), "ActualLoad is 3");
}
@Test
public void testGetSetActualTemperature(){
RailCom r = new DefaultRailCom("ID0415556BC4");
assertEquals( -1 , r.getActualTemperature(), "ActualTemperature is UNKNOWN at start");
r.setActualTemperature(4);
assertEquals( 4 , r.getActualTemperature(), "ActualTemperature is 4");
}
@Test
public void testGetSetWaterLevel(){
RailCom r = new DefaultRailCom("ID0415556BC5");
assertEquals( -1 , r.getWaterLevel(), "WaterLevel is UNKNOWN at start");
r.setWaterLevel(5);
assertEquals( 5 , r.getWaterLevel(), "WaterLevel is 5");
}
@Test
public void testGetSetFuelLevel(){
RailCom r = new DefaultRailCom("ID0415556BC6");
assertEquals( -1 , r.getFuelLevel(), "FuelLevel is UNKNOWN at start");
r.setFuelLevel(6);
assertEquals( 6 , r.getFuelLevel(), "FuelLevel is 6");
}
@Test
public void testGetSetLocation(){
RailCom r = new DefaultRailCom("ID0415556BC7");
assertEquals( -1 , r.getLocation(), "Location is UNKNOWN at start");
r.setLocation(7);
assertEquals( 7 , r.getLocation(), "Location is 7");
}
@Test
public void testGetSetRoutingNo(){
RailCom r = new DefaultRailCom("ID0415556BD1");
assertEquals( -1 , r.getRoutingNo(), "RoutingNo is UNKNOWN at start");
r.setRoutingNo(8);
assertEquals( 8 , r.getRoutingNo(), "RoutingNo is 8");
}
@Test
public void testGetSetExpectedCv(){
RailCom r = new DefaultRailCom("ID0415556BD2");
assertEquals( -1 , r.getExpectedCv(), "ExpectedCv is UNKNOWN at start");
r.setExpectedCv(9);
assertEquals( 9 , r.getExpectedCv(), "ExpectedCv is 9");
}
@Test
public void testToReportString(){
DefaultRailCom r = new DefaultRailCom("ID1234");
assertEquals( "Address 1234(L) Unknown Orientation " , r.toReportString(), "Basic Report String");
r.setOrientation(RailCom.Orientation.EAST);
assertEquals( "Address 1234(L) East " , r.toReportString(), "Report String EAST");
r.setOrientation(RailCom.Orientation.WEST);
assertEquals( "Address 1234(L) West " , r.toReportString(), "Report String WEST");
r.setWaterLevel(2);
r.setFuelLevel(3);
r.setLocation(4);
r.setRoutingNo(5);
r.setActualTemperature(6);
r.setActualLoad(7);
r.setActualSpeed(8);
assertEquals( "Address 1234(L) West Water 2 Fuel 3 Location : 4 Routing No : 5 Temperature : 6 Load : 7 Speed : 8 "
, r.toReportString(), "Report String WEST");
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
JUnitUtil.initInternalTurnoutManager();
JUnitUtil.initInternalLightManager();
JUnitUtil.initInternalSensorManager();
JUnitUtil.initRailComManager();
}
@AfterEach
public void tearDown() {
InstanceManager.getDefault( IdTagManager.class).dispose();
JUnitUtil.tearDown();
}
}