package jmri.jmrit.logixng.tools; import static org.junit.jupiter.api.Assertions.assertNotNull; import java.util.ArrayList; import jmri.*; import jmri.jmrit.logix.*; import jmri.util.JUnitAppender; import jmri.util.JUnitUtil; import org.junit.jupiter.api.*; /** * Test import of Logix to LogixNG. *

* This class creates a Logix, test that it works, imports it to LogixNG, * deletes the original Logix and then test that the new LogixNG works. *

This test tests expression warrant * * @author Daniel Bergqvist (C) 2020 */ public class ImportExpressionWarrantTest { private LogixManager logixManager; private Logix logix; private Conditional conditional; private ArrayList variables; private ArrayList actions; private ConditionalVariable cv; @Test public void testRouteFree() throws JmriException { cv.setType(Conditional.Type.ROUTE_FREE); ImportLogix importLogix = new ImportLogix(logix); importLogix.doImport(); assertNotNull(importLogix.getLogixNG().getConditionalNG(0)); JUnitAppender.assertWarnMessage("Import Conditional 'IX1C1' to LogixNG 'IQ:AUTO:0001'"); } @Test public void testRouteOccupied() throws JmriException { cv.setType(Conditional.Type.ROUTE_OCCUPIED); ImportLogix importLogix = new ImportLogix(logix); importLogix.doImport(); assertNotNull(importLogix.getLogixNG().getConditionalNG(0)); JUnitAppender.assertWarnMessage("Import Conditional 'IX1C1' to LogixNG 'IQ:AUTO:0001'"); } @Test public void testRouteAllocated() throws JmriException { cv.setType(Conditional.Type.ROUTE_ALLOCATED); ImportLogix importLogix = new ImportLogix(logix); importLogix.doImport(); assertNotNull(importLogix.getLogixNG().getConditionalNG(0)); JUnitAppender.assertWarnMessage("Import Conditional 'IX1C1' to LogixNG 'IQ:AUTO:0001'"); } @Test public void testRouteSet() throws JmriException { cv.setType(Conditional.Type.ROUTE_SET); ImportLogix importLogix = new ImportLogix(logix); importLogix.doImport(); assertNotNull(importLogix.getLogixNG().getConditionalNG(0)); JUnitAppender.assertWarnMessage("Import Conditional 'IX1C1' to LogixNG 'IQ:AUTO:0001'"); } @Test public void testTrainRunning() throws JmriException { cv.setType(Conditional.Type.TRAIN_RUNNING); ImportLogix importLogix = new ImportLogix(logix); importLogix.doImport(); assertNotNull(importLogix.getLogixNG().getConditionalNG(0)); JUnitAppender.assertWarnMessage("Import Conditional 'IX1C1' to LogixNG 'IQ:AUTO:0001'"); } @BeforeEach public void setUp() { JUnitUtil.setUp(); JUnitUtil.resetInstanceManager(); JUnitUtil.resetProfileManager(); JUnitUtil.initConfigureManager(); JUnitUtil.initInternalSensorManager(); JUnitUtil.initInternalTurnoutManager(); JUnitUtil.initLogixManager(); JUnitUtil.initLogixNGManager(); WarrantPreferences.getDefault().setShutdown(WarrantPreferences.Shutdown.NO_MERGE); InstanceManager.getDefault(WarrantManager.class).register(new Warrant("IW1", null)); logixManager = InstanceManager.getDefault(LogixManager.class); ConditionalManager conditionalManager = InstanceManager.getDefault(ConditionalManager.class); logix = logixManager.createNewLogix("IX1", null); conditional = conditionalManager.createNewConditional("IX1C1", "First conditional"); logix.addConditional(conditional.getSystemName(), 0); conditional.setTriggerOnChange(true); conditional.setLogicType(Conditional.AntecedentOperator.ALL_AND, ""); variables = new ArrayList<>(); cv = new ConditionalVariable(); cv.setTriggerActions(true); cv.setNegation(false); cv.setNum1(0); cv.setNum2(0); cv.setOpern(Conditional.Operator.AND); cv.setType(Conditional.Type.NONE); cv.setName("IW1"); variables.add(cv); conditional.setStateVariables(variables); actions = new ArrayList<>(); conditional.setAction(actions); } @AfterEach public void tearDown() { jmri.jmrit.logixng.util.LogixNG_Thread.stopAllLogixNGThreads(); JUnitUtil.deregisterBlockManagerShutdownTask(); JUnitUtil.tearDown(); } }