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

152 lines
6.9 KiB
Java

package jmri.jmrit.operations.automation;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
import jmri.InstanceManager;
import jmri.jmrit.operations.OperationsTestCase;
import jmri.jmrit.operations.automation.actions.*;
import jmri.jmrit.operations.locations.Location;
import jmri.jmrit.operations.routes.RouteLocation;
import jmri.jmrit.operations.trains.Train;
import jmri.jmrit.operations.trains.schedules.TrainSchedule;
import jmri.jmrit.operations.trains.schedules.TrainScheduleManager;
public class AutomationItemTest extends OperationsTestCase {
@Test
public void testDefaults() {
AutomationItem automationItem = new AutomationItem("TestId");
Assert.assertNotNull("test creation", automationItem);
Assert.assertEquals("test id", "TestId", automationItem.getId());
Assert.assertEquals("test id", "TestId", automationItem.toString());
Assert.assertEquals(ActionCodes.NO_ACTION, automationItem.getActionCode());
Assert.assertEquals("Do Nothing", automationItem.getAction().getName());
Assert.assertEquals("Do Nothing", automationItem.getActionName());
Assert.assertEquals("", automationItem.getMessage());
Assert.assertEquals("", automationItem.getMessageFail());
Assert.assertEquals(0, automationItem.getSequenceId());
Assert.assertEquals("", automationItem.getStatus());
Assert.assertEquals("", automationItem.getTrainScheduleId());
Assert.assertEquals(null, automationItem.getAutomationToRun());
Assert.assertEquals(null, automationItem.getGotoAutomationItem());
Assert.assertEquals(null, automationItem.getRouteLocation());
Assert.assertEquals(null, automationItem.getTrain());
Assert.assertEquals(null, automationItem.getTrainSchedule());
// static tests
Assert.assertEquals("Do Nothing", AutomationItem.getActionByCode(0x0000).getName()); // there isn't a code 0x0000 action
Assert.assertEquals("Number of actions", 36, AutomationItem.getActionComboBox().getItemCount());
Assert.assertEquals("Number of actions", 36, AutomationItem.getActionList().size());
}
@Test
public void testMessages() {
AutomationItem automationItem = new AutomationItem("TestId");
Assert.assertNotNull("test creation", automationItem);
Assert.assertEquals("test id", "TestId", automationItem.getId());
automationItem.setMessage("Test OK message");
Assert.assertEquals("Test OK message", automationItem.getMessage());
Assert.assertEquals("", automationItem.getMessageFail());
automationItem.setMessageFail("Test Fail message");
Assert.assertEquals("Test OK message", automationItem.getMessage());
Assert.assertEquals("Test Fail message", automationItem.getMessageFail());
}
@Test
public void testAutomationToRun() {
AutomationItem automationItem = new AutomationItem("TestId");
Assert.assertNotNull("test creation", automationItem);
Assert.assertEquals("test id", "TestId", automationItem.getId());
Automation automation = new Automation("101", "testAutomationName");
automationItem.setAutomationToRun(automation);
Assert.assertEquals("Do nothing action can't have an automation assignment", null, automationItem.getAutomationToRun());
automationItem.setAction(new RunAutomationAction());
Assert.assertEquals("Automation hasn't been registered with manager", null, automationItem.getAutomationToRun());
AutomationManager manager = InstanceManager.getDefault(AutomationManager.class);
manager.register(automation);
Assert.assertEquals("Run automation action now registered", automation, automationItem.getAutomationToRun());
automationItem.setAutomationToRun(null);
Assert.assertEquals(null, automationItem.getAutomationToRun());
automationItem.setOther(automation);
Assert.assertEquals(automation, automationItem.getAutomationToRun());
}
@Test
public void testGotoAutomationItem() {
AutomationManager manager = InstanceManager.getDefault(AutomationManager.class);
Automation automation = manager.newAutomation("testAutomationGoto");
AutomationItem item1 = automation.addItem();
AutomationItem item2 = automation.addItem();
item1.setGotoAutomationItem(item2);
Assert.assertEquals("Do nothing action can't have a goto item", null, item1.getGotoAutomationItem());
item1.setAction(new GotoAction());
Assert.assertEquals(item2, item1.getGotoAutomationItem());
item1.setGotoAutomationItem(null);
Assert.assertEquals(null, item1.getGotoAutomationItem());
item1.setOther(item2);
Assert.assertEquals(item2, item1.getGotoAutomationItem());
}
@Test
public void testRouteLocation() {
AutomationItem automationItem = new AutomationItem("TestId");
Assert.assertNotNull("test creation", automationItem);
Assert.assertEquals("test id", "TestId", automationItem.getId());
RouteLocation rl = new RouteLocation("testId", new Location("testId", "testLocationName"));
automationItem.setRouteLocation(rl);
Assert.assertEquals("Do nothing action can't have a routeLocation", null, automationItem.getRouteLocation());
automationItem.setAction(new WaitTrainAction());
Assert.assertEquals(rl, automationItem.getRouteLocation());
}
@Test
public void testTrain() {
AutomationItem automationItem = new AutomationItem("TestId");
Assert.assertNotNull("test creation", automationItem);
Assert.assertEquals("test id", "TestId", automationItem.getId());
Train train = new Train("TestTrainId", "TestTrainName");
automationItem.setTrain(train);
Assert.assertEquals("Do nothing action can't have a train assignment", null, automationItem.getTrain());
automationItem.setAction(new BuildTrainAction());
Assert.assertEquals("Build train action", train, automationItem.getTrain());
}
@Test
public void testTrainSchedule() {
AutomationItem automationItem = new AutomationItem("TestId");
Assert.assertNotNull("test creation", automationItem);
Assert.assertEquals("test id", "TestId", automationItem.getId());
TrainSchedule trainSchedule = InstanceManager.getDefault(TrainScheduleManager.class).newSchedule("TestScheduleName");
automationItem.setTrainSchedule(trainSchedule);
Assert.assertEquals("Do nothing action can't have a train schedule assignment", null, automationItem.getTrainSchedule());
automationItem.setAction(new ActivateTrainScheduleAction());
Assert.assertEquals(trainSchedule, automationItem.getTrainSchedule());
automationItem.setTrainSchedule(null);
Assert.assertEquals(null, automationItem.getTrainSchedule());
automationItem.setOther(trainSchedule);
Assert.assertEquals(trainSchedule, automationItem.getTrainSchedule());
}
}