162 lines
6.1 KiB
Java
162 lines
6.1 KiB
Java
package jmri.jmrit.operations.locations.schedules;
|
|
|
|
import java.awt.Dimension;
|
|
import java.text.MessageFormat;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
|
|
import org.netbeans.jemmy.operators.JFrameOperator;
|
|
import org.netbeans.jemmy.operators.JTableOperator;
|
|
|
|
import jmri.InstanceManager;
|
|
import jmri.jmrit.operations.OperationsTestCase;
|
|
import jmri.jmrit.operations.locations.Location;
|
|
import jmri.jmrit.operations.locations.LocationManager;
|
|
import jmri.jmrit.operations.locations.Track;
|
|
import jmri.jmrit.operations.setup.Control;
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.util.JmriJFrame;
|
|
import jmri.util.swing.JemmyUtil;
|
|
|
|
/**
|
|
* @author Paul Bender Copyright (C) 2017
|
|
*/
|
|
@DisabledIfSystemProperty(named = "java.awt.headless", matches = "true")
|
|
public class SchedulesTableFrameTest extends OperationsTestCase {
|
|
|
|
@Test
|
|
public void testCTor() {
|
|
SchedulesTableFrame t = new SchedulesTableFrame();
|
|
Assert.assertNotNull("exists", t);
|
|
JUnitUtil.dispose(t);
|
|
}
|
|
|
|
@Test
|
|
public void testFrameId() {
|
|
SchedulesTableFrame stf = new SchedulesTableFrame();
|
|
Assert.assertNotNull("exists", stf);
|
|
|
|
ScheduleManager sm = InstanceManager.getDefault(ScheduleManager.class);
|
|
|
|
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
|
|
Location l = lm.newLocation("new test location");
|
|
Track t = l.addTrack("track 1", Track.SPUR);
|
|
|
|
Schedule s1 = sm.newSchedule("b schedule");
|
|
sm.newSchedule("a schedule");
|
|
|
|
ScheduleItem i1 = s1.addItem("BoxCar");
|
|
i1.setRoadName("new road");
|
|
i1.setReceiveLoadName("new load");
|
|
i1.setShipLoadName("new ship load");
|
|
|
|
t.setSchedule(s1);
|
|
|
|
SchedulesTableModel stm = stf.schedulesModel;
|
|
Assert.assertEquals("Number of rows", 2, stm.getRowCount());
|
|
Assert.assertEquals("Id", "2", stm.getValueAt(0, SchedulesTableModel.ID_COLUMN));
|
|
|
|
JemmyUtil.enterClickAndLeave(stf.sortById);
|
|
Assert.assertEquals("Id", "1", stm.getValueAt(0, SchedulesTableModel.ID_COLUMN));
|
|
|
|
JUnitUtil.dispose(stf);
|
|
}
|
|
|
|
@Test
|
|
public void testFrameDelete() {
|
|
SchedulesTableFrame stf = new SchedulesTableFrame();
|
|
Assert.assertNotNull("exists", stf);
|
|
|
|
ScheduleManager sm = InstanceManager.getDefault(ScheduleManager.class);
|
|
|
|
sm.newSchedule("b schedule");
|
|
sm.newSchedule("a schedule");
|
|
sm.newSchedule("c schedule");
|
|
|
|
SchedulesTableModel stm = stf.schedulesModel;
|
|
Assert.assertEquals("Number of rows", 3, stm.getRowCount());
|
|
Assert.assertEquals("Name", "a schedule", stm.getValueAt(0, SchedulesTableModel.NAME_COLUMN));
|
|
Assert.assertEquals("Name", "b schedule", stm.getValueAt(1, SchedulesTableModel.NAME_COLUMN));
|
|
Assert.assertEquals("Name", "c schedule", stm.getValueAt(2, SchedulesTableModel.NAME_COLUMN));
|
|
|
|
// delete b schedule
|
|
Thread delete = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
stm.setValueAt(null, 1, SchedulesTableModel.DELETE_COLUMN);
|
|
}
|
|
});
|
|
delete.setName("Delete schedule"); // NOI18N
|
|
delete.start();
|
|
|
|
JUnitUtil.waitFor(() -> {
|
|
return delete.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
// should bring up confirmation dialog
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("DeleteSchedule?"), Bundle.getMessage("ButtonYes"));
|
|
|
|
try {
|
|
delete.join();
|
|
} catch (InterruptedException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
|
|
Assert.assertEquals("Number of rows", 2, stm.getRowCount());
|
|
Assert.assertEquals("Name", "a schedule", stm.getValueAt(0, SchedulesTableModel.NAME_COLUMN));
|
|
Assert.assertEquals("Name", "c schedule", stm.getValueAt(1, SchedulesTableModel.NAME_COLUMN));
|
|
|
|
JUnitUtil.dispose(stf);
|
|
}
|
|
|
|
@Test
|
|
public void testFrameEdit() {
|
|
SchedulesTableFrame stf = new SchedulesTableFrame();
|
|
Assert.assertNotNull("exists", stf);
|
|
|
|
// all buttons must show
|
|
stf.setSize(new Dimension(1200, Control.panelHeight250));
|
|
|
|
ScheduleManager sm = InstanceManager.getDefault(ScheduleManager.class);
|
|
|
|
Schedule sch = sm.newSchedule("b schedule");
|
|
sm.newSchedule("a schedule");
|
|
sm.newSchedule("c schedule");
|
|
|
|
LocationManager lm = InstanceManager.getDefault(LocationManager.class);
|
|
Location l = lm.newLocation("Test Location");
|
|
Track t = l.addTrack("Test Spur", Track.SPUR);
|
|
t.setSchedule(sch);
|
|
|
|
SchedulesTableModel stm = stf.schedulesModel;
|
|
Assert.assertEquals("Number of rows", 3, stm.getRowCount());
|
|
Assert.assertEquals("Name", "a schedule", stm.getValueAt(0, SchedulesTableModel.NAME_COLUMN));
|
|
Assert.assertEquals("Name", "b schedule", stm.getValueAt(1, SchedulesTableModel.NAME_COLUMN));
|
|
Assert.assertEquals("Name", "c schedule", stm.getValueAt(2, SchedulesTableModel.NAME_COLUMN));
|
|
|
|
JFrameOperator jfo = new JFrameOperator(stf);
|
|
JTableOperator tbl = new JTableOperator(jfo);
|
|
|
|
// test edit route location no track assignment
|
|
JemmyUtil.clickOnCellThreadSafe(tbl, 0, Bundle.getMessage("ButtonEdit"));
|
|
JemmyUtil.pressDialogButton(MessageFormat.format(Bundle.getMessage("CanNotSchedule"),
|
|
new Object[]{Bundle.getMessage("ButtonEdit")}), Bundle.getMessage("ButtonOK"));
|
|
|
|
tbl.clickOnCell(1, tbl.findColumn(Bundle.getMessage("ButtonEdit")));
|
|
// confirm edit schedule frame exists
|
|
JUnitUtil.waitFor(() -> {
|
|
return JmriJFrame.getFrame(MessageFormat.format(Bundle.getMessage("TitleScheduleEdit"),
|
|
new Object[]{t.getName()})) != null;
|
|
},"frame located");
|
|
|
|
// dispose also closes schedule edit frame
|
|
JUnitUtil.dispose(stf);
|
|
JmriJFrame sef = JmriJFrame.getFrame(MessageFormat.format(Bundle.getMessage("TitleScheduleEdit"),
|
|
new Object[]{t.getName()}));
|
|
Assert.assertNull(sef);
|
|
}
|
|
|
|
}
|