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

90 lines
3.3 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.jmrit.operations.trains.schedules.TrainSchedule;
import jmri.jmrit.operations.trains.schedules.TrainScheduleManager;
import jmri.util.JUnitOperationsUtil;
/**
*
* @author Paul Bender Copyright (C) 2017
*/
public class ApplyTrainScheduleActionTest extends OperationsTestCase {
@Test
public void testCTor() {
ApplyTrainScheduleAction t = new ApplyTrainScheduleAction();
Assert.assertNotNull("exists",t);
}
@Test
public void testActionNoAutomationItem() {
ApplyTrainScheduleAction action = new ApplyTrainScheduleAction();
Assert.assertNotNull("exists",action);
// does nothing, no automationItem
action.doAction();
}
@Test
public void testGetActionName() {
ApplyTrainScheduleAction action = new ApplyTrainScheduleAction();
Assert.assertEquals("name", Bundle.getMessage("ApplyTrainSchedule"), action.getName());
}
/**
* The action will set or reset the train build enabled option
*/
@Test
public void testAction() {
JUnitOperationsUtil.initOperationsData();
Train train1 = InstanceManager.getDefault(TrainManager.class).getTrainByName("STF");
Assert.assertNotNull("train exists", train1);
Train train2 = InstanceManager.getDefault(TrainManager.class).getTrainByName("SFF");
Assert.assertNotNull("train exists", train2);
// confirm default
TrainScheduleManager tsm = InstanceManager.getDefault(TrainScheduleManager.class);
Assert.assertEquals("default schedule", "", tsm.getTrainScheduleActiveId());
// load default schedules, 7 days of the week
Assert.assertEquals("default number of schedules", 7, tsm.getSchedulesByNameList().size());
TrainSchedule ts = tsm.getScheduleByName("Friday");
Assert.assertNotNull("Friday exists", ts);
// modify and make "Friday" the active schedule
tsm.setTrainScheduleActiveId(ts.getId());
Assert.assertFalse(ts.containsTrainId(train1.getId()));
Assert.assertFalse(ts.containsTrainId(train2.getId()));
// enable train build
ts.addTrainId(train2.getId());
// setup action
ApplyTrainScheduleAction action = new ApplyTrainScheduleAction();
Assert.assertNotNull("exists",action);
AutomationItem automationItem = new AutomationItem("TestId");
automationItem.setAction(action);
Assert.assertEquals("confirm registered", automationItem, action.getAutomationItem());
// confirm default and modify train 2
Assert.assertTrue(train1.isBuildEnabled());
Assert.assertTrue(train2.isBuildEnabled());
train2.setBuildEnabled(false);
Assert.assertFalse(train2.isBuildEnabled());
action.doAction();
Assert.assertFalse(train1.isBuildEnabled());
Assert.assertTrue(train2.isBuildEnabled());
}
// private static final Logger log = LoggerFactory.getLogger(ApplyTrainScheduleActionTest.class);
}