219 lines
10 KiB
Java
219 lines
10 KiB
Java
package jmri.jmrit.logixng;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
|
import static org.junit.jupiter.api.Assertions.assertSame;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
|
|
import java.util.Locale;
|
|
|
|
import jmri.InstanceManager;
|
|
import jmri.JmriException;
|
|
import jmri.jmrit.logixng.implementation.DefaultConditionalNG;
|
|
import jmri.jmrit.logixng.actions.DigitalMany;
|
|
import jmri.util.JUnitAppender;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.AfterEach;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
/**
|
|
* Test ConditionalNG
|
|
*
|
|
* @author Daniel Bergqvist 2018
|
|
*/
|
|
public class ConditionalNGTest {
|
|
|
|
@Test
|
|
public void testGetBeanType() {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class).createLogixNG("A new logix for test"); // NOI18N
|
|
ConditionalNG conditionalNG = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG(logixNG, "A conditionalNG"); // NOI18N
|
|
assertEquals( "ConditionalNG", conditionalNG.getBeanType(), "beanType is correct");
|
|
}
|
|
|
|
@Test
|
|
public void testGetParent() {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class).createLogixNG("A new logix for test"); // NOI18N
|
|
ConditionalNG conditionalNG_1 = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG(logixNG, "A conditionalNG"); // NOI18N
|
|
assertSame( logixNG, conditionalNG_1.getParent(), "getParent() returns correct value");
|
|
}
|
|
|
|
@Test
|
|
public void testGetLogixNG() {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class).createLogixNG("A new logix for test"); // NOI18N
|
|
ConditionalNG conditionalNG_1 = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG(logixNG, "A conditionalNG"); // NOI18N
|
|
assertSame( logixNG, conditionalNG_1.getLogixNG(), "getLogixNG() returns correct value");
|
|
}
|
|
|
|
@Test
|
|
public void testGetRoot() {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class).createLogixNG("A new logix for test"); // NOI18N
|
|
ConditionalNG conditionalNG_1 = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG(logixNG, "A conditionalNG"); // NOI18N
|
|
assertSame( logixNG, conditionalNG_1.getRoot(), "getRoot() returns correct value");
|
|
}
|
|
|
|
@Test
|
|
public void testState() throws JmriException {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class)
|
|
.createLogixNG("A new logix for test"); // NOI18N
|
|
assertEquals( LogixNG.UNKNOWN, logixNG.getState(), "getState() returns UNKNOWN");
|
|
JUnitAppender.assertWarnMessage("Unexpected call to getState in DefaultLogixNG.");
|
|
logixNG.setState(LogixNG.INCONSISTENT);
|
|
JUnitAppender.assertWarnMessage("Unexpected call to setState in DefaultLogixNG.");
|
|
assertEquals( LogixNG.UNKNOWN, logixNG.getState(), "getState() returns UNKNOWN");
|
|
JUnitAppender.assertWarnMessage("Unexpected call to getState in DefaultLogixNG.");
|
|
}
|
|
|
|
public void setupInitialConditionalNGTree(ConditionalNG conditionalNG) {
|
|
assertDoesNotThrow( () -> {
|
|
DigitalActionManager digitalActionManager =
|
|
InstanceManager.getDefault(DigitalActionManager.class);
|
|
|
|
FemaleSocket femaleSocket = conditionalNG.getFemaleSocket();
|
|
MaleDigitalActionSocket actionManySocket =
|
|
InstanceManager.getDefault(DigitalActionManager.class)
|
|
.registerAction(new DigitalMany(digitalActionManager.getAutoSystemName(), null));
|
|
femaleSocket.connect(actionManySocket);
|
|
// femaleSocket.setLock(Base.Lock.HARD_LOCK);
|
|
|
|
// femaleSocket = actionManySocket.getChild(0);
|
|
// MaleDigitalActionSocket actionIfThenSocket =
|
|
// InstanceManager.getDefault(DigitalActionManager.class)
|
|
// .registerAction(new IfThenElse(digitalActionManager.getAutoSystemName(), null, IfThenElse.Type.TRIGGER_ACTION));
|
|
// femaleSocket.connect(actionIfThenSocket);
|
|
});
|
|
}
|
|
|
|
@Test
|
|
public void testConnectDisconnect() throws SocketAlreadyConnectedException {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class)
|
|
.createLogixNG("A new logix for test"); // NOI18N
|
|
DefaultConditionalNG conditionalNG =
|
|
(DefaultConditionalNG) InstanceManager.getDefault(ConditionalNG_Manager.class)
|
|
.createConditionalNG(logixNG, "A conditionalNG"); // NOI18N
|
|
assertNull( conditionalNG.getSocketSystemName(), "socket name is correct");
|
|
setupInitialConditionalNGTree(conditionalNG);
|
|
MaleSocket many = conditionalNG.getChild(0).getConnectedSocket();
|
|
assertEquals( "Many", many.getLongDescription(), "description is correct");
|
|
assertEquals( many.getSystemName(), conditionalNG.getSocketSystemName(), "socket name is correct");
|
|
conditionalNG.getChild(0).disconnect();
|
|
assertNull( conditionalNG.getSocketSystemName(), "socket name is correct");
|
|
}
|
|
|
|
@Test
|
|
public void testSetSocketName() throws SocketAlreadyConnectedException {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class)
|
|
.createLogixNG("A new logix for test"); // NOI18N
|
|
DefaultConditionalNG conditionalNG =
|
|
(DefaultConditionalNG) InstanceManager.getDefault(ConditionalNG_Manager.class)
|
|
.createConditionalNG(logixNG, "A conditionalNG"); // NOI18N
|
|
|
|
DigitalActionManager digitalActionManager =
|
|
InstanceManager.getDefault(DigitalActionManager.class);
|
|
|
|
MaleDigitalActionSocket actionManySocket =
|
|
InstanceManager.getDefault(DigitalActionManager.class)
|
|
.registerAction(new DigitalMany(digitalActionManager.getAutoSystemName(), null));
|
|
|
|
|
|
assertNull( conditionalNG.getSocketSystemName(), "socket name is correct");
|
|
conditionalNG.setSocketSystemName("Abc");
|
|
assertEquals( "Abc", conditionalNG.getSocketSystemName(), "socket name is correct");
|
|
conditionalNG.setSocketSystemName("Def");
|
|
assertEquals( "Def", conditionalNG.getSocketSystemName(), "socket name is correct");
|
|
conditionalNG.getFemaleSocket().connect(actionManySocket);
|
|
assertEquals( actionManySocket.getSystemName(),
|
|
conditionalNG.getSocketSystemName(),
|
|
"socket name is correct");
|
|
conditionalNG.setSocketSystemName(null);
|
|
assertNull( conditionalNG.getSocketSystemName(), "socket name is correct");
|
|
}
|
|
|
|
@Test
|
|
public void testShortDescription() {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class)
|
|
.createLogixNG("A new logix for test"); // NOI18N
|
|
ConditionalNG conditionalNG_1 = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG(logixNG, "A conditionalNG"); // NOI18N
|
|
assertEquals( "ConditionalNG: A conditionalNG",
|
|
conditionalNG_1.getLongDescription(Locale.US),
|
|
"getLongDescription() returns correct value");
|
|
}
|
|
|
|
@Test
|
|
public void testLongDescription() {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class)
|
|
.createLogixNG("A new logix for test"); // NOI18N
|
|
ConditionalNG conditionalNG_1 = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG(logixNG, "A conditionalNG"); // NOI18N
|
|
assertEquals( "ConditionalNG: A conditionalNG",
|
|
conditionalNG_1.getLongDescription(Locale.US),
|
|
"getLongDescription() returns correct value");
|
|
}
|
|
|
|
@Test
|
|
public void testGetChild() {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class)
|
|
.createLogixNG("A new logix for test"); // NOI18N
|
|
ConditionalNG conditionalNG = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG(logixNG, "A new conditionalng for test"); // NOI18N
|
|
|
|
assertNotNull( conditionalNG.getChild(0), "child(0) is not null");
|
|
|
|
IllegalArgumentException e = assertThrows( IllegalArgumentException.class, () ->
|
|
conditionalNG.getChild(1), "exception thrown");
|
|
assertNotNull(e);
|
|
}
|
|
|
|
@Test
|
|
public void testGetChildCount() {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class)
|
|
.createLogixNG("A new logix for test"); // NOI18N
|
|
ConditionalNG conditionalNG = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG(logixNG, "A new conditionalng for test"); // NOI18N
|
|
assertEquals( 1, conditionalNG.getChildCount(), "conditionalNG has one child");
|
|
}
|
|
|
|
@Test
|
|
public void testGetCategory() {
|
|
LogixNG logixNG = InstanceManager.getDefault(LogixNG_Manager.class)
|
|
.createLogixNG("A new logix for test"); // NOI18N
|
|
ConditionalNG conditionalNG = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG(logixNG, "A new conditionalng for test"); // NOI18N
|
|
|
|
UnsupportedOperationException e = assertThrows( UnsupportedOperationException.class, () ->
|
|
conditionalNG.getCategory(), "exception thrown");
|
|
assertNotNull(e);
|
|
}
|
|
/*
|
|
@Test
|
|
public void testSetLock() {
|
|
ConditionalNG conditionalNG = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG("A new conditionalng for test"); // NOI18N
|
|
boolean hasThrown = false;
|
|
try {
|
|
conditionalNG.setLock(Lock.NONE);
|
|
} catch (UnsupportedOperationException e) {
|
|
hasThrown = true;
|
|
}
|
|
Assert.assertTrue("exception thrown", hasThrown);
|
|
}
|
|
*/
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.resetInstanceManager();
|
|
JUnitUtil.resetProfileManager();
|
|
JUnitUtil.initConfigureManager();
|
|
JUnitUtil.initInternalSensorManager();
|
|
JUnitUtil.initInternalTurnoutManager();
|
|
JUnitUtil.initLogixNGManager();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
jmri.jmrit.logixng.util.LogixNG_Thread.stopAllLogixNGThreads();
|
|
JUnitUtil.deregisterBlockManagerShutdownTask();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
}
|