157 lines
6.0 KiB
Java
157 lines
6.0 KiB
Java
package jmri.jmrit.operations.rollingstock.engines.gui;
|
|
|
|
import java.awt.GraphicsEnvironment;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.Assume;
|
|
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.trains.Train;
|
|
import jmri.jmrit.operations.trains.TrainManager;
|
|
import jmri.util.*;
|
|
import jmri.util.swing.JemmyUtil;
|
|
|
|
/**
|
|
* Tests for the Operations EnginesSetFrame class
|
|
*
|
|
* @author Dan Boudreau Copyright (C) 2010
|
|
*
|
|
*/
|
|
public class EngineSetFrameTest extends OperationsTestCase {
|
|
|
|
@Test
|
|
public void testEngineSetFrame() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData();
|
|
EngineSetFrame f = new EngineSetFrame();
|
|
f.setTitle("Test Engine Set Frame");
|
|
f.initComponents();
|
|
EngineManager eManager = InstanceManager.getDefault(EngineManager.class);
|
|
Engine e3 = eManager.getByRoadAndNumber("PC", "5016");
|
|
f.load(e3);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testEnginesInTrain() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// build train
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainByName("STF");
|
|
Assert.assertNotNull("Train exists", train1);
|
|
|
|
EngineSetFrame f = new EngineSetFrame();
|
|
f.setTitle("Test Engine Set Frame");
|
|
f.initComponents();
|
|
|
|
// place two 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);
|
|
|
|
Assert.assertTrue("Train builds", train1.build());
|
|
Assert.assertEquals("Engine is part of train", train1, e1.getTrain());
|
|
Assert.assertEquals("Engine is part of train", train1, e2.getTrain());
|
|
|
|
// should cause dialog engine in train to appear
|
|
Thread load = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load.setName("engine set frame"); // NOI18N
|
|
load.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("rsInRoute"), Bundle.getMessage("ButtonOK"));
|
|
|
|
try {
|
|
load.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
// pressing "Save" when engine has destination and train will cause dialog box to appear
|
|
Assert.assertNotNull("engine has destination", e1.getDestination());
|
|
Assert.assertNotNull("engine has destination track", e1.getDestinationTrack());
|
|
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("rsInRoute"), Bundle.getMessage("ButtonNo"));
|
|
|
|
// Confirm that engine's destination is still there
|
|
Assert.assertNotNull("engine has destination", e1.getDestination());
|
|
Assert.assertNotNull("engine has destination track", e1.getDestinationTrack());
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("enginePartConsist"), Bundle.getMessage("ButtonYes"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("rsInRoute"), Bundle.getMessage("ButtonYes"));
|
|
|
|
Assert.assertNull("engine has destination removed", e1.getDestination());
|
|
Assert.assertNull("engine has destination track removed", e1.getDestinationTrack());
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("enginePartConsist"), Bundle.getMessage("ButtonYes"));
|
|
JemmyUtil.waitFor(f);
|
|
JUnitUtil.dispose(f);
|
|
JUnitOperationsUtil.checkOperationsShutDownTask();
|
|
}
|
|
|
|
@Test
|
|
public void testEditConsistButton() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
EngineSetFrame f = new EngineSetFrame();
|
|
f.initComponents();
|
|
EngineManager eManager = InstanceManager.getDefault(EngineManager.class);
|
|
Engine e3 = eManager.getByRoadAndNumber("PC", "5016");
|
|
f.load(e3);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editConsistButton);
|
|
JUnitUtil.waitFor(() -> {
|
|
return JmriJFrame.getFrame("Edit Locomotive Consist") != null;
|
|
}, "not null");
|
|
JmriJFrame lef = JmriJFrame.getFrame("Edit Locomotive Consist");
|
|
Assert.assertNotNull(lef);
|
|
|
|
// for test coverage
|
|
JemmyUtil.enterClickAndLeave(f.editConsistButton);
|
|
|
|
JUnitUtil.dispose(f);
|
|
lef = JmriJFrame.getFrame("Edit Locomotive Consist");
|
|
Assert.assertNull(lef);
|
|
}
|
|
|
|
@Test
|
|
public void testCloseWindowOnSave() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
EngineManager eManager = InstanceManager.getDefault(EngineManager.class);
|
|
Engine e3 = eManager.newRS("DB", "03");
|
|
EngineSetFrame f = new EngineSetFrame();
|
|
f.initComponents();
|
|
f.load(e3);
|
|
JUnitOperationsUtil.testCloseWindowOnSave(f.getTitle());
|
|
}
|
|
}
|