Files
JIMRI/java/test/jmri/jmrit/operations/rollingstock/cars/gui/CarEditFrameTest.java
T
2026-06-17 14:00:51 +02:00

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);
}
}