109 lines
4.3 KiB
Java
109 lines
4.3 KiB
Java
package jmri.jmrit.operations.routes.tools;
|
|
|
|
import java.awt.GraphicsEnvironment;
|
|
import java.io.File;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.Assume;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import jmri.InstanceManager;
|
|
import jmri.jmrit.operations.OperationsTestCase;
|
|
import jmri.jmrit.operations.OperationsXml;
|
|
import jmri.jmrit.operations.routes.*;
|
|
import jmri.util.JUnitOperationsUtil;
|
|
import jmri.util.swing.JemmyUtil;
|
|
|
|
/**
|
|
* @author Daniel Boudreau Copyright (C) 2025
|
|
*/
|
|
public class ImportRoutesTest extends OperationsTestCase {
|
|
|
|
@Test
|
|
public void testCTor() {
|
|
ImportRoutes t = new ImportRoutes();
|
|
Assert.assertNotNull("exists", t);
|
|
}
|
|
|
|
@Test
|
|
public void testImport() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
JUnitOperationsUtil.initOperationsData();
|
|
|
|
JUnitOperationsUtil.createFiveLocationTurnRoute();
|
|
Route route3 = JUnitOperationsUtil.createThreeLocationRoute();
|
|
Assert.assertEquals("Route name", "Route Acton-Boston-Chelmsford", route3.getName());
|
|
|
|
// confirm two routes exist
|
|
RouteManager routeManager = InstanceManager.getDefault(RouteManager.class);
|
|
Assert.assertEquals("Number of routes", 3, routeManager.getRoutesByNameList().size());
|
|
|
|
// modify route, route location comment is one of the last exported elements
|
|
RouteLocation rl = route3.getTerminatesRouteLocation();
|
|
rl.setComment("This comment is for testing");
|
|
rl.setCommentTextColor("blue");
|
|
rl.setDepartureTime("04:28");
|
|
rl.setDepartureTimeDay("3");
|
|
|
|
ExportRoutes exportRoutes = new ExportRoutes();
|
|
Assert.assertNotNull("exists", exportRoutes);
|
|
// next should cause export complete dialog to appear
|
|
Thread export = new Thread(exportRoutes::writeOperationsRoutesFile);
|
|
export.setName("Export Routes"); // NOI18N
|
|
export.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return export.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("ExportComplete"), Bundle.getMessage("ButtonOK"));
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> !export.isAlive(), "wait for export to complete");
|
|
|
|
java.io.File file = new java.io.File(ExportRoutes.defaultOperationsFilename());
|
|
Assert.assertTrue("Confirm file creation", file.exists());
|
|
|
|
// now delete all routes
|
|
for (Route route : routeManager.getRoutesByNameList()) {
|
|
routeManager.deregister(route);
|
|
}
|
|
Assert.assertEquals("Number of routes", 0, routeManager.getRoutesByNameList().size());
|
|
|
|
// now import
|
|
ImportRoutes importRoutes = new ImportRoutes();
|
|
Assert.assertNotNull("exists", importRoutes);
|
|
// next should cause import complete dialog to appear
|
|
Thread importThread = new ImportRoutes() {
|
|
@Override
|
|
protected File getFile() {
|
|
return new File(OperationsXml.getFileLocation() +
|
|
OperationsXml.getOperationsDirectoryName() +
|
|
File.separator +
|
|
ExportRoutes.getOperationsFileName());
|
|
}
|
|
};
|
|
importThread.setName("Test Import Routes"); // NOI18N
|
|
importThread.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return importThread.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
JemmyUtil.pressDialogButton(Bundle.getMessage("SuccessfulImport"), Bundle.getMessage("ButtonOK"));
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> !importThread.isAlive(), "wait for export to complete");
|
|
|
|
Assert.assertEquals("Number of routes", 3, routeManager.getRoutesByNameList().size());
|
|
|
|
// confirm import included comment and color
|
|
route3 = routeManager.getRouteByName("Route Acton-Boston-Chelmsford");
|
|
Assert.assertNotNull(route3);
|
|
rl = route3.getTerminatesRouteLocation();
|
|
Assert.assertEquals("confirm location name", "Chelmsford", rl.getName());
|
|
Assert.assertEquals("confirm comment", "This comment is for testing", rl.getComment());
|
|
Assert.assertEquals("confirm comment color", "blue", rl.getCommentTextColor());
|
|
Assert.assertEquals("confirm departure day", "3", rl.getDepartureTimeDay());
|
|
Assert.assertEquals("confirm departure time", "04:28", rl.getDepartureTimeHourMinutes());
|
|
}
|
|
}
|