931 lines
33 KiB
Java
931 lines
33 KiB
Java
package jmri.jmrit.operations.rollingstock.engines.gui;
|
|
|
|
import java.awt.GraphicsEnvironment;
|
|
import java.awt.event.ActionEvent;
|
|
import java.text.MessageFormat;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.Assume;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.junit.jupiter.api.Timeout;
|
|
|
|
import jmri.InstanceManager;
|
|
import jmri.jmrit.operations.OperationsTestCase;
|
|
import jmri.jmrit.operations.locations.Location;
|
|
import jmri.jmrit.operations.locations.LocationManager;
|
|
import jmri.jmrit.operations.locations.Track;
|
|
import jmri.jmrit.operations.rollingstock.cars.CarOwners;
|
|
import jmri.jmrit.operations.rollingstock.cars.CarRoads;
|
|
import jmri.jmrit.operations.rollingstock.engines.*;
|
|
import jmri.jmrit.operations.rollingstock.engines.tools.EngineAttributeEditFrame;
|
|
import jmri.jmrit.operations.setup.Control;
|
|
import jmri.jmrit.operations.setup.Setup;
|
|
import jmri.util.JUnitOperationsUtil;
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.util.swing.JemmyUtil;
|
|
|
|
/**
|
|
* Tests for the Operations EngineEditFrame class
|
|
*
|
|
* @author Dan Boudreau Copyright (C) 2010
|
|
*
|
|
*/
|
|
@Timeout(10)
|
|
public class EngineEditFrameTest extends OperationsTestCase {
|
|
|
|
@Test
|
|
public void testClearRoadNumber() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
f.roadNumberTextField.setText("123");
|
|
JemmyUtil.enterClickAndLeave(f.clearRoadNumberButton);
|
|
Assert.assertEquals("road number", "", f.roadNumberTextField.getText());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testRoadNumberErrorConditionsAddEngine() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
// this will load the weight fields
|
|
f.lengthComboBox.setSelectedIndex(4);
|
|
|
|
// "*" is not a legal character for road number
|
|
f.roadNumberTextField.setText("6*6");
|
|
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.addButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("roadNumNG"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
// test number too long
|
|
StringBuffer sb = new StringBuffer("A");
|
|
for (int i = 0; i < Control.max_len_string_road_number; i++) {
|
|
sb.append(i);
|
|
}
|
|
|
|
f.roadNumberTextField.setText(sb.toString());
|
|
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.addButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("RoadNumTooLong"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
// confirm that delete and save buttons are disabled
|
|
Assert.assertFalse(f.saveButton.isEnabled());
|
|
Assert.assertFalse(f.deleteButton.isEnabled());
|
|
|
|
// enter a good road number
|
|
f.roadNumberTextField.setText("123");
|
|
|
|
JemmyUtil.enterClickAndLeave(f.addButton);
|
|
// confirm that delete and save buttons are enabled
|
|
Assert.assertTrue(f.saveButton.isEnabled());
|
|
Assert.assertTrue(f.deleteButton.isEnabled());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testRoadNumberErrorConditionsSaveEngine() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
EngineManager eManager = InstanceManager.getDefault(EngineManager.class);
|
|
Engine e1 = eManager.getByRoadAndNumber("PC", "5016");
|
|
|
|
EngineLengths el = InstanceManager.getDefault(EngineLengths.class);
|
|
el.addName("59");
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
f.load(e1);
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
// confirm that delete and save buttons are enabled
|
|
Assert.assertTrue(f.saveButton.isEnabled());
|
|
Assert.assertTrue(f.deleteButton.isEnabled());
|
|
|
|
// "*" is not a legal character for road number
|
|
f.roadNumberTextField.setText("6*6");
|
|
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("roadNumNG"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
// test number too long
|
|
StringBuffer sb = new StringBuffer("A");
|
|
for (int i = 0; i < Control.max_len_string_road_number; i++) {
|
|
sb.append(i);
|
|
}
|
|
|
|
f.roadNumberTextField.setText(sb.toString());
|
|
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("RoadNumTooLong"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
// wait for dialog window to disappear
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return f.isActive();
|
|
}, "wait for dialog window to clear");
|
|
|
|
// enter a good road number
|
|
f.roadNumberTextField.setText("123");
|
|
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
|
|
Assert.assertNull(eManager.getByRoadAndNumber("PC", "5016"));
|
|
Assert.assertNotNull(eManager.getByRoadAndNumber("PC", "123"));
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testSaveEngine() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// confirm load
|
|
EngineManager engineManager = InstanceManager.getDefault(EngineManager.class);
|
|
Assert.assertEquals("number of engines", 4, engineManager.getNumEntries());
|
|
|
|
Engine engine = engineManager.getByRoadAndNumber("PC", "5559");
|
|
// confirm engine id
|
|
Assert.assertEquals("engine id", "PC5559", engine.getId());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
f.load(engine);
|
|
|
|
Assert.assertEquals("engine road", "PC", f.roadComboBox.getSelectedItem());
|
|
Assert.assertEquals("engine number", "5559", f.roadNumberTextField.getText());
|
|
|
|
// change road number for this engine
|
|
f.roadNumberTextField.setText("54321");
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
engine = engineManager.getByRoadAndNumber("PC", "54321");
|
|
Assert.assertNotNull("engine exists", engine);
|
|
// confirm engine id was modified
|
|
Assert.assertEquals("engine id", "PC54321", engine.getId());
|
|
|
|
// close on save
|
|
Setup.setCloseWindowOnSaveEnabled(true);
|
|
|
|
// change road name
|
|
f.roadComboBox.setSelectedItem("SP");
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
engine = engineManager.getByRoadAndNumber("SP", "54321");
|
|
Assert.assertNotNull("engine exists", engine);
|
|
// confirm engine id was modified
|
|
Assert.assertEquals("engine id", "SP54321", engine.getId());
|
|
|
|
Assert.assertFalse("window closed", f.isVisible());
|
|
}
|
|
|
|
@Test
|
|
public void testSaveExistingEngine() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
EngineManager eManager = InstanceManager.getDefault(EngineManager.class);
|
|
Engine e1 = eManager.getByRoadAndNumber("PC", "5016");
|
|
|
|
EngineLengths el = InstanceManager.getDefault(EngineLengths.class);
|
|
el.addName("59");
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
f.load(e1);
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
// confirm that 5019 already exists
|
|
Assert.assertNotNull(eManager.getByRoadAndNumber("PC", "5019"));
|
|
|
|
// enter an existing road number
|
|
f.roadNumberTextField.setText("5019");
|
|
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("engineCanNotUpdate"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testWeightErrorConditions() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
// confirm that delete and save buttons are NOT enabled
|
|
Assert.assertFalse(f.saveButton.isEnabled());
|
|
Assert.assertFalse(f.deleteButton.isEnabled());
|
|
|
|
// enter a good road number
|
|
f.roadNumberTextField.setText("123456");
|
|
|
|
f.weightTonsTextField.setText("Bogus Weight");
|
|
// new dialog warning engine weight
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.addButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("WeightTonError"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
f.weightTonsTextField.setText("100");
|
|
JemmyUtil.enterClickAndLeave(f.addButton);
|
|
|
|
// confirm that delete and save buttons are enabled
|
|
Assert.assertTrue(f.saveButton.isEnabled());
|
|
Assert.assertTrue(f.deleteButton.isEnabled());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testHpErrorConditions() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
f.hpTextField.setText("Bogus HP");
|
|
// new dialog warning engine HP
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.addButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("engineCanNotHp"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testEditRoadButton() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editRoadButton);
|
|
Assert.assertTrue(f.engineAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", EngineAttributeEditFrame.ROAD, f.engineAttributeEditFrame._attribute);
|
|
|
|
// test that the attribute edit frame gets disposed
|
|
f.buttonEditActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null));
|
|
Assert.assertFalse(f.engineAttributeEditFrame.isShowing());
|
|
|
|
JUnitUtil.dispose(f.engineAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testEditModelButton() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editModelButton);
|
|
Assert.assertTrue(f.engineAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", EngineAttributeEditFrame.MODEL, f.engineAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f.engineAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testEditTypeButton() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editTypeButton);
|
|
Assert.assertTrue(f.engineAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", EngineAttributeEditFrame.TYPE, f.engineAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f.engineAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testEditLengthButton() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editLengthButton);
|
|
Assert.assertTrue(f.engineAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", EngineAttributeEditFrame.LENGTH, f.engineAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f.engineAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testEditOwnerButton() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editOwnerButton);
|
|
Assert.assertTrue(f.engineAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", EngineAttributeEditFrame.OWNER, f.engineAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f.engineAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testEditGroupButton() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editGroupButton);
|
|
Assert.assertTrue(f.engineAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", EngineAttributeEditFrame.CONSIST, f.engineAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f.engineAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testLocationComboBox() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
|
|
Location loc1 = lm.getLocationByName("North End Staging");
|
|
Location loc2 = lm.getLocationByName("North Industries");
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
f.roadNumberTextField.setText("10345");
|
|
f.roadComboBox.setSelectedItem("SP");
|
|
|
|
EngineManager em = InstanceManager.getDefault(EngineManager.class);
|
|
Engine engine = em.getByRoadAndNumber("SP", "10345");
|
|
Assert.assertNull("engine exists", engine);
|
|
|
|
f.lengthComboBox.setSelectedIndex(4);
|
|
|
|
// test no track selected error
|
|
f.locationBox.setSelectedIndex(1);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.addButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("rsCanNotLoc"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
engine = em.getByRoadAndNumber("SP", "10345");
|
|
Assert.assertNotNull("engine exists", engine);
|
|
|
|
Assert.assertEquals("engine location", null, engine.getLocation());
|
|
|
|
f.trackLocationBox.setSelectedIndex(1);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.addButton);
|
|
// engine already exists
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("engineCanNotUpdate"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertEquals("engine location", null, engine.getLocation());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
// engine location should have been updated
|
|
Assert.assertEquals("engine location", loc1, engine.getLocation());
|
|
|
|
// now change location
|
|
f.locationBox.setSelectedIndex(2);
|
|
f.trackLocationBox.setSelectedIndex(1);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
Assert.assertEquals("engine location", loc2, engine.getLocation());
|
|
|
|
// add a track
|
|
Assert.assertEquals("Number of locations", 4, f.locationBox.getItemCount());
|
|
Assert.assertEquals("Number of tracks", 2, f.trackLocationBox.getItemCount());
|
|
Track testSpur = loc2.addTrack("Test_Spur", Track.SPUR);
|
|
|
|
// add a location to cause update to both location and track comboboxes
|
|
lm.newLocation("Test_Location");
|
|
Assert.assertEquals("Number of locations", 5, f.locationBox.getItemCount());
|
|
Assert.assertEquals("Number of tracks", 3, f.trackLocationBox.getItemCount());
|
|
|
|
// try to set engine to test spur, with a length of 0
|
|
f.trackLocationBox.setSelectedIndex(2);
|
|
// get response message
|
|
String status = engine.setLocation(loc2, testSpur);
|
|
Assert.assertFalse(status.equals(Track.OKAY));
|
|
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("rsCanNotLoc"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.pressDialogButton(f, MessageFormat
|
|
.format(Bundle.getMessage("rsOverride"), new Object[]{status}), Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
// confirm engine location and track didn't change
|
|
Assert.assertNotEquals("track", testSpur, engine.getTrack());
|
|
|
|
// do it again, but say yes
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("rsCanNotLoc"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.pressDialogButton(f, MessageFormat
|
|
.format(Bundle.getMessage("rsOverride"), new Object[]{status}), Bundle.getMessage("ButtonYes"));
|
|
JemmyUtil.waitFor(f);
|
|
// confirm engine location and track changed
|
|
Assert.assertEquals("track", testSpur, engine.getTrack());
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testAddEngine() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// increase test coverage
|
|
Setup.setValueEnabled(true);
|
|
Setup.setRfidEnabled(true);
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
f.setTitle("Test Add Engine Frame");
|
|
|
|
// add a new Engine
|
|
f.roadComboBox.setSelectedItem("SP");
|
|
f.roadNumberTextField.setText("6");
|
|
f.modelComboBox.setSelectedItem("SW8");
|
|
f.builtTextField.setText("1999");
|
|
f.ownerComboBox.setSelectedItem("AT");
|
|
f.commentTextField.setText("test Engine comment field");
|
|
JemmyUtil.enterClickAndLeave(f.addButton);
|
|
|
|
EngineManager em = InstanceManager.getDefault(EngineManager.class);
|
|
Assert.assertEquals("number of Engines", 5, em.getNumEntries());
|
|
Engine e6 = em.getByRoadAndNumber("SP", "6");
|
|
|
|
Assert.assertNotNull("Engine exists", e6);
|
|
Assert.assertEquals("Engine type", "SW8", e6.getModel());
|
|
Assert.assertEquals("Engine type", "Diesel", e6.getTypeName());
|
|
Assert.assertEquals("Engine length", "44", e6.getLength()); //default for SW8 is 44
|
|
Assert.assertEquals("Engine built", "1999", e6.getBuilt());
|
|
Assert.assertEquals("Engine owner", "AT", e6.getOwnerName());
|
|
Assert.assertEquals("Engine comment", "test Engine comment field", e6.getComment());
|
|
Assert.assertFalse(e6.isBunit());
|
|
Assert.assertEquals("Blocking order", Engine.DEFAULT_BLOCKING_ORDER, e6.getBlocking());
|
|
|
|
// make B unit
|
|
JemmyUtil.enterClickAndLeave(f.bUnitCheckBox);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
Assert.assertEquals("number of Engines", 5, em.getNumEntries());
|
|
|
|
Assert.assertTrue(e6.isBunit());
|
|
Assert.assertEquals("Blocking order", Engine.B_UNIT_BLOCKING, e6.getBlocking());
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testEngineEditFrameRead() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
EngineManager em = InstanceManager.getDefault(EngineManager.class);
|
|
Engine e1 = em.getByRoadAndNumber("PC", "5016");
|
|
e1.setComment("Test engine Comment for E1");
|
|
|
|
EngineLengths el = InstanceManager.getDefault(EngineLengths.class);
|
|
el.addName("59");
|
|
|
|
Location location = InstanceManager.getDefault(LocationManager.class).getLocationByName("North End Staging");
|
|
Track track = location.getTrackByName("North End 1", null);
|
|
Assert.assertEquals("place engine", Track.OKAY, e1.setLocation(location, track));
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
f.load(e1);
|
|
f.setTitle("Test Edit Engine Frame");
|
|
|
|
Assert.assertEquals("Engine road", "PC", f.roadComboBox.getSelectedItem());
|
|
Assert.assertEquals("Engine number", "5016", f.roadNumberTextField.getText());
|
|
Assert.assertEquals("Engine type", "GP40", f.modelComboBox.getSelectedItem());
|
|
Assert.assertEquals("Engine type", "Diesel", f.typeComboBox.getSelectedItem());
|
|
Assert.assertEquals("Engine length", "59", f.lengthComboBox.getSelectedItem());
|
|
Assert.assertEquals("Engine weight", "122", f.weightTonsTextField.getText());
|
|
Assert.assertEquals("Engine built", "1990", f.builtTextField.getText());
|
|
Assert.assertEquals("Engine owner", "AT", f.ownerComboBox.getSelectedItem());
|
|
Assert.assertEquals("Engine comment", "Test engine Comment for E1", f.commentTextField.getText());
|
|
|
|
Assert.assertEquals("Engine location", location, f.locationBox.getSelectedItem());
|
|
Assert.assertEquals("Engine track", track, f.trackLocationBox.getSelectedItem());
|
|
|
|
// test delete button
|
|
JemmyUtil.enterClickAndLeave(f.deleteButton);
|
|
Assert.assertEquals("number of Engines", 3, em.getNumEntries());
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testAddNewRoadNo() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData(); // load engines
|
|
EngineManager em = InstanceManager.getDefault(EngineManager.class);
|
|
|
|
Engine e1 = em.getByRoadAndNumber("PC", "5524");
|
|
e1.setRoadName("TEST_ROAD");
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
// should cause add road dialog to appear
|
|
Thread load = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load.setName("load edit frame"); // NOI18N
|
|
load.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("addRoad"), Bundle.getMessage("ButtonNo"));
|
|
|
|
try {
|
|
load.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertFalse(InstanceManager.getDefault(CarRoads.class).containsName("TEST_ROAD"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testAddNewRoadYes() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData(); // load engines
|
|
EngineManager engineManager = InstanceManager.getDefault(EngineManager.class);
|
|
|
|
Engine e1 = engineManager.getByRoadAndNumber("PC", "5524");
|
|
e1.setRoadName("TEST_ROAD");
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
// should cause add road dialog to appear
|
|
Thread load = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load.setName("load edit frame"); // NOI18N
|
|
load.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("addRoad"), Bundle.getMessage("ButtonYes"));
|
|
|
|
try {
|
|
load.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertTrue(InstanceManager.getDefault(CarRoads.class).containsName("TEST_ROAD"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testAddNewModel() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData(); // load engines
|
|
EngineManager engineManager = InstanceManager.getDefault(EngineManager.class);
|
|
|
|
Engine e1 = engineManager.getByRoadAndNumber("PC", "5524");
|
|
e1.setModel("TEST_MODEL");
|
|
e1.setTypeName("Diesel");
|
|
e1.setLength("50");
|
|
e1.setHp("2000");
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
// should cause add model dialog to appear
|
|
Thread load = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load.setName("load edit frame"); // NOI18N
|
|
load.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("engineAddModel"), Bundle.getMessage("ButtonNo"));
|
|
|
|
try {
|
|
load.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertFalse(InstanceManager.getDefault(EngineModels.class).containsName("TEST_MODEL"));
|
|
|
|
// now answer yes to add model
|
|
Thread load2 = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load2.setName("load edit frame"); // NOI18N
|
|
load2.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load2.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("engineAddModel"), Bundle.getMessage("ButtonYes"));
|
|
|
|
try {
|
|
load2.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertTrue(InstanceManager.getDefault(EngineModels.class).containsName("TEST_MODEL"));
|
|
|
|
JUnitUtil.dispose(f);
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testAddNewType() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData(); // load engines
|
|
EngineManager engineManager = InstanceManager.getDefault(EngineManager.class);
|
|
|
|
Engine e1 = engineManager.getByRoadAndNumber("PC", "5524");
|
|
e1.setTypeName("TEST_TYPE");
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
// should cause add type dialog to appear
|
|
Thread load = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load.setName("load edit frame"); // NOI18N
|
|
load.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("addType"), Bundle.getMessage("ButtonNo"));
|
|
|
|
try {
|
|
load.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertFalse(InstanceManager.getDefault(EngineTypes.class).containsName("TEST_TYPE"));
|
|
|
|
// now answer yes to add type
|
|
Thread load2 = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load2.setName("load edit frame"); // NOI18N
|
|
load2.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load2.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("addType"), Bundle.getMessage("ButtonYes"));
|
|
|
|
try {
|
|
load2.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertTrue(InstanceManager.getDefault(EngineTypes.class).containsName("TEST_TYPE"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testAddNewLength() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData(); // load engines
|
|
EngineManager engineManager = InstanceManager.getDefault(EngineManager.class);
|
|
|
|
Engine e1 = engineManager.getByRoadAndNumber("PC", "5524");
|
|
e1.setLength("1234");
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
// should cause add length dialog to appear
|
|
Thread load = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load.setName("load edit frame"); // NOI18N
|
|
load.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("addLength"), Bundle.getMessage("ButtonNo"));
|
|
|
|
try {
|
|
load.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertFalse(InstanceManager.getDefault(EngineLengths.class).containsName("1234"));
|
|
|
|
// now answer yes to add type
|
|
Thread load2 = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load2.setName("load edit frame"); // NOI18N
|
|
load2.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load2.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("addLength"), Bundle.getMessage("ButtonYes"));
|
|
|
|
try {
|
|
load2.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertTrue(InstanceManager.getDefault(EngineLengths.class).containsName("1234"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testAddOwner() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData(); // load engines
|
|
EngineManager engineManager = InstanceManager.getDefault(EngineManager.class);
|
|
|
|
Engine e1 = engineManager.getByRoadAndNumber("PC", "5524");
|
|
e1.setOwnerName("TEST_OWNER");
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
|
|
// should cause add owner dialog to appear
|
|
Thread load = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load.setName("load edit frame"); // NOI18N
|
|
load.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("addOwner"), Bundle.getMessage("ButtonNo"));
|
|
|
|
try {
|
|
load.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertFalse(InstanceManager.getDefault(CarOwners.class).containsName("TEST_OWNER"));
|
|
|
|
// now answer yes to add owner
|
|
Thread load2 = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
f.load(e1);
|
|
}
|
|
});
|
|
load2.setName("load edit frame"); // NOI18N
|
|
load2.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return load2.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("addOwner"), Bundle.getMessage("ButtonYes"));
|
|
|
|
try {
|
|
load2.join();
|
|
} catch (InterruptedException e) {
|
|
// do nothing
|
|
}
|
|
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertTrue(InstanceManager.getDefault(CarOwners.class).containsName("TEST_OWNER"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testSaveConsist() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData(); // load engines
|
|
EngineManager engineManager = InstanceManager.getDefault(EngineManager.class);
|
|
|
|
Engine e1 = engineManager.getByRoadAndNumber("PC", "5524");
|
|
Assert.assertEquals("consist name", "C14", e1.getConsistName());
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
f.load(e1);
|
|
|
|
Consist c = InstanceManager.getDefault(ConsistManager.class).newConsist("TEST_CONSIST");
|
|
f.groupComboBox.setSelectedItem(c.getName());
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
Assert.assertEquals("consist name", "TEST_CONSIST", e1.getConsistName());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@Test
|
|
public void testConsist() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData(); // load engines
|
|
EngineManager engineManager = InstanceManager.getDefault(EngineManager.class);
|
|
|
|
Engine e1 = engineManager.getByRoadAndNumber("PC", "5524");
|
|
Assert.assertEquals("consist name", "C14", e1.getConsistName());
|
|
|
|
Engine e2 = engineManager.getByRoadAndNumber("PC", "5559");
|
|
Assert.assertEquals("consist name", "C14", e2.getConsistName());
|
|
|
|
Location location = InstanceManager.getDefault(LocationManager.class).getLocationByName("North End Staging");
|
|
Track track = location.getTrackByName("North End 1", null);
|
|
Assert.assertEquals("place engine", Track.OKAY, e1.setLocation(location, track));
|
|
|
|
EngineEditFrame f = new EngineEditFrame();
|
|
f.initComponents();
|
|
f.load(e1);
|
|
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("enginePartConsist"), Bundle.getMessage("ButtonYes"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertEquals("Confirm location change", location, e2.getLocation());
|
|
Assert.assertEquals("Confirm track change", track, e2.getTrack());
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
}
|