Files
JIMRI/java/test/jmri/jmrit/operations/automation/actions/WaitTrainActionTest.java
T
2026-06-17 14:00:51 +02:00

215 lines
7.9 KiB
Java

package jmri.jmrit.operations.automation.actions;
import org.junit.Assert;
import org.junit.jupiter.api.*;
import jmri.InstanceManager;
import jmri.jmrit.operations.OperationsTestCase;
import jmri.jmrit.operations.automation.AutomationItem;
import jmri.jmrit.operations.trains.Train;
import jmri.jmrit.operations.trains.TrainManager;
import jmri.util.JUnitOperationsUtil;
/**
*
* @author Paul Bender Copyright (C) 2017
*/
public class WaitTrainActionTest extends OperationsTestCase {
@Test
public void testCTor() {
WaitTrainAction t = new WaitTrainAction();
Assert.assertNotNull("exists", t);
}
@Test
public void testActionNoAutomationItem() {
WaitTrainAction action = new WaitTrainAction();
Assert.assertNotNull("exists", action);
// does nothing, no automationItem
action.doAction();
}
@Test
public void testGetActionName() {
WaitTrainAction action = new WaitTrainAction();
Assert.assertEquals("name", Bundle.getMessage("WaitForTrain"), action.getName());
}
@Test
public void testIsMessageOkEnabled() {
WaitTrainAction action = new WaitTrainAction();
Assert.assertTrue(action.isMessageOkEnabled());
}
@Test
public void testIsMessageFailEnabled() {
WaitTrainAction action = new WaitTrainAction();
Assert.assertTrue(action.isMessageFailEnabled());
}
@Test
public void testIsConcurrentAction() {
WaitTrainAction action = new WaitTrainAction();
Assert.assertTrue(action.isConcurrentAction());
}
@Test
public void testActionWaitForTrainToBuild() {
JUnitOperationsUtil.initOperationsData();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
Train train1 = tmanager.getTrainById("1");
Assert.assertNotNull(train1);
WaitTrainAction action = new WaitTrainAction();
Assert.assertNotNull("exists", action);
AutomationItem automationItem = new AutomationItem("TestId");
automationItem.setAction(action);
Assert.assertEquals("confirm registered", automationItem, action.getAutomationItem());
Assert.assertEquals("action item status", "", automationItem.getStatus());
// does nothing, no train assignment
action.doAction();
Assert.assertFalse(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
Assert.assertEquals("action item status", Bundle.getMessage("FAILED"), automationItem.getStatus());
automationItem.setTrain(train1);
action.doAction();
Assert.assertTrue(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
Assert.assertEquals("action item status", Bundle.getMessage("Running"), automationItem.getStatus());
//try again, waiting for train to build
action.doAction();
Assert.assertTrue(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
Assert.assertEquals("action item status", Bundle.getMessage("Running"), automationItem.getStatus());
train1.build();
Assert.assertFalse(automationItem.isActionRunning());
Assert.assertTrue(automationItem.isActionSuccessful());
Assert.assertEquals("action item status", Bundle.getMessage("ButtonOK"), automationItem.getStatus());
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testActionWaitForTrainBuildEnableReset() {
JUnitOperationsUtil.initOperationsData();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
Train train1 = tmanager.getTrainById("1");
Assert.assertNotNull(train1);
// confirm default
Assert.assertTrue(train1.isBuildEnabled());
WaitTrainAction action = new WaitTrainAction();
Assert.assertNotNull("exists", action);
AutomationItem automationItem = new AutomationItem("TestId");
automationItem.setAction(action);
Assert.assertEquals("confirm registered", automationItem, action.getAutomationItem());
// does nothing, no train assignment
action.doAction();
Assert.assertFalse(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
automationItem.setTrain(train1);
action.doAction();
Assert.assertTrue(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
//try again, waiting for train to build
action.doAction();
Assert.assertTrue(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
train1.setBuildEnabled(false);
Assert.assertFalse(automationItem.isActionRunning());
Assert.assertTrue(automationItem.isActionSuccessful());
}
@Test
public void testActionWaitForTrainToReachLocation() {
JUnitOperationsUtil.initOperationsData();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
Train train1 = tmanager.getTrainById("1");
Assert.assertNotNull(train1);
// confirm default
Assert.assertTrue(train1.isBuildEnabled());
WaitTrainAction action = new WaitTrainAction();
Assert.assertNotNull("exists", action);
AutomationItem automationItem = new AutomationItem("TestId");
automationItem.setAction(action);
Assert.assertEquals("confirm registered", automationItem, action.getAutomationItem());
// does nothing, no train assignment
action.doAction();
Assert.assertFalse(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
automationItem.setTrain(train1);
// wait for train to reach last location in route
automationItem.setRouteLocation(train1.getTrainTerminatesRouteLocation());
action.doAction();
Assert.assertTrue(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
String message = action.getActionString();
Assert.assertTrue("message contains route name", message.contains(train1.getTrainTerminatesRouteLocation().getName()));
// There are 3 locations in the route
Assert.assertTrue(train1.build());
train1.move();
Assert.assertTrue(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
// next move is the last location
train1.move();
Assert.assertFalse(automationItem.isActionRunning());
Assert.assertTrue(automationItem.isActionSuccessful());
JUnitOperationsUtil.checkOperationsShutDownTask();
}
@Test
public void testCancel() {
JUnitOperationsUtil.initOperationsData();
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
Train train1 = tmanager.getTrainById("1");
Assert.assertNotNull(train1);
// confirm default
Assert.assertTrue(train1.isBuildEnabled());
WaitTrainAction action = new WaitTrainAction();
Assert.assertNotNull("exists", action);
AutomationItem automationItem = new AutomationItem("TestId");
automationItem.setAction(action);
Assert.assertEquals("confirm registered", automationItem, action.getAutomationItem());
automationItem.setTrain(train1);
action.doAction();
Assert.assertTrue(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
// cancel
action.cancelAction();
Assert.assertFalse(automationItem.isActionRunning());
Assert.assertFalse(automationItem.isActionSuccessful());
}
// private static final Logger log = LoggerFactory.getLogger(WaitTrainActionTest.class);
}