Files
JIMRI/java/test/jmri/jmrit/operations/locations/gui/YardmasterByTrackFrameTest.java
2026-06-17 14:00:51 +02:00

119 lines
4.3 KiB
Java

package jmri.jmrit.operations.locations.gui;
import java.awt.GraphicsEnvironment;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import jmri.InstanceManager;
import jmri.jmrit.operations.OperationsTestCase;
import jmri.jmrit.operations.locations.*;
import jmri.jmrit.operations.rollingstock.engines.Engine;
import jmri.jmrit.operations.rollingstock.engines.EngineManager;
import jmri.jmrit.operations.routes.Route;
import jmri.jmrit.operations.routes.RouteLocation;
import jmri.jmrit.operations.setup.Setup;
import jmri.jmrit.operations.trains.Train;
import jmri.jmrit.operations.trains.TrainManager;
import jmri.util.JUnitOperationsUtil;
import jmri.util.JUnitUtil;
import jmri.util.swing.JemmyUtil;
/**
*
* @author Paul Bender Copyright (C) 2017
*/
public class YardmasterByTrackFrameTest extends OperationsTestCase {
@Test
public void testCTor() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
YardmasterByTrackFrame t = new YardmasterByTrackFrame(null);
Assert.assertNotNull("exists", t);
JUnitUtil.dispose(t);
}
@Test
public void testPanel() {
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
// increase coverage by requiring text headers
Setup.setPrintHeadersEnabled(true);
// place engines at start of train's route
LocationManager lmanager = InstanceManager.getDefault(LocationManager.class);
Location locationNorthEnd = lmanager.getLocationByName("North End Staging");
Track trackNorthEnd = locationNorthEnd.getTrackByName("North End 1", null);
EngineManager eManager = InstanceManager.getDefault(EngineManager.class);
Engine e1 = eManager.getByRoadAndNumber("PC", "5016");
Assert.assertNotNull("engine exists", e1);
e1.setLocation(locationNorthEnd, trackNorthEnd);
Engine e2 = eManager.getByRoadAndNumber("PC", "5019");
Assert.assertNotNull("engine exists", e2);
e2.setLocation(locationNorthEnd, trackNorthEnd);
// create data by building a train
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
Train train = tmanager.getTrainByName("STF");
train.setNumberEngines("2");
train.build();
// 1st location
YardmasterByTrackFrame f = new YardmasterByTrackFrame(locationNorthEnd);
Assert.assertNotNull("exists", f);
YardmasterByTrackPanel yp = (YardmasterByTrackPanel)f.getContentPane();
JemmyUtil.enterClickAndLeave(yp.nextButton);
JUnitUtil.dispose(f);
// 2nd location in train's route
Location locationNorthIndustries = lmanager.getLocationByName("North Industries");
f = new YardmasterByTrackFrame(locationNorthIndustries);
Assert.assertNotNull("exists", f);
yp = (YardmasterByTrackPanel)f.getContentPane();
JemmyUtil.enterClickAndLeave(yp.nextButton);
JUnitUtil.dispose(f);
// 3rd location in train's route
Location locationSouthEnd = lmanager.getLocationByName("South End Staging");
f = new YardmasterByTrackFrame(locationSouthEnd);
Assert.assertNotNull("exists", f);
yp = (YardmasterByTrackPanel)f.getContentPane();
JemmyUtil.enterClickAndLeave(yp.nextButton);
JUnitUtil.dispose(f);
JUnitOperationsUtil.checkOperationsShutDownTask();
}
// @Test
// public void testLoop2() {
// for (int i = 0; i < 1000; i++) {
// setUp();
// testPanel();
// tearDown();
// }
// }
@BeforeEach
@Override
public void setUp() {
super.setUp();
// disable build messages
InstanceManager.getDefault(TrainManager.class).setBuildMessagesEnabled(false);
JUnitOperationsUtil.initOperationsData();
// need to disable all references to JTextPane() so test dead locks don't occur
// on Windows CI tests
Setup.setPrintRouteCommentsEnabled(false);
Setup.setPrintLocationCommentsEnabled(false);
Train train2 = InstanceManager.getDefault(TrainManager.class).getTrainById("2");
Route route = train2.getRoute();
RouteLocation rl = route.getDepartsRouteLocation();
rl.setComment(RouteLocation.NONE);
}
}