1337 lines
51 KiB
Java
1337 lines
51 KiB
Java
package jmri.jmrit.operations.rollingstock.cars.gui;
|
|
|
|
import java.text.MessageFormat;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.junit.jupiter.api.Timeout;
|
|
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
|
|
|
|
import jmri.InstanceManager;
|
|
import jmri.jmrit.operations.OperationsTestCase;
|
|
import jmri.jmrit.operations.locations.*;
|
|
import jmri.jmrit.operations.rollingstock.cars.*;
|
|
import jmri.jmrit.operations.rollingstock.cars.tools.CarAttributeEditFrame;
|
|
import jmri.jmrit.operations.setup.Control;
|
|
import jmri.jmrit.operations.setup.Setup;
|
|
import jmri.util.*;
|
|
import jmri.util.swing.JemmyUtil;
|
|
|
|
/**
|
|
* Tests for the Operations Cars GUI class
|
|
*
|
|
* @author Dan Boudreau Copyright (C) 2009
|
|
*/
|
|
@Timeout(10)
|
|
public class CarEditFrameTest extends OperationsTestCase {
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testClearRoadNumber() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
f.roadNumberTextField.setText("123");
|
|
JemmyUtil.enterClickAndLeave(f.clearRoadNumberButton);
|
|
Assert.assertEquals("road number", "", f.roadNumberTextField.getText());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testRoadNumberErrorConditions() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
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
|
|
StringBuilder sb = new StringBuilder("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);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testWeightErrorConditions() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
// enter a good road number
|
|
f.roadNumberTextField.setText("123456");
|
|
|
|
// new dialog warning car weight
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.addButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("carActualWeight"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
f.weightTextField.setText("1.5"); // good oz weight
|
|
f.weightTonsTextField.setText("Bogus Weight");
|
|
// new dialog warning car weight
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.addButton);
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("WeightTonError"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
// this will load the weight fields
|
|
f.lengthComboBox.setSelectedIndex(4);
|
|
|
|
// confirm that delete and save buttons are NOT enabled
|
|
Assert.assertFalse(f.saveButton.isEnabled());
|
|
Assert.assertFalse(f.deleteButton.isEnabled());
|
|
|
|
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);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testWeightCalculation() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.fillWeightButton);
|
|
Assert.assertEquals("Calculated weight for 32 foot car", "64", f.weightTonsTextField.getText());
|
|
|
|
// weight for caboose is reduced
|
|
JemmyUtil.enterClickAndLeave(f.cabooseCheckBox);
|
|
JemmyUtil.enterClickAndLeave(f.fillWeightButton);
|
|
Assert.assertEquals("Calculated weight for 32 foot caboose", "28", f.weightTonsTextField.getText());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testWeightPassengerCalculation() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
// weight for passenger is reduced
|
|
JemmyUtil.enterClickAndLeave(f.passengerCheckBox);
|
|
JemmyUtil.enterClickAndLeave(f.fillWeightButton);
|
|
Assert.assertEquals("Calculated weight for 32 foot caboose", "28", f.weightTonsTextField.getText());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.passengerCheckBox);
|
|
JemmyUtil.enterClickAndLeave(f.fillWeightButton);
|
|
Assert.assertEquals("Calculated weight for 32 foot car", "64", f.weightTonsTextField.getText());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testEditRoadButton() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editRoadButton);
|
|
Assert.assertTrue(f.carAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", CarAttributeEditFrame.ROAD, f.carAttributeEditFrame._attribute);
|
|
|
|
// now change to car type
|
|
JemmyUtil.enterClickAndLeave(f.editTypeButton);
|
|
Assert.assertTrue(f.carAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", CarAttributeEditFrame.TYPE, f.carAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f);
|
|
Assert.assertNull(f.carAttributeEditFrame);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testEditTypeButton() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editTypeButton);
|
|
Assert.assertTrue(f.carAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", CarAttributeEditFrame.TYPE, f.carAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f.carAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testEditColorButton() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editColorButton);
|
|
Assert.assertTrue(f.carAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", CarAttributeEditFrame.COLOR, f.carAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f.carAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testEditLengthButton() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editLengthButton);
|
|
Assert.assertTrue(f.carAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", CarAttributeEditFrame.LENGTH, f.carAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f.carAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testEditOwnerButton() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editOwnerButton);
|
|
Assert.assertTrue(f.carAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", CarAttributeEditFrame.OWNER, f.carAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f.carAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testEditGroupButton() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editGroupButton);
|
|
Assert.assertTrue(f.carAttributeEditFrame.isShowing());
|
|
Assert.assertEquals("Check attribute", CarAttributeEditFrame.KERNEL, f.carAttributeEditFrame._attribute);
|
|
|
|
JUnitUtil.dispose(f.carAttributeEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testEditLoadButton() {
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
JemmyUtil.enterClickAndLeave(f.editLoadButton);
|
|
Assert.assertTrue(f.carLoadEditFrame.isShowing());
|
|
|
|
// for test coverage
|
|
JemmyUtil.enterClickAndLeave(f.editLoadButton);
|
|
Assert.assertTrue(f.carLoadEditFrame.isShowing());
|
|
|
|
JUnitUtil.dispose(f.carLoadEditFrame);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testLocationComboBox() {
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
|
|
Location loc1 = lm.getLocationByName("North End Staging");
|
|
Location loc2 = lm.getLocationByName("North Industries");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
Assert.assertTrue(f.isShowing());
|
|
|
|
f.roadNumberTextField.setText("10345");
|
|
f.roadComboBox.setSelectedItem("SP");
|
|
|
|
CarManager cm = InstanceManager.getDefault(CarManager.class);
|
|
Car car = cm.getByRoadAndNumber("SP", "10345");
|
|
Assert.assertNull(car);
|
|
|
|
// this will load the weight fields
|
|
f.lengthComboBox.setSelectedIndex(4); // 40 foot car
|
|
|
|
// 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);
|
|
|
|
car = cm.getByRoadAndNumber("SP", "10345");
|
|
Assert.assertNotNull(car);
|
|
|
|
Assert.assertEquals("car location", null, car.getLocation());
|
|
|
|
f.trackLocationBox.setSelectedIndex(1);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.addButton);
|
|
// car already exists
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("carCanNotAdd"), Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertEquals("car location", null, car.getLocation());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
// car location should have been updated
|
|
Assert.assertEquals("car location", loc1, car.getLocation());
|
|
|
|
// now change location
|
|
f.locationBox.setSelectedIndex(2);
|
|
f.trackLocationBox.setSelectedIndex(1);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
Assert.assertEquals("car location", loc2, car.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 car to test spur, with a length of 0
|
|
f.trackLocationBox.setSelectedIndex(2);
|
|
// get response message
|
|
String status = car.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 car location and track didn't change
|
|
Assert.assertNotEquals("track", testSpur, car.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 car location and track changed
|
|
Assert.assertEquals("track", testSpur, car.getTrack());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddCar() {
|
|
|
|
// increase test coverage
|
|
Setup.setValueEnabled(true);
|
|
Setup.setRfidEnabled(true);
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
f.setTitle("Test Add Car Frame");
|
|
|
|
// this will also create property changes
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
|
|
// confirm load
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Assert.assertEquals("number of cars", 9, cManager.getNumEntries());
|
|
|
|
// add a new car
|
|
f.roadNumberTextField.setText("6");
|
|
f.roadComboBox.setSelectedItem("SP");
|
|
f.typeComboBox.setSelectedItem(Bundle.getMessage("Caboose"));
|
|
f.lengthComboBox.setSelectedItem("38");
|
|
f.colorComboBox.setSelectedItem("Black");
|
|
f.loadComboBox.setSelectedItem("L");
|
|
f.builtTextField.setText("1999");
|
|
f.ownerComboBox.setSelectedItem("DAB");
|
|
f.commentTextField.setText("test car comment field");
|
|
|
|
// Save button should be disabled
|
|
// Jemmy has no way to click a disabled button.
|
|
// JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
Car c6 = cManager.getByRoadAndNumber("SP", "6");
|
|
Assert.assertNull("Car should not exist", c6);
|
|
|
|
// use add button
|
|
JemmyUtil.enterClickAndLeave(f.addButton);
|
|
|
|
c6 = cManager.getByRoadAndNumber("SP", "6");
|
|
Assert.assertNotNull("Car create", c6);
|
|
Assert.assertEquals("car type", Bundle.getMessage("Caboose"), c6.getTypeName());
|
|
Assert.assertEquals("car length", "38", c6.getLength());
|
|
Assert.assertEquals("car color", "Black", c6.getColor());
|
|
Assert.assertEquals("car load", "L", c6.getLoadName());
|
|
Assert.assertEquals("car built", "1999", c6.getBuilt());
|
|
Assert.assertEquals("car owner", "DAB", c6.getOwnerName());
|
|
Assert.assertEquals("car comment", "test car comment field", c6.getComment());
|
|
|
|
// test type default check boxes
|
|
Assert.assertFalse("not a caboose", c6.isCaboose());
|
|
Assert.assertFalse("no fred", c6.hasFred());
|
|
Assert.assertFalse("not hazardous", c6.isHazardous());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.cabooseCheckBox);
|
|
Assert.assertFalse("still not a caboose", c6.isCaboose());
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
// Change all car type to caboose dialog window should appear
|
|
// need to push the "No" button in the dialog window to close
|
|
JemmyUtil.pressDialogButton(f, MessageFormat.format(Bundle.getMessage("carModifyAllType"),
|
|
new Object[] { Bundle.getMessage("Caboose") }), Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertTrue("now a caboose", c6.isCaboose());
|
|
Assert.assertFalse("not hazardous 2", c6.isHazardous());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.fredCheckBox);
|
|
Assert.assertTrue("still a caboose", c6.isCaboose());
|
|
Assert.assertFalse("still no fred", c6.hasFred());
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
// need to push the "No" button in the dialog window to close
|
|
JemmyUtil.pressDialogButton(f, MessageFormat.format(Bundle.getMessage("carModifyAllType"),
|
|
new Object[] { Bundle.getMessage("Caboose") }), Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertFalse("no longer a caboose", c6.isCaboose());
|
|
Assert.assertTrue("now has a fred", c6.hasFred());
|
|
Assert.assertFalse("not hazardous 3", c6.isHazardous());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.hazardousCheckBox);
|
|
Assert.assertFalse("still not hazardous 3", c6.isHazardous());
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
// need to push the "No" button in the dialog window to close
|
|
JemmyUtil.pressDialogButton(f, MessageFormat.format(Bundle.getMessage("carModifyAllType"),
|
|
new Object[] { Bundle.getMessage("Caboose") }), Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertFalse("still no longer a caboose", c6.isCaboose());
|
|
Assert.assertTrue("still has a fred", c6.hasFred());
|
|
Assert.assertTrue("now hazardous", c6.isHazardous());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.utilityCheckBox);
|
|
Assert.assertFalse("not utility", c6.isUtility());
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
// need to push the "No" button in the dialog window to close
|
|
JemmyUtil.pressDialogButton(f, MessageFormat.format(Bundle.getMessage("carModifyAllType"),
|
|
new Object[] { Bundle.getMessage("Caboose") }), Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertTrue("now utility", c6.isUtility());
|
|
Assert.assertFalse("not a caboose", c6.isCaboose());
|
|
Assert.assertTrue("still has a fred", c6.hasFred());
|
|
Assert.assertTrue("still hazardous", c6.isHazardous());
|
|
|
|
// should have one more car
|
|
Assert.assertEquals("number of cars", 10, cManager.getNumEntries());
|
|
|
|
// add another car
|
|
f.roadNumberTextField.setText("7");
|
|
JemmyUtil.enterClickAndLeave(f.addButton);
|
|
Assert.assertEquals("number of cars", 11, cManager.getNumEntries());
|
|
|
|
Car c7 = cManager.getByRoadAndNumber("SP", "6");
|
|
Assert.assertNotNull("Car create", c7);
|
|
|
|
// confirm that c6 still exist
|
|
c6 = cManager.getByRoadAndNumber("SP", "6");
|
|
Assert.assertNotNull("Car create", c6);
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testSaveCar() {
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// confirm load
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Assert.assertEquals("number of cars", 9, cManager.getNumEntries());
|
|
|
|
Car car = cManager.getByRoadAndNumber("CP", "888");
|
|
// confirm car id
|
|
Assert.assertEquals("car id", "CP888", car.getId());
|
|
// improve test coverage
|
|
car.setKernel(new Kernel("One car"));
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
Assert.assertEquals("car road", "CP", f.roadComboBox.getSelectedItem());
|
|
Assert.assertEquals("car number", "888", f.roadNumberTextField.getText());
|
|
// cars in a kernel have blocking numbers
|
|
Assert.assertTrue(f.pBlocking.isVisible());
|
|
|
|
// change road number for this car
|
|
f.roadNumberTextField.setText("54321");
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
car = cManager.getByRoadAndNumber("CP", "54321");
|
|
Assert.assertNotNull("car exists", car);
|
|
// confirm car id was modified
|
|
Assert.assertEquals("car id", "CP54321", car.getId());
|
|
|
|
// close on save
|
|
Setup.setCloseWindowOnSaveEnabled(true);
|
|
|
|
// change road name
|
|
f.roadComboBox.setSelectedItem("SP");
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
car = cManager.getByRoadAndNumber("SP", "54321");
|
|
Assert.assertNotNull("car exists", car);
|
|
// confirm car id was modified
|
|
Assert.assertEquals("car id", "SP54321", car.getId());
|
|
|
|
Assert.assertFalse("window closed", f.isVisible());
|
|
}
|
|
|
|
// @Ignore("AppVeyor:giving up after 3 failures. 12/31/2019")
|
|
// please detail failure so test can be fixed
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testSaveExistingCar() {
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car car = cManager.getByRoadAndNumber("CP", "888");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
// change road number for this car to an existing car
|
|
f.roadNumberTextField.setText("X20002");
|
|
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carCanNotUpdate"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonOK"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
// @Ignore("AppVeyor:giving up after 3 failures. 12/31/2019")
|
|
// please detail failure so test can be fixed
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testSaveCarPassenger() {
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
// confirm load
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
Assert.assertEquals("number of cars", 9, cManager.getNumEntries());
|
|
|
|
Car car = cManager.getByRoadAndNumber("CP", "888");
|
|
Car car2 = cManager.getByRoadAndNumber("CP", "X20002");
|
|
Assert.assertFalse(car.isPassenger());
|
|
Assert.assertFalse(car2.isPassenger());
|
|
Assert.assertEquals("blocking order", 0, car.getBlocking());
|
|
Assert.assertEquals("blocking order", 0, car2.getBlocking());
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.passengerCheckBox);
|
|
f.blockingTextField.setText("23"); // random number for blocking order
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
|
|
// 1st dialog, make all Boxcar passenger?
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
// 2nd dialog, make all Boxcar blocking order 23, no
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertTrue(car.isPassenger());
|
|
Assert.assertFalse(car2.isPassenger());
|
|
Assert.assertEquals("blocking order", 23, car.getBlocking());
|
|
Assert.assertEquals("blocking order", 0, car2.getBlocking());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.passengerCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertFalse(car.isPassenger());
|
|
Assert.assertFalse(car2.isPassenger());
|
|
|
|
// Blocking order gets cleared
|
|
Assert.assertEquals("blocking order", 0, car.getBlocking());
|
|
Assert.assertEquals("blocking order", 0, car2.getBlocking());
|
|
|
|
f.blockingTextField.setText("32"); // random number for blocking order
|
|
JemmyUtil.enterClickAndLeave(f.passengerCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonYes"));
|
|
// 2nd dialog, make all Boxcar blocking order 32, no
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertTrue(car.isPassenger());
|
|
Assert.assertTrue(car2.isPassenger());
|
|
Assert.assertEquals("blocking order", 32, car.getBlocking());
|
|
Assert.assertEquals("blocking order", 0, car2.getBlocking());
|
|
|
|
f.blockingTextField.setText("99"); // random number for blocking order
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonYes"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertTrue(car.isPassenger());
|
|
Assert.assertTrue(car2.isPassenger());
|
|
Assert.assertEquals("blocking order", 99, car.getBlocking());
|
|
Assert.assertEquals("blocking order", 99, car2.getBlocking());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
// @Ignore("AppVeyor:giving up after 3 failures. 12/31/2019")
|
|
// please detail failure so test can be fixed
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testSaveCarCaboose() {
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car car = cManager.getByRoadAndNumber("CP", "888");
|
|
Car car2 = cManager.getByRoadAndNumber("CP", "X20002");
|
|
Assert.assertFalse(car.isCaboose());
|
|
Assert.assertFalse(car2.isCaboose());
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.cabooseCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
// dialog, make all Boxcar Caboose?
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertTrue(car.isCaboose());
|
|
Assert.assertFalse(car2.isCaboose());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.cabooseCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertFalse(car.isCaboose());
|
|
Assert.assertFalse(car2.isCaboose());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.cabooseCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonYes"));
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertTrue(car.isCaboose());
|
|
Assert.assertTrue(car2.isCaboose());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testSaveCarFred() {
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car car = cManager.getByRoadAndNumber("CP", "888");
|
|
Assert.assertFalse(car.hasFred());
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.fredCheckBox);
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
Assert.assertTrue(car.hasFred());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.fredCheckBox);
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
Assert.assertFalse(car.hasFred());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
// @Ignore("AppVeyor:giving up after 3 failures. 12/31/2019")
|
|
// please detail failure so test can be fixed
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testSaveCarUtility() {
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car car = cManager.getByRoadAndNumber("CP", "888");
|
|
Car car2 = cManager.getByRoadAndNumber("CP", "X20002");
|
|
Assert.assertFalse(car.isUtility());
|
|
Assert.assertFalse(car2.isUtility());
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.utilityCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
// dialog, make all Boxcar utility?
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertTrue(car.isUtility());
|
|
Assert.assertFalse(car2.isUtility());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.utilityCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertFalse(car.isUtility());
|
|
Assert.assertFalse(car2.isUtility());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.utilityCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonYes"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertTrue(car.isUtility());
|
|
Assert.assertTrue(car2.isUtility());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
// @Ignore("AppVeyor:giving up after 3 failures. 12/31/2019")
|
|
// please detail failure so test can be fixed
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testSaveCarHazardous() {
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car car = cManager.getByRoadAndNumber("CP", "888");
|
|
Car car2 = cManager.getByRoadAndNumber("CP", "X20002");
|
|
Assert.assertFalse(car.isHazardous());
|
|
Assert.assertFalse(car2.isHazardous());
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
JemmyUtil.enterClickAndLeave(f.hazardousCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
// dialog, make all Boxcar hazardous?
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertTrue(car.isHazardous());
|
|
Assert.assertFalse(car2.isHazardous());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.hazardousCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertFalse(car.isHazardous());
|
|
Assert.assertFalse(car2.isHazardous());
|
|
|
|
JemmyUtil.enterClickAndLeave(f.hazardousCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carModifyAllType"), new Object[] { car.getTypeName() }),
|
|
Bundle.getMessage("ButtonYes"));
|
|
JemmyUtil.waitFor(f);
|
|
Assert.assertTrue(car.isHazardous());
|
|
Assert.assertTrue(car2.isHazardous());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testSaveKernel() {
|
|
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car car = cManager.getByRoadAndNumber("CP", "888");
|
|
Car car2 = cManager.getByRoadAndNumber("CP", "X20002");
|
|
Assert.assertNull(car.getKernel());
|
|
Assert.assertNull(car2.getKernel());
|
|
Assert.assertEquals("Track", "NI Yard", car.getTrackName());
|
|
Assert.assertEquals("Track", "North End 2", car2.getTrackName());
|
|
Assert.assertEquals("Load", "E", car.getLoadName());
|
|
Assert.assertEquals("Load", "E", car2.getLoadName());
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
f.load(car);
|
|
|
|
// create a kernel
|
|
Kernel k = InstanceManager.getDefault(KernelManager.class).newKernel("Test_Kernel");
|
|
car2.setKernel(k);
|
|
|
|
f.groupComboBox.setSelectedItem("Test_Kernel");
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
// dialog requesting to make all cars in kernel to have the same location and
|
|
// track
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carPartKernel"), new Object[] { car2.getKernelName() }),
|
|
Bundle.getMessage("ButtonNo"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertEquals("kernel", k, car.getKernel());
|
|
Assert.assertEquals("order", 2, car.getBlocking());
|
|
Assert.assertFalse(car.getKernel().isLead(car));
|
|
Assert.assertFalse(car.isLead());
|
|
Assert.assertEquals("Track", "North End 2", car2.getTrackName());
|
|
|
|
// now remove the kernel
|
|
f.groupComboBox.setSelectedIndex(0);
|
|
JemmyUtil.enterClickAndLeave(f.saveButton);
|
|
Assert.assertNull(car.getKernel());
|
|
|
|
// If car has FRED it becomes the lead
|
|
f.groupComboBox.setSelectedItem("Test_Kernel");
|
|
JemmyUtil.enterClickAndLeave(f.fredCheckBox);
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
// dialog requesting to make all cars in kernel to have the same location and
|
|
// track
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carPartKernel"), new Object[] { car2.getKernelName() }),
|
|
Bundle.getMessage("ButtonYes"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertEquals("kernel", k, car.getKernel());
|
|
Assert.assertEquals("order", 2, car.getBlocking());
|
|
Assert.assertTrue(car.getKernel().isLead(car));
|
|
Assert.assertEquals("Track", "NI Yard", car2.getTrackName());
|
|
|
|
// confirm that car's wait and schedule id gets updated when load changes
|
|
car.setWait(1);
|
|
car.setScheduleItemId("someId");
|
|
car2.setWait(1);
|
|
car2.setScheduleItemId("someId");
|
|
|
|
// change the car's load
|
|
f.loadComboBox.setSelectedItem("L");
|
|
JemmyUtil.enterClickAndLeaveThreadSafe(f.saveButton);
|
|
// dialog requesting to make all cars in kernel have the same load
|
|
JemmyUtil.pressDialogButton(f,
|
|
MessageFormat.format(Bundle.getMessage("carPartKernel"), new Object[] { car2.getKernelName() }),
|
|
Bundle.getMessage("ButtonYes"));
|
|
JemmyUtil.waitFor(f);
|
|
|
|
Assert.assertEquals("Load", "L", car.getLoadName());
|
|
Assert.assertEquals("Wait", 0, car.getWait());
|
|
Assert.assertEquals("Schedule id", Car.NONE, car.getScheduleItemId());
|
|
|
|
Assert.assertEquals("Load", "L", car2.getLoadName());
|
|
Assert.assertEquals("Wait", 0, car2.getWait());
|
|
Assert.assertEquals("Schedule id", Car.NONE, car2.getScheduleItemId());
|
|
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testCarEditFrameRead() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Assert.assertEquals("number of cars", 9, cManager.getNumEntries());
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "C10099");
|
|
|
|
c1.setWeight("1.4");
|
|
c1.setWeightTons("Tons of Weight");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
f.load(c1);
|
|
f.setTitle("Test Edit Car Frame");
|
|
|
|
Assert.assertEquals("car road", "CP", f.roadComboBox.getSelectedItem());
|
|
Assert.assertEquals("car number", "C10099", f.roadNumberTextField.getText());
|
|
Assert.assertEquals("car type", Bundle.getMessage("Caboose"), f.typeComboBox.getSelectedItem());
|
|
Assert.assertEquals("car length", "32", f.lengthComboBox.getSelectedItem());
|
|
Assert.assertEquals("car weight", "1.4", f.weightTextField.getText());
|
|
Assert.assertEquals("car weight tons", "Tons of Weight", f.weightTonsTextField.getText());
|
|
Assert.assertEquals("car color", "Red", f.colorComboBox.getSelectedItem());
|
|
Assert.assertEquals("car load", "E", f.loadComboBox.getSelectedItem());
|
|
Assert.assertEquals("car built", "1980", f.builtTextField.getText());
|
|
Assert.assertEquals("car owner", "AT", f.ownerComboBox.getSelectedItem());
|
|
Assert.assertEquals("car comment", "Test Car CP C10099 Comment", f.commentTextField.getText());
|
|
|
|
Assert.assertTrue("car is a caboose", f.cabooseCheckBox.isSelected());
|
|
Assert.assertFalse("car does not have a fred", f.fredCheckBox.isSelected());
|
|
Assert.assertFalse("car is not hazardous", f.hazardousCheckBox.isSelected());
|
|
|
|
// test delete button
|
|
JemmyUtil.enterClickAndLeave(f.deleteButton);
|
|
|
|
// should have one less car
|
|
Assert.assertEquals("number of cars", 8, cManager.getNumEntries());
|
|
Assert.assertNull("car doesn't exist", cManager.getByRoadAndNumber("CP", "C10099"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarRoadNo() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setRoadName("TEST_ROAD");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("addRoad"), Bundle.getMessage("ButtonNo"));
|
|
});
|
|
t1.setName("click testAddNewCarRoadNo Thread");
|
|
t1.start();
|
|
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click No Button in dialogue didn't happen");
|
|
|
|
Assert.assertFalse(InstanceManager.getDefault(CarRoads.class).containsName("TEST_ROAD"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarRoadYes() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setRoadName("TEST_ROAD");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("addRoad"), Bundle.getMessage("ButtonYes"));
|
|
});
|
|
t1.setName("click testAddNewCarRoadYes Thread");
|
|
t1.start();
|
|
|
|
// should cause add road dialog to appear
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click Yes Button in dialogue didn't happen");
|
|
|
|
Assert.assertTrue(InstanceManager.getDefault(CarRoads.class).containsName("TEST_ROAD"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarTypeYes() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setTypeName("TEST_TYPE");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("addType"), Bundle.getMessage("ButtonYes"));
|
|
});
|
|
t1.setName("click testAddNewCarTypeYes Thread");
|
|
t1.start();
|
|
|
|
// should cause add type dialog to appear
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click Yes Button in dialogue didn't happen");
|
|
|
|
Assert.assertTrue(InstanceManager.getDefault(CarTypes.class).containsName("TEST_TYPE"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarTypeNo() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setTypeName("TEST_TYPE");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("addType"), Bundle.getMessage("ButtonNo"));
|
|
});
|
|
t1.setName("click testAddNewCarTypeNo Thread");
|
|
t1.start();
|
|
|
|
// should cause add type dialog to appear
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click No Button in dialogue didn't happen");
|
|
|
|
Assert.assertFalse(InstanceManager.getDefault(CarTypes.class).containsName("TEST_TYPE"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarLengthNo() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setLength("123");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("addLength"), Bundle.getMessage("ButtonNo"));
|
|
});
|
|
t1.setName("click testAddNewCarLengthNo Thread");
|
|
t1.start();
|
|
|
|
// should cause add length dialog to appear
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click No Button in dialogue didn't happen");
|
|
|
|
Assert.assertFalse(InstanceManager.getDefault(CarLengths.class).containsName("123"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarLengthYes() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setLength("123");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("addLength"), Bundle.getMessage("ButtonYes"));
|
|
});
|
|
t1.setName("click testAddNewCarLengthYes Thread");
|
|
t1.start();
|
|
|
|
// should cause add length dialog to appear
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click Yes Button in dialogue didn't happen");
|
|
|
|
Assert.assertTrue(InstanceManager.getDefault(CarLengths.class).containsName("123"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarOwnerNo() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setOwnerName("TEST_OWNER");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("addOwner"), Bundle.getMessage("ButtonNo"));
|
|
});
|
|
t1.setName("click testAddNewCarOwnerNo Thread");
|
|
t1.start();
|
|
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click No Button in dialogue didn't happen");
|
|
|
|
Assert.assertFalse(InstanceManager.getDefault(CarOwners.class).containsName("TEST_OWNER"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarOwnerYes() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setOwnerName("TEST_OWNER");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("addOwner"), Bundle.getMessage("ButtonYes"));
|
|
});
|
|
t1.setName("click testAddNewCarRoadNo Thread");
|
|
t1.start();
|
|
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click No Button in dialogue didn't happen");
|
|
|
|
Assert.assertTrue(InstanceManager.getDefault(CarOwners.class).containsName("TEST_OWNER"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarColorNo() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setColor("TEST_COLOR");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("carAddColor"), Bundle.getMessage("ButtonNo"));
|
|
});
|
|
t1.setName("click testAddNewCarColorNo Thread");
|
|
t1.start();
|
|
|
|
// should cause add color dialog to appear
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click No Button in dialogue didn't happen");
|
|
|
|
Assert.assertFalse(InstanceManager.getDefault(CarColors.class).containsName("TEST_COLOR"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarColorYes() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setColor("TEST_COLOR");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("carAddColor"), Bundle.getMessage("ButtonYes"));
|
|
});
|
|
t1.setName("click testAddNewCarColorYes Thread");
|
|
t1.start();
|
|
|
|
// should cause add color dialog to appear
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click Yes Button in dialogue didn't happen");
|
|
|
|
Assert.assertTrue(InstanceManager.getDefault(CarColors.class).containsName("TEST_COLOR"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarLoadNo() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setLoadName("TEST_LOAD");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("addLoad"), Bundle.getMessage("ButtonNo"));
|
|
});
|
|
t1.setName("click testAddNewCarLoadNo Thread");
|
|
t1.start();
|
|
|
|
// should cause add load dialog to appear
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click No Button in dialogue didn't happen");
|
|
|
|
Assert.assertFalse(InstanceManager.getDefault(CarLoads.class).containsName(c1.getTypeName(), "TEST_LOAD"));
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
@Test
|
|
public void testAddNewCarLoadYes() {
|
|
JUnitOperationsUtil.initOperationsData(); // load cars
|
|
CarManager cManager = InstanceManager.getDefault(CarManager.class);
|
|
|
|
Car c1 = cManager.getByRoadAndNumber("CP", "777");
|
|
c1.setLoadName("TEST_LOAD");
|
|
|
|
CarEditFrame f = new CarEditFrame();
|
|
f.initComponents();
|
|
|
|
Thread t1 = new Thread(() -> {
|
|
JemmyUtil.pressDialogButton(f, Bundle.getMessage("addLoad"), Bundle.getMessage("ButtonYes"));
|
|
});
|
|
t1.setName("click testAddNewCarLoadYes Thread");
|
|
t1.start();
|
|
|
|
// should cause add load dialog to appear
|
|
ThreadingUtil.runOnGUI( ()->{
|
|
f.load(c1);
|
|
});
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return !t1.isAlive();
|
|
}, "Click Yes Button in dialogue didn't happen");
|
|
|
|
// confirm change edit car loads window appears
|
|
JmriJFrame lef = JmriJFrame.getFrame("Edit Car Loads");
|
|
Assert.assertNotNull(lef);
|
|
|
|
JUnitUtil.dispose(lef);
|
|
JUnitUtil.dispose(f);
|
|
}
|
|
}
|