Files
2026-06-17 14:00:51 +02:00

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