Files
JIMRI/java/test/jmri/jmrit/operations/rollingstock/engines/EngineTest.java
T
2026-06-17 14:00:51 +02:00

169 lines
6.1 KiB
Java

package jmri.jmrit.operations.rollingstock.engines;
import jmri.InstanceManager;
import jmri.jmrit.operations.OperationsTestCase;
import jmri.jmrit.operations.locations.Location;
import jmri.jmrit.operations.locations.Track;
import org.junit.Assert;
import org.junit.jupiter.api.*;
/**
* Tests for the Operations RollingStock Engine class Last manually
* cross-checked on 20090131
* <p>
* Still to do: Engine: Destination Engine: Verify everything else EngineTypes:
* get/set Names lists EngineModels: get/set Names lists EngineLengths:
* Everything Consist: Everything Import: Everything EngineManager: Engine
* register/deregister EngineManager: Consists
*
* @author Bob Coleman Copyright (C) 2008, 2009
*/
public class EngineTest extends OperationsTestCase {
// test constroctors.
@Test
public void test2ParmCtor() {
// test the constructor with roadname and roadnumer as parameters.
Engine e1 = new Engine("TESTROAD", "TESTNUMBER1");
Assert.assertNotNull("Two parameter Constructor", e1);
Assert.assertEquals("Engine Road", "TESTROAD", e1.getRoadName());
Assert.assertEquals("Engine Number", "TESTNUMBER1", e1.getNumber());
Assert.assertEquals("Engine ID", "TESTROAD" + "TESTNUMBER1", e1.getId());
}
@Test
public void testXmlConstructor() {
// test the constructor loading this car from an XML element.
// first, we need to build the XML element.
org.jdom2.Element e = new org.jdom2.Element("engines");
// set the rolling stock generic attributes.
e.setAttribute("id", "TESTID");
e.setAttribute("roadName", "TESTROAD1");
e.setAttribute("roadNumber", "TESTNUMBER1");
e.setAttribute("type", "TESTTYPE");
e.setAttribute("length", "TESTLENGTH");
e.setAttribute("color", "TESTCOLOR");
e.setAttribute("weight", "TESTWEIGHT");
e.setAttribute("weightTons", "TESTWEIGHTTONS");
e.setAttribute("built", "TESTBUILT");
e.setAttribute("locationId", "TESTLOCATION");
e.setAttribute("routeLocationId", "TESTROUTELOCATION");
e.setAttribute("secLocationId", "TESTTRACK");
e.setAttribute("destinationId", "TESTDESTINATION");
e.setAttribute("routeDestinationId", "TESTROUTEDESTINATION");
e.setAttribute("secDestionationId", "TESTDESTINATIONTRACK");
e.setAttribute("lastRouteId", "SAVEDROUTE");
e.setAttribute("moves", "5");
e.setAttribute("date", "2015/05/15 15:15:15");
e.setAttribute("selected", Xml.FALSE);
e.setAttribute("lastLocationId", "TESTLASTLOCATION");
e.setAttribute("train", "TESTTRAIN");
e.setAttribute("owner", "TESTOWNER");
e.setAttribute("value", "TESTVALUE");
e.setAttribute("rifd", "12345");
e.setAttribute("locUnknown", Xml.FALSE);
e.setAttribute("outOfService", Xml.FALSE);
e.setAttribute("blocking", "5");
e.setAttribute("comment", "Test Comment");
// set the engine specific attributes
Assertions.assertDoesNotThrow( () -> {
Engine e1 = new Engine(e);
Assert.assertNotNull("Xml Element Constructor", e1);
}, "Exception while executing Xml Element Constructor");
}
// test Engine Class
// test Engine creation
@Test
public void testCreate() {
Engine e1 = new Engine("TESTROAD", "TESTNUMBER1");
e1.setModel("TESTMODEL");
e1.setLength("TESTLENGTH");
Assert.assertEquals("Engine Road", "TESTROAD", e1.getRoadName());
Assert.assertEquals("Engine Number", "TESTNUMBER1", e1.getNumber());
Assert.assertEquals("Engine Model", "TESTMODEL", e1.getModel());
Assert.assertEquals("Engine Length", "TESTLENGTH", e1.getLength());
}
@Test
public void testSetLocation() {
Engine e1 = new Engine("TESTROAD", "TESTNUMBER1");
e1.setModel("TESTMODEL");
e1.setLength("50");
Location l1 = new Location("id1", "B");
Track l1t1 = l1.addTrack("A", Track.SPUR);
Location l2 = new Location("id2", "C");
Track l2t1 = l2.addTrack("B", Track.SPUR);
Location l3 = new Location("id3", "A");
Track l3t1 = l3.addTrack("B", Track.SPUR);
// add track lengths
l1t1.setLength(100);
l1t1.setLength(100);
l3t1.setLength(100);
l1.addTypeName("Diesel");
l2.addTypeName("Diesel");
l3.addTypeName("Diesel");
l1t1.addTypeName("Diesel");
l2t1.addTypeName("Diesel");
l3t1.addTypeName("Diesel");
EngineTypes et = InstanceManager.getDefault(EngineTypes.class);
et.addName("Diesel");
e1.setTypeName("Diesel");
// place engines on tracks
Assert.assertEquals("place e1", Track.OKAY, e1.setLocation(l1, l1t1));
// check for failure too.
Assert.assertNotEquals("fail place e1", Track.OKAY, e1.setLocation(l3, l2t1));
}
@Test
public void testSetDestination() {
Engine e1 = new Engine("TESTROAD", "TESTNUMBER1");
e1.setModel("TESTMODEL");
e1.setLength("50");
Location l1 = new Location("id1", "B");
Track l1t1 = l1.addTrack("A", Track.SPUR);
Location l2 = new Location("id2", "C");
Track l2t1 = l2.addTrack("B", Track.SPUR);
Location l3 = new Location("id3", "A");
Track l3t1 = l3.addTrack("B", Track.SPUR);
// add track lengths
l1t1.setLength(100);
l1t1.setLength(100);
l3t1.setLength(100);
l1.addTypeName("Diesel");
l2.addTypeName("Diesel");
l3.addTypeName("Diesel");
l1t1.addTypeName("Diesel");
l2t1.addTypeName("Diesel");
l3t1.addTypeName("Diesel");
EngineTypes et = InstanceManager.getDefault(EngineTypes.class);
et.addName("Diesel");
e1.setTypeName("Diesel");
e1.setLocation(l2, l2t1);
// set destination.
Assert.assertEquals("destination set e1", Track.OKAY, e1.setDestination(l1, l1t1));
// check for failure too.
Assert.assertNotEquals("fail to set destination e1", Track.OKAY, e1.setDestination(l3, l1t1));
}
}