1093 lines
43 KiB
Java
1093 lines
43 KiB
Java
package jmri.jmrit.operations.rollingstock.cars.gui;
|
|
|
|
import java.awt.GraphicsEnvironment;
|
|
import java.text.MessageFormat;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.Assume;
|
|
import org.junit.jupiter.api.Assumptions;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
|
|
import org.netbeans.jemmy.operators.*;
|
|
import org.netbeans.jemmy.util.NameComponentChooser;
|
|
|
|
import jmri.InstanceManager;
|
|
import jmri.jmrit.operations.OperationsTestCase;
|
|
import jmri.jmrit.operations.locations.*;
|
|
import jmri.jmrit.operations.locations.divisions.DivisionEditFrame;
|
|
import jmri.jmrit.operations.rollingstock.cars.*;
|
|
import jmri.jmrit.operations.setup.Setup;
|
|
import jmri.jmrit.operations.trains.Train;
|
|
import jmri.jmrit.operations.trains.TrainManager;
|
|
import jmri.util.*;
|
|
import jmri.util.swing.JemmyUtil;
|
|
|
|
/**
|
|
* Tests for the Operations CarSetFrame class
|
|
*
|
|
* @author Dan Boudreau Copyright (C) 2009
|
|
*/
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
public class CarSetFrameTest extends OperationsTestCase {
|
|
|
|
@Test
|
|
public void testCarSetFrame() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// improve test coverage
|
|
Setup.setCarRoutingEnabled(false);
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.setTitle("Test Car Set Frame");
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
Assert.assertNotNull(jfo);
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
Assert.assertNotNull("car exists", c3);
|
|
f.load(c3);
|
|
|
|
jfo.getQueueTool().waitEmpty();
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
}
|
|
|
|
@Test
|
|
public void testCarSetFrameSaveButton() {
|
|
Assumptions.assumeFalse(Boolean.getBoolean("jmri.skipTestsRequiringSeparateRunning"),"Ignoring intermittent test");
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.setTitle("Test Car Set Frame");
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
Assert.assertNotNull("car exists", c3);
|
|
f.load(c3);
|
|
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
Assert.assertNotNull(jfo);
|
|
|
|
// check defaults
|
|
Assert.assertFalse("Out of service", c3.isOutOfService());
|
|
Assert.assertFalse("Location unknown", c3.isLocationUnknown());
|
|
|
|
// change car's status
|
|
toggleCheckBoxThenClickSave(jfo, Bundle.getMessage("OutOfService"));
|
|
JUnitUtil.waitFor(() -> {
|
|
return c3.isOutOfService();
|
|
}, "Out of service");
|
|
Assert.assertFalse("Location unknown", c3.isLocationUnknown());
|
|
|
|
// change car's status
|
|
toggleCheckBoxThenClickSave(jfo, Bundle.getMessage("OutOfService"));
|
|
JUnitUtil.waitFor(() -> {
|
|
return !c3.isOutOfService();
|
|
}, "Not Out of service");
|
|
Assert.assertFalse("Location unknown", c3.isLocationUnknown());
|
|
|
|
// change car's status
|
|
toggleCheckBoxThenClickSave(jfo, Bundle.getMessage("LocationUnknown"));
|
|
// location unknown checkbox also causes the car to be out of service
|
|
JUnitUtil.waitFor(() -> {
|
|
return c3.isOutOfService();
|
|
}, "Out of service Again");
|
|
Assert.assertTrue("Location unknown", c3.isLocationUnknown());
|
|
|
|
// change car's status
|
|
toggleCheckBoxThenClickSave(jfo, Bundle.getMessage("LocationUnknown"));
|
|
// location unknown checkbox also causes the car to be out of service
|
|
JUnitUtil.waitFor(() -> {
|
|
return !c3.isOutOfService();
|
|
}, "Not Out of service Again");
|
|
Assert.assertFalse("Location unknown", c3.isLocationUnknown());
|
|
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
}
|
|
|
|
@Test
|
|
public void testKernel() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.setTitle("Test Car Set Frame");
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
Assert.assertNotNull(jfo);
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
Car c4 = cManager.getByRoadAndNumber("CP", "99");
|
|
Assert.assertNotNull("car exists", c3);
|
|
Assert.assertNotNull("car exists", c4);
|
|
f.load(c3);
|
|
|
|
Kernel k = InstanceManager.getDefault(KernelManager.class).newKernel("test");
|
|
c3.setKernel(k);
|
|
c4.setKernel(k);
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
Assert.assertEquals("confirm kernel", "test",
|
|
new JComboBoxOperator(jfo, new NameComponentChooser("kernelComboBox")).getItemAt(1));
|
|
|
|
Thread t1 = JemmyUtil.createModalDialogOperatorThread(
|
|
MessageFormat.format(Bundle.getMessage("carPartKernel"), c3.getKernelName()),
|
|
Bundle.getMessage("ButtonYes"));
|
|
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
},"car part kernel yes dialogue did not complete");
|
|
JemmyUtil.waitFor(f); // wait for frame to become active
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
}
|
|
|
|
@Test
|
|
public void testEditCarLoadButton() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.initComponents();
|
|
f.load(c3);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editLoadButton);
|
|
// confirm edit boxcar loads frame creation
|
|
JUnitUtil.waitFor(() -> {
|
|
return JmriJFrame.getFrame("Edit Car Loads") != null;
|
|
}, "ebl not null");
|
|
JmriJFrame lef = JmriJFrame.getFrame("Edit Car Loads");
|
|
Assert.assertNotNull(lef);
|
|
|
|
// for test coverage
|
|
JemmyUtil.enterClickAndLeave(f.editLoadButton);
|
|
|
|
JUnitUtil.dispose(f);
|
|
lef = JmriJFrame.getFrame("Edit Car Loads");
|
|
Assert.assertNull(lef);
|
|
}
|
|
|
|
@Test
|
|
public void testEditCarKernelButton() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.initComponents();
|
|
f.load(c3);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editKernelButton);
|
|
// confirm edit boxcar loads frame creation
|
|
JUnitUtil.waitFor(() -> {
|
|
return JmriJFrame.getFrame("Edit Car Kernel") != null;
|
|
}, "not null");
|
|
JmriJFrame lef = JmriJFrame.getFrame("Edit Car Kernel");
|
|
Assert.assertNotNull(lef);
|
|
|
|
// for test coverage
|
|
JemmyUtil.enterClickAndLeave(f.editKernelButton);
|
|
|
|
JUnitUtil.dispose(f);
|
|
lef = JmriJFrame.getFrame("Edit Car Kernel");
|
|
Assert.assertNull(lef);
|
|
}
|
|
|
|
@Test
|
|
public void testEditDivisionButton() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.initComponents();
|
|
f.load(c3);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editDivisionButton);
|
|
// confirm edit boxcar loads frame creation
|
|
JUnitUtil.waitFor(() -> {
|
|
return JmriJFrame.getFrame("Add Division") != null;
|
|
}, "not null");
|
|
JmriJFrame adf = JmriJFrame.getFrame("Add Division");
|
|
Assert.assertNotNull(adf);
|
|
|
|
// no divisions yet (Null)
|
|
Assert.assertEquals("number of items", 1, f.divisionComboBox.getItemCount());
|
|
|
|
// add a division
|
|
DivisionEditFrame def = (DivisionEditFrame)adf;
|
|
JFrameOperator jfo = new JFrameOperator(def.getTitle());
|
|
JTextFieldOperator nameOperator = new JTextFieldOperator(jfo, new NameComponentChooser("DivisionNameField"));
|
|
nameOperator.setText("new division name");
|
|
new JButtonOperator(jfo, "Add Division").doClick();
|
|
Assert.assertEquals("number of items", 2, f.divisionComboBox.getItemCount());
|
|
|
|
// for test coverage
|
|
JemmyUtil.enterClickAndLeave(f.editDivisionButton);
|
|
|
|
JUnitUtil.dispose(f);
|
|
adf = JmriJFrame.getFrame("Add Division");
|
|
Assert.assertNull(adf);
|
|
}
|
|
|
|
@Test
|
|
public void testLoadChange() {
|
|
Location loc = JUnitOperationsUtil.createOneNormalLocation("Test Location");
|
|
Track track1 = loc.getTrackByName("Test Location Spur 1", null);
|
|
Car car = JUnitOperationsUtil.createAndPlaceCar("DB", "1", "Boxcar", "40", track1, 0);
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
// car has two loads "E" and "L"
|
|
Assert.assertEquals("default loads", 2, f.loadComboBox.getItemCount());
|
|
Assert.assertEquals("default loads", 1, f.loadReturnWhenEmptyBox.getItemCount());
|
|
Assert.assertEquals("default loads", 1, f.loadReturnWhenLoadedBox.getItemCount());
|
|
|
|
// create a new load for car, type "load"
|
|
CarLoads carLoads = InstanceManager.getDefault(CarLoads.class);
|
|
carLoads.addName("Boxcar", "NewLoad");
|
|
|
|
Assert.assertEquals("loads", 3, f.loadComboBox.getItemCount());
|
|
Assert.assertEquals("empty loads", 1, f.loadReturnWhenEmptyBox.getItemCount());
|
|
Assert.assertEquals("load loads", 2, f.loadReturnWhenLoadedBox.getItemCount());
|
|
|
|
// change new load to type "empty"
|
|
carLoads.setLoadType("Boxcar", "NewLoad", CarLoad.LOAD_TYPE_EMPTY);
|
|
Assert.assertEquals("loads", 3, f.loadComboBox.getItemCount());
|
|
Assert.assertEquals("empty loads", 2, f.loadReturnWhenEmptyBox.getItemCount());
|
|
Assert.assertEquals("load loads", 1, f.loadReturnWhenLoadedBox.getItemCount());
|
|
|
|
// confirm that wait and schedule id get updated when load changes
|
|
car.setWait(1);
|
|
car.setScheduleItemId("someId");
|
|
|
|
// Confirm load change
|
|
f.loadComboBox.setSelectedItem("NewLoad");
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
|
|
Assert.assertEquals("load change", "NewLoad", car.getLoadName());
|
|
Assert.assertEquals("Wait", 0, car.getWait());
|
|
Assert.assertEquals("Schedule id", Car.NONE, car.getScheduleItemId());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testAutoTrackCheckBoxes() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
// creates 6 tracks
|
|
Location loc = JUnitOperationsUtil.createOneNormalLocation("Test Location");
|
|
Track track1 = loc.getTrackByName("Test Location Spur 1", null);
|
|
Car car = JUnitOperationsUtil.createAndPlaceCar("DB", "1", "Boxcar", "40", track1, 0);
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
JComboBoxOperator tlbo = new JComboBoxOperator(jfo,new NameComponentChooser("trackLocationBox"));
|
|
|
|
// don't allow Boxcar at spur 2
|
|
Track track2 = loc.getTrackByName("Test Location Spur 2", null);
|
|
track2.deleteTypeName("Boxcar");
|
|
Assert.assertEquals("Items in track combobox", 7, tlbo.getItemCount());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.autoTrackCheckBox);
|
|
Assert.assertEquals("Items in track combobox", 6, tlbo.getItemCount());
|
|
|
|
// load destination and track ComboBoxes
|
|
Assert.assertEquals("Items in track combobox", 0, f.trackDestinationBox.getItemCount());
|
|
Track track3 = loc.getTrackByName("Test Location Yard 1", null);
|
|
car.setDestination(loc, track3);
|
|
Assert.assertEquals("Items in track combobox", 7, f.trackDestinationBox.getItemCount());
|
|
|
|
// must enable destination fields
|
|
f.setDestinationEnabled(true);
|
|
JemmyUtil.enterClickAndLeave(f.autoDestinationTrackCheckBox);
|
|
Assert.assertEquals("Items in track combobox", 6, f.trackDestinationBox.getItemCount());
|
|
|
|
// final destination
|
|
Assert.assertEquals("Items in final track combobox", 0, f.finalDestTrackBox.getItemCount());
|
|
car.setFinalDestination(loc);
|
|
Assert.assertEquals("Items in final track combobox", 7, f.finalDestTrackBox.getItemCount());
|
|
JemmyUtil.enterClickAndLeave(f.autoFinalDestTrackCheckBox);
|
|
Assert.assertEquals("Items in final track combobox", 6, f.finalDestTrackBox.getItemCount());
|
|
car.setFinalDestination(null);
|
|
Assert.assertEquals("Items in final track combobox", 0, f.finalDestTrackBox.getItemCount());
|
|
|
|
// RWE
|
|
Assert.assertEquals("Items in RWE track combobox", 0, f.trackReturnWhenEmptyBox.getItemCount());
|
|
car.setReturnWhenEmptyDestination(loc);
|
|
Assert.assertEquals("Items in RWE track combobox", 7, f.trackReturnWhenEmptyBox.getItemCount());
|
|
JemmyUtil.enterClickAndLeave(f.autoReturnWhenEmptyTrackCheckBox);
|
|
Assert.assertEquals("Items in RWE track combobox", 6, f.trackReturnWhenEmptyBox.getItemCount());
|
|
car.setReturnWhenEmptyDestination(null);
|
|
Assert.assertEquals("Items in RWE track combobox", 0, f.trackReturnWhenEmptyBox.getItemCount());
|
|
|
|
// RWL
|
|
Assert.assertEquals("Items in RWL track combobox", 0, f.trackReturnWhenLoadedBox.getItemCount());
|
|
car.setReturnWhenLoadedDestination(loc);
|
|
Assert.assertEquals("Items in RWL track combobox", 7, f.trackReturnWhenLoadedBox.getItemCount());
|
|
JemmyUtil.enterClickAndLeave(f.autoReturnWhenLoadedTrackCheckBox);
|
|
Assert.assertEquals("Items in RWL track combobox", 6, f.trackReturnWhenLoadedBox.getItemCount());
|
|
car.setReturnWhenLoadedDestination(null);
|
|
Assert.assertEquals("Items in RWL track combobox", 0, f.trackReturnWhenLoadedBox.getItemCount());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testCarSetFrameIgnoreCheckBoxes() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.initComponents();
|
|
f.load(c3);
|
|
|
|
Assert.assertFalse("Ignore deselected", f.ignoreRWECheckBox.isSelected());
|
|
Assert.assertFalse("Ignore deselected", f.ignoreRWLCheckBox.isSelected());
|
|
Assert.assertFalse("Ignore deselected", f.ignoreLoadCheckBox.isSelected());
|
|
Assert.assertFalse("Ignore deselected", f.ignoreDivisionCheckBox.isSelected());
|
|
Assert.assertFalse("Ignore deselected", f.ignoreKernelCheckBox.isSelected());
|
|
|
|
Assert.assertTrue(f.destReturnWhenEmptyBox.isEnabled());
|
|
JemmyUtil.enterClickAndLeave(f.ignoreRWECheckBox);
|
|
Assert.assertFalse(f.destReturnWhenEmptyBox.isEnabled());
|
|
|
|
Assert.assertTrue(f.destReturnWhenLoadedBox.isEnabled());
|
|
JemmyUtil.enterClickAndLeave(f.ignoreRWLCheckBox);
|
|
Assert.assertFalse(f.destReturnWhenLoadedBox.isEnabled());
|
|
|
|
Assert.assertTrue(f.loadComboBox.isEnabled());
|
|
JemmyUtil.enterClickAndLeave(f.ignoreLoadCheckBox);
|
|
Assert.assertFalse(f.loadComboBox.isEnabled());
|
|
|
|
Assert.assertTrue(f.divisionComboBox.isEnabled());
|
|
JemmyUtil.enterClickAndLeave(f.ignoreDivisionCheckBox);
|
|
Assert.assertFalse(f.divisionComboBox.isEnabled());
|
|
|
|
Assert.assertTrue(f.kernelComboBox.isEnabled());
|
|
JemmyUtil.enterClickAndLeave(f.ignoreKernelCheckBox);
|
|
Assert.assertFalse(f.kernelComboBox.isEnabled());
|
|
|
|
// now restore
|
|
Assert.assertFalse(f.destReturnWhenEmptyBox.isEnabled());
|
|
JemmyUtil.enterClickAndLeave(f.ignoreRWECheckBox);
|
|
Assert.assertTrue(f.destReturnWhenEmptyBox.isEnabled());
|
|
|
|
Assert.assertFalse(f.destReturnWhenLoadedBox.isEnabled());
|
|
JemmyUtil.enterClickAndLeave(f.ignoreRWLCheckBox);
|
|
Assert.assertTrue(f.destReturnWhenLoadedBox.isEnabled());
|
|
|
|
Assert.assertFalse(f.loadComboBox.isEnabled());
|
|
JemmyUtil.enterClickAndLeave(f.ignoreLoadCheckBox);
|
|
Assert.assertTrue(f.loadComboBox.isEnabled());
|
|
|
|
Assert.assertFalse(f.divisionComboBox.isEnabled());
|
|
JemmyUtil.enterClickAndLeave(f.ignoreDivisionCheckBox);
|
|
Assert.assertTrue(f.divisionComboBox.isEnabled());
|
|
|
|
Assert.assertFalse(f.kernelComboBox.isEnabled());
|
|
JemmyUtil.enterClickAndLeave(f.ignoreKernelCheckBox);
|
|
Assert.assertTrue(f.kernelComboBox.isEnabled());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testChangeLocation() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
// creates 6 tracks
|
|
Location loc = JUnitOperationsUtil.createOneNormalLocation("Test Location");
|
|
Track track1 = loc.getTrackByName("Test Location Spur 1", null);
|
|
Car car = JUnitOperationsUtil.createAndPlaceCar("DB", "1", "Boxcar", "40", track1, 0);
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
Thread load = new Thread(() -> {
|
|
f.load(car);
|
|
});
|
|
load.setName("car set frame"); // NOI18N
|
|
load.start();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !load.isAlive();
|
|
},"frame load complete");
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
JComboBoxOperator tlbo = new JComboBoxOperator(jfo,new NameComponentChooser("trackLocationBox"));
|
|
|
|
// change car's track to track2
|
|
Track track2 = loc.getTrackByName("Test Location Spur 2", null);
|
|
tlbo.setSelectedItem(track2);
|
|
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
Assert.assertEquals("car's track", track2, car.getTrack());
|
|
|
|
// cause an error by not allowing Boxcar on track 1
|
|
track1.deleteTypeName("Boxcar");
|
|
tlbo.setSelectedItem(track1);
|
|
|
|
Thread t1 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsCanNotLoc"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
Thread t2 = JemmyUtil.createModalDialogOperatorThread(
|
|
MessageFormat.format(Bundle.getMessage("rsOverride"), new Object[]{"type (Boxcar)"}),
|
|
Bundle.getMessage("ButtonNo"));
|
|
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
},"rsCanNotLoc yes ok thread complete");
|
|
|
|
// error message not able to apply schedule
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t2.isAlive();
|
|
},"rsOverride no dialogue thread complete");
|
|
|
|
// confirm car's track didn't change
|
|
Assert.assertEquals("car's track", track2, car.getTrack());
|
|
|
|
// again, but Yes
|
|
Thread t3 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsCanNotLoc"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
Thread t4 = JemmyUtil.createModalDialogOperatorThread(
|
|
MessageFormat.format(Bundle.getMessage("rsOverride"), new Object[]{"type (Boxcar)"}),
|
|
Bundle.getMessage("ButtonYes"));
|
|
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t3.isAlive();
|
|
},"rsCanNotLoc yes ok thread 3 complete");
|
|
|
|
// error message not able to apply schedule
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t4.isAlive();
|
|
},"rsOverride yes dialogue thread 4 complete");
|
|
|
|
|
|
Assert.assertEquals("car's track", track1, car.getTrack());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testAppySchedule() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
JUnitOperationsUtil.createSchedules();
|
|
|
|
// create new loads for car
|
|
CarLoads carLoads = InstanceManager.getDefault(CarLoads.class);
|
|
carLoads.addName("Boxcar", "Empty");
|
|
carLoads.addName("Boxcar", "Metal");
|
|
|
|
LocationManager lmanager = InstanceManager.getDefault(LocationManager.class);
|
|
Location location = lmanager.getLocationByName("North Industries");
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car car = cManager.getByRoadAndNumber("CP", "888");
|
|
Track track = car.getTrack();
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
Thread load = new Thread(() -> {
|
|
f.load(car);
|
|
});
|
|
load.setName("car set frame"); // NOI18N
|
|
load.start();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !load.isAlive();
|
|
},"frame load complete");
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
// change car's track to Test Spur 1 that has a schedule demanding a boxcar
|
|
// with an "Empty" load
|
|
Track track2 = location.getTrackByName("Test Spur 1", null);
|
|
track2.setLength(200);
|
|
|
|
JComboBoxOperator tlb = new JComboBoxOperator(jfo,new NameComponentChooser("trackLocationBox"));
|
|
tlb.setSelectedItem(track2);
|
|
|
|
Thread t1 = JemmyUtil.createModalDialogOperatorThread(MessageFormat.format(Bundle.getMessage("rsSpurHasSchedule"), track2.getName(),
|
|
track2.getScheduleName()),
|
|
Bundle.getMessage("ButtonYes"));
|
|
|
|
Thread t2 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsApplyingScheduleFailed"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
|
|
// Save should cause dialog to appear asking to apply schedule
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
},"rsSpurHasSchedule yes fail dialogue thread complete");
|
|
|
|
// error message not able to apply schedule
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t2.isAlive();
|
|
},"fail dialogue thread complete");
|
|
|
|
// confirm that car's track didn't change
|
|
Assert.assertEquals("car's track", track, car.getTrack());
|
|
|
|
// Now change car load so applying schedule will work
|
|
|
|
JComboBoxOperator lcbo = new JComboBoxOperator(jfo,new NameComponentChooser("loadComboBox"));
|
|
lcbo.setSelectedItem("Empty");
|
|
tlb.setSelectedItem(track2);
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
Thread t3 = JemmyUtil.createModalDialogOperatorThread(MessageFormat.format(Bundle.getMessage("rsSpurHasSchedule"), track2.getName(),
|
|
track2.getScheduleName()),
|
|
Bundle.getMessage("ButtonYes"));
|
|
|
|
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t3.isAlive();
|
|
},"rsSpurHasSchedule yes dialogue thread complete");
|
|
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
Assert.assertEquals("car's track", track2, car.getTrack());
|
|
Assert.assertEquals("car's new load name", "Metal", car.getLoadName());
|
|
Assert.assertEquals("car's new final destination", location, car.getFinalDestination());
|
|
Assert.assertEquals("car's new final destination track", track, car.getFinalDestinationTrack());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testAutoTrainCheckBox() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
Location loc = JUnitOperationsUtil.createOneNormalLocation("Test Location");
|
|
Track track = loc.getTrackByName("Test Location Spur 1", null);
|
|
Car car = JUnitOperationsUtil.createAndPlaceCar("DB", "1", "Boxcar", "40", track, 0);
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
// two trains and null are the comboBox choices
|
|
Assert.assertEquals("Items in train combobox", 3, f.trainBox.getItemCount());
|
|
|
|
// car is on a track that isn't serviced by the two trains
|
|
JemmyUtil.enterClickAndLeave(f.autoTrainCheckBox);
|
|
Assert.assertEquals("Items in train combobox", 1, f.trainBox.getItemCount());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testCarInTrain() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// build train
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainByName("STF");
|
|
Assert.assertNotNull("Train exists", train1);
|
|
Assert.assertTrue("Train builds", train1.build());
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.setTitle("Test Car Set Frame");
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
Assert.assertNotNull(jfo);
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
Assert.assertNotNull("car exists", c3);
|
|
Assert.assertEquals("Car is part of train", train1, c3.getTrain());
|
|
|
|
Thread t1 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsInRoute"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
|
|
// should cause dialog car in train to appear
|
|
Thread load = new Thread(() -> {
|
|
f.load(c3);
|
|
});
|
|
load.setName("car set frame"); // NOI18N
|
|
load.start();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
},"rs in route ok dialogue thread complete");
|
|
JUnitUtil.waitFor(() -> {
|
|
return !load.isAlive();
|
|
},"frame load complete");
|
|
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
// pressing "Save" when car has destination and train will cause dialog
|
|
// box to appear
|
|
Assert.assertNotNull("car has destination", c3.getDestination());
|
|
Assert.assertNotNull("car has destination track", c3.getDestinationTrack());
|
|
|
|
Thread t2 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsInRoute"),
|
|
Bundle.getMessage("ButtonNo"));
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t2.isAlive();
|
|
},"rs in route no dialogue complete");
|
|
|
|
// Confirm that car's destination is still there
|
|
Assert.assertNotNull("car has destination", c3.getDestination());
|
|
Assert.assertNotNull("car has destination track", c3.getDestinationTrack());
|
|
|
|
Thread t3 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsInRoute"),
|
|
Bundle.getMessage("ButtonYes"));
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t3.isAlive();
|
|
},"rs in route yes dialogue complete");
|
|
|
|
jfo.getQueueTool().waitEmpty();
|
|
JemmyUtil.waitFor(f); // wait for frame to become active
|
|
Assert.assertNull("car has destination removed", c3.getDestination());
|
|
Assert.assertNull("car has destination track removed", c3.getDestinationTrack());
|
|
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
|
|
JUnitOperationsUtil.checkOperationsShutDownTask();
|
|
}
|
|
|
|
@Test
|
|
public void testChangeTrain() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainByName("STF");
|
|
Assert.assertNotNull(train1);
|
|
Train train2 = tmanager.getTrainByName("SFF");
|
|
Assert.assertNotNull(train2);
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
c3.setTrain(train1);
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.initComponents();
|
|
f.load(c3);
|
|
|
|
Assert.assertEquals("correct number of items", 3, f.trainBox.getItemCount());
|
|
Assert.assertEquals("correct train selected", train1, f.trainBox.getSelectedItem());
|
|
c3.setTrain(train2);
|
|
Assert.assertEquals("correct train selected", train2, f.trainBox.getSelectedItem());
|
|
|
|
// add a new train
|
|
tmanager.newTrain("So New");
|
|
Assert.assertEquals("correct number of items", 4, f.trainBox.getItemCount());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testCarInTrainErrorType() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// build train
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainByName("STF");
|
|
Assert.assertNotNull("Train exists", train1);
|
|
Assert.assertTrue("Train builds", train1.build());
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.setTitle("Test Car Set Frame");
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
Assert.assertNotNull(jfo);
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
Assert.assertNotNull("car exists", c3);
|
|
Assert.assertEquals("Car is part of train", train1, c3.getTrain());
|
|
|
|
Thread t1 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsInRoute"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
|
|
// should cause dialog car in train to appear
|
|
Thread load = new Thread(() -> {
|
|
f.load(c3);
|
|
});
|
|
load.setName("car set frame"); // NOI18N
|
|
load.start();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
},"rs in route ok dialogue complete");
|
|
JUnitUtil.waitFor(() -> {
|
|
return !load.isAlive();
|
|
},"frame load complete");
|
|
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
// remove this type from train
|
|
train1.deleteTypeName(c3.getTypeName());
|
|
|
|
Thread t2 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsNotMove"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t2.isAlive();
|
|
},"rsnotmove ok complete");
|
|
jfo.getQueueTool().waitEmpty();
|
|
JemmyUtil.waitFor(f); // wait for frame to become active
|
|
Assert.assertNull("car has destination removed", c3.getDestination());
|
|
Assert.assertNull("car has destination track removed", c3.getDestinationTrack());
|
|
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
JUnitOperationsUtil.checkOperationsShutDownTask();
|
|
}
|
|
|
|
@Test
|
|
public void testCarInTrainErrorRoad() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// build train
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainByName("STF");
|
|
Assert.assertNotNull("Train exists", train1);
|
|
Assert.assertTrue("Train builds", train1.build());
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.setTitle("Test Car Set Frame");
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
Assert.assertNotNull(jfo);
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
Assert.assertNotNull("car exists", c3);
|
|
Assert.assertEquals("Car is part of train", train1, c3.getTrain());
|
|
|
|
Thread t1 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsInRoute"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
|
|
// should cause dialog car in train to appear
|
|
Thread load = new Thread(() -> {
|
|
f.load(c3);
|
|
});
|
|
load.setName("car set frame"); // NOI18N
|
|
load.start();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
},"rs in route ok dialogue complete");
|
|
JUnitUtil.waitFor(() -> {
|
|
return !load.isAlive();
|
|
},"car set frame complete");
|
|
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
// Exclude car's road name from train
|
|
train1.setCarRoadOption(Train.EXCLUDE_ROADS);
|
|
train1.addCarRoadName(c3.getRoadName());
|
|
|
|
Thread t2 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsNotMove"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t2.isAlive();
|
|
},"rs not move ok dialogue complete");
|
|
jfo.getQueueTool().waitEmpty();
|
|
JemmyUtil.waitFor(f); // wait for frame to become active
|
|
Assert.assertNull("car has destination removed", c3.getDestination());
|
|
Assert.assertNull("car has destination track removed", c3.getDestinationTrack());
|
|
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
JUnitOperationsUtil.checkOperationsShutDownTask();
|
|
}
|
|
|
|
@Test
|
|
public void testCarInTrainErrorBuilt() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// build train
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainByName("STF");
|
|
Assert.assertNotNull("Train exists", train1);
|
|
Assert.assertTrue("Train builds", train1.build());
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.setTitle("Test Car Set Frame");
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
Assert.assertNotNull(jfo);
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
Assert.assertNotNull("car exists", c3);
|
|
Assert.assertEquals("Car is part of train", train1, c3.getTrain());
|
|
|
|
Thread t1 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsInRoute"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
|
|
// should cause dialog car in train to appear
|
|
Thread load = new Thread(() -> {
|
|
f.load(c3);
|
|
});
|
|
load.setName("car set frame"); // NOI18N
|
|
load.start();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
},"rs in route ok dialogue complete");
|
|
JUnitUtil.waitFor(() -> {
|
|
return !load.isAlive();
|
|
},"car set frame load complete");
|
|
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
// Exclude car's built date from train
|
|
train1.setBuiltEndYear("1984");
|
|
Thread t2 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsNotMove"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t2.isAlive();
|
|
},"rs not move ok dialogue complete");
|
|
jfo.getQueueTool().waitEmpty();
|
|
JemmyUtil.waitFor(f); // wait for frame to become active
|
|
Assert.assertNull("car has destination removed", c3.getDestination());
|
|
Assert.assertNull("car has destination track removed", c3.getDestinationTrack());
|
|
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
JUnitOperationsUtil.checkOperationsShutDownTask();
|
|
}
|
|
|
|
@Test
|
|
public void testCarInTrainErrorOwner() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// build train
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainByName("STF");
|
|
Assert.assertNotNull("Train exists", train1);
|
|
Assert.assertTrue("Train builds", train1.build());
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.setTitle("Test Car Set Frame");
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
Assert.assertNotNull(jfo);
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
Assert.assertNotNull("car exists", c3);
|
|
Assert.assertEquals("Car is part of train", train1, c3.getTrain());
|
|
|
|
Thread t1 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsInRoute"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
|
|
// should cause dialog car in train to appear
|
|
Thread load = new Thread(() -> {
|
|
f.load(c3);
|
|
});
|
|
load.setName("car set frame"); // NOI18N
|
|
load.start();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
},"rs in route ok dialogue complete");
|
|
JUnitUtil.waitFor(() -> {
|
|
return !load.isAlive();
|
|
},"car set frame load complete");
|
|
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
// Exclude car's owner name from train
|
|
train1.setOwnerOption(Train.EXCLUDE_OWNERS);
|
|
train1.addOwnerName(c3.getOwnerName());
|
|
Thread t2 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsNotMove"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t2.isAlive();
|
|
},"rs not move ok dialogue complete");
|
|
jfo.getQueueTool().waitEmpty();
|
|
JemmyUtil.waitFor(f); // wait for frame to become active
|
|
Assert.assertNull("car has destination removed", c3.getDestination());
|
|
Assert.assertNull("car has destination track removed", c3.getDestinationTrack());
|
|
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
JUnitOperationsUtil.checkOperationsShutDownTask();
|
|
}
|
|
|
|
@Test
|
|
public void testCarInTrainErrorLocation() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// build train
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainByName("STF");
|
|
Assert.assertNotNull("Train exists", train1);
|
|
Assert.assertTrue("Train builds", train1.build());
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.setTitle("Test Car Set Frame");
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
Assert.assertNotNull(jfo);
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
Assert.assertNotNull("car exists", c3);
|
|
Assert.assertEquals("Car is part of train", train1, c3.getTrain());
|
|
|
|
Thread t1 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsInRoute"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
// should cause dialog car in train to appear
|
|
Thread load = new Thread(() -> {
|
|
f.load(c3);
|
|
});
|
|
load.setName("car set frame"); // NOI18N
|
|
load.start();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
},"rs in route ok dialogue complete");
|
|
JUnitUtil.waitFor(() -> {
|
|
return !load.isAlive();
|
|
},"car set frame load complete");
|
|
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
// Set car's location outside of train's route
|
|
Location westford = JUnitOperationsUtil.createOneNormalLocation("Westford");
|
|
Track track = westford.getTracksList().get(0);
|
|
Assert.assertEquals("Confirm car placement", Track.OKAY, c3.setLocation(westford, track));
|
|
|
|
Thread t2 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsNotMove"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t2.isAlive();
|
|
},"rs not move ok dialogue complete");
|
|
jfo.getQueueTool().waitEmpty();
|
|
JemmyUtil.waitFor(f); // wait for frame to become active
|
|
Assert.assertNull("car has destination removed", c3.getDestination());
|
|
Assert.assertNull("car has destination track removed", c3.getDestinationTrack());
|
|
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
JUnitOperationsUtil.checkOperationsShutDownTask();
|
|
}
|
|
|
|
@Test
|
|
public void testCarInTrainErrorDestination() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// build train
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainByName("STF");
|
|
Assert.assertNotNull("Train exists", train1);
|
|
Assert.assertTrue("Train builds", train1.build());
|
|
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.setTitle("Test Car Set Frame");
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
f.initComponents();
|
|
});
|
|
JFrameOperator jfo = new JFrameOperator(f.getTitle());
|
|
Assert.assertNotNull(jfo);
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Car c3 = cManager.getByRoadAndNumber("CP", "888");
|
|
Assert.assertNotNull("car exists", c3);
|
|
Assert.assertEquals("Car is part of train", train1, c3.getTrain());
|
|
|
|
Thread t1 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsInRoute"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
// should cause dialog car in train to appear
|
|
Thread load = new Thread(() -> {
|
|
f.load(c3);
|
|
});
|
|
load.setName("car set frame"); // NOI18N
|
|
load.start();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
},"rs in route ok dialogue complete");
|
|
JUnitUtil.waitFor(() -> {
|
|
return !load.isAlive();
|
|
},"car set frame load complete");
|
|
|
|
jfo.getQueueTool().waitEmpty();
|
|
|
|
// Set car's destination outside of train's route
|
|
Location westford = JUnitOperationsUtil.createOneNormalLocation("Westford");
|
|
Track track = westford.getTracksList().get(0);
|
|
Assert.assertEquals("Confirm car destination", Track.OKAY, c3.setDestination(westford, track));
|
|
|
|
Assert.assertNotNull("Car's route location exists", c3.getRouteLocation());
|
|
|
|
Thread t2 = JemmyUtil.createModalDialogOperatorThread(Bundle.getMessage("rsNotMove"),
|
|
Bundle.getMessage("ButtonOK"));
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t2.isAlive();
|
|
},"rs not move ok dialogue complete");
|
|
jfo.getQueueTool().waitEmpty();
|
|
JemmyUtil.waitFor(f); // wait for frame to become active
|
|
Assert.assertEquals("car has still has destination", westford, c3.getDestination());
|
|
Assert.assertNull("Car's route location is removed", c3.getRouteLocation());
|
|
JemmyUtil.waitFor(f); // wait for frame to become active
|
|
jfo.requestClose();
|
|
jfo.waitClosed();
|
|
JUnitOperationsUtil.checkOperationsShutDownTask();
|
|
}
|
|
|
|
@Test
|
|
public void testCloseWindowOnSave() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
Car c3 = JUnitOperationsUtil.createAndPlaceCar("DB", "3", "Boxcar", "40", null, 0);
|
|
CarSetFrame f = new CarSetFrame();
|
|
f.initComponents();
|
|
f.load(c3);
|
|
JUnitOperationsUtil.testCloseWindowOnSave(f.getTitle());
|
|
}
|
|
|
|
private void toggleCheckBoxThenClickSave(JFrameOperator jfo, String jCheckBoxText) {
|
|
new JCheckBoxOperator(jfo, jCheckBoxText).doClick();
|
|
new JButtonOperator(jfo, Bundle.getMessage("ButtonSave")).doClick();
|
|
jfo.getQueueTool().waitEmpty();
|
|
}
|
|
|
|
}
|