129 lines
4.5 KiB
Java
129 lines
4.5 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;
|
|
import jmri.util.swing.JemmyUtil;
|
|
|
|
/**
|
|
*
|
|
* @author Paul Bender Copyright (C) 2017
|
|
*/
|
|
public class BuildTrainActionTest extends OperationsTestCase {
|
|
|
|
@Test
|
|
public void testCTor() {
|
|
BuildTrainAction t = new BuildTrainAction();
|
|
Assert.assertNotNull("exists",t);
|
|
}
|
|
|
|
@Test
|
|
public void testActionNoAutomationItem() {
|
|
BuildTrainAction action = new BuildTrainAction();
|
|
Assert.assertNotNull("exists",action);
|
|
// does nothing, no automationItem
|
|
action.doAction();
|
|
}
|
|
|
|
@Test
|
|
public void testGetActionName() {
|
|
BuildTrainAction action = new BuildTrainAction();
|
|
Assert.assertEquals("name", Bundle.getMessage("BuildTrain"), action.getName());
|
|
}
|
|
|
|
@Test
|
|
public void testAction() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainById("1");
|
|
Assert.assertNotNull(train1);
|
|
|
|
BuildTrainAction action = new BuildTrainAction();
|
|
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(train1.isBuilt());
|
|
Assert.assertFalse(automationItem.isActionSuccessful());
|
|
|
|
automationItem.setTrain(train1);
|
|
action.doAction();
|
|
Assert.assertTrue(train1.isBuilt());
|
|
Assert.assertTrue(automationItem.isActionSuccessful());
|
|
|
|
//try again
|
|
action.doAction();
|
|
Assert.assertFalse(automationItem.isActionSuccessful());
|
|
|
|
JUnitOperationsUtil.checkOperationsShutDownTask();
|
|
|
|
}
|
|
|
|
@Test
|
|
@jmri.util.junit.annotations.DisabledIfHeadless
|
|
public void testActionMessages() {
|
|
JUnitOperationsUtil.initOperationsData();
|
|
TrainManager tmanager = InstanceManager.getDefault(TrainManager.class);
|
|
Train train1 = tmanager.getTrainById("1");
|
|
Assert.assertNotNull(train1);
|
|
|
|
BuildTrainAction action = new BuildTrainAction();
|
|
Assert.assertNotNull("exists",action);
|
|
AutomationItem automationItem = new AutomationItem("TestId");
|
|
automationItem.setAction(action);
|
|
Assert.assertEquals("confirm registered", automationItem, action.getAutomationItem());
|
|
automationItem.setTrain(train1);
|
|
automationItem.setMessage("Show this message when successful");
|
|
automationItem.setMessageFail("Show this message when fail");
|
|
|
|
// should cause dialog to appear
|
|
Thread doAction = new Thread(action::doAction);
|
|
doAction.setName("Do Action"); // NOI18N
|
|
doAction.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return doAction.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
String title = automationItem.getId() + " " + action.getActionString();
|
|
JemmyUtil.pressDialogButton(title, Bundle.getMessage("ButtonOK"));
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> !doAction.isAlive(), "wait for doAction to complete");
|
|
|
|
Assert.assertTrue(train1.isBuilt());
|
|
Assert.assertTrue(automationItem.isActionSuccessful());
|
|
|
|
//try again
|
|
// should dialog to appear
|
|
Thread doAction2 = new Thread(action::doAction);
|
|
doAction2.setName("Do Action 2"); // NOI18N
|
|
doAction2.start();
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> {
|
|
return doAction2.getState().equals(Thread.State.WAITING);
|
|
}, "wait for prompt");
|
|
|
|
title = automationItem.getId() + " " + Bundle.getMessage("Failed") + " " + action.getActionString();
|
|
JemmyUtil.pressDialogButton(title, Bundle.getMessage("Halt"));
|
|
|
|
jmri.util.JUnitUtil.waitFor(() -> !doAction2.isAlive(), "wait for doAction2 to complete");
|
|
|
|
Assert.assertFalse(automationItem.isActionSuccessful());
|
|
|
|
JUnitOperationsUtil.checkOperationsShutDownTask();
|
|
|
|
}
|
|
|
|
// private static final Logger log = LoggerFactory.getLogger(BuildTrainActionTest.class);
|
|
|
|
}
|