171 lines
5.6 KiB
Java
171 lines
5.6 KiB
Java
package jmri.jmrit.logixng.implementation;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
|
import jmri.*;
|
|
import jmri.jmrit.logixng.*;
|
|
import jmri.jmrit.logixng.FemaleGenericExpressionSocket.SocketType;
|
|
import jmri.jmrit.logixng.expressions.AnalogExpressionConstant;
|
|
import jmri.jmrit.logixng.expressions.ExpressionMemory;
|
|
import jmri.jmrit.logixng.expressions.StringExpressionConstant;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.AfterEach;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
/**
|
|
* Test DefaultFemaleGenericExpressionSocket
|
|
*
|
|
* @author Daniel Bergqvist 2018
|
|
*/
|
|
public class DefaultFemaleGenericExpressionSocket2_Test {
|
|
|
|
private ConditionalNG _conditionalNG;
|
|
private FemaleSocketListener _listener;
|
|
|
|
@Test
|
|
public void testEvaluateGeneric() throws JmriException {
|
|
DefaultFemaleGenericExpressionSocket socket;
|
|
|
|
MyAnalogExpression analogExpression = new MyAnalogExpression("IQAE351", null);
|
|
MaleSocket analogMaleSocket =
|
|
InstanceManager.getDefault(AnalogExpressionManager.class).registerExpression(analogExpression);
|
|
|
|
MyDigitalExpression digitalExpression = new MyDigitalExpression("IQDE351", null);
|
|
MaleSocket digitalMaleSocket =
|
|
InstanceManager.getDefault(DigitalExpressionManager.class).registerExpression(digitalExpression);
|
|
|
|
MyStringExpression stringExpression = new MyStringExpression("IQSE351", null);
|
|
MaleSocket stringMaleSocket =
|
|
InstanceManager.getDefault(StringExpressionManager.class).registerExpression(stringExpression);
|
|
|
|
socket = new DefaultFemaleGenericExpressionSocket(SocketType.GENERIC, _conditionalNG, _listener, "E");
|
|
|
|
assertNull( socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
|
|
socket.connect(analogMaleSocket);
|
|
analogExpression._value = 0.0;
|
|
assertEquals( 0.0, (Double)socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
analogExpression._value = 1.0;
|
|
assertEquals( 1.0, (Double)socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
analogExpression._value = -1.0;
|
|
assertEquals( -1.0, (Double)socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
socket.disconnect();
|
|
|
|
|
|
socket = new DefaultFemaleGenericExpressionSocket(SocketType.GENERIC, _conditionalNG, _listener, "E");
|
|
|
|
assertNull( socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
|
|
socket.connect(digitalMaleSocket);
|
|
digitalExpression._value = false;
|
|
assertFalse( (Boolean)socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
digitalExpression._value = true;
|
|
assertTrue( (Boolean)socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
socket.disconnect();
|
|
|
|
|
|
socket = new DefaultFemaleGenericExpressionSocket(SocketType.GENERIC, _conditionalNG, _listener, "E");
|
|
|
|
assertNull( socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
|
|
socket.connect(stringMaleSocket);
|
|
stringExpression._value = "";
|
|
assertEquals( "", socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
stringExpression._value = "Hello";
|
|
assertEquals( "Hello", socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
stringExpression._value = "1.0";
|
|
assertEquals( "1.0", socket.evaluateGeneric(), "evaluateGeneric() returns correct value");
|
|
socket.disconnect();
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.resetInstanceManager();
|
|
JUnitUtil.resetProfileManager();
|
|
JUnitUtil.initConfigureManager();
|
|
JUnitUtil.initInternalSensorManager();
|
|
JUnitUtil.initInternalTurnoutManager();
|
|
JUnitUtil.initLogixNGManager();
|
|
|
|
_conditionalNG = new DefaultConditionalNGScaffold("IQC1", "A conditionalNG"); // NOI18N;
|
|
|
|
_listener = new FemaleSocketListener(){
|
|
@Override
|
|
public void connected(FemaleSocket socket) {
|
|
// Do nothing
|
|
}
|
|
|
|
@Override
|
|
public void disconnected(FemaleSocket socket) {
|
|
// Do nothing
|
|
}
|
|
};
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
jmri.jmrit.logixng.util.LogixNG_Thread.stopAllLogixNGThreads();
|
|
JUnitUtil.deregisterBlockManagerShutdownTask();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
|
|
|
|
private static class MyAnalogExpression extends AnalogExpressionConstant {
|
|
|
|
double _value;
|
|
|
|
MyAnalogExpression(String sys, String user) {
|
|
super(sys, user);
|
|
}
|
|
|
|
/** {@inheritDoc} */
|
|
@Override
|
|
public double evaluate() {
|
|
return _value;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
private static class MyDigitalExpression extends ExpressionMemory {
|
|
|
|
boolean _value;
|
|
|
|
MyDigitalExpression(String sys, String user) {
|
|
super(sys, user);
|
|
}
|
|
|
|
/** {@inheritDoc} */
|
|
@Override
|
|
public boolean evaluate() {
|
|
return _value;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
private static class MyStringExpression extends StringExpressionConstant {
|
|
|
|
String _value;
|
|
|
|
MyStringExpression(String sys, String user) {
|
|
super(sys, user);
|
|
}
|
|
|
|
/** {@inheritDoc} */
|
|
@Override
|
|
public String evaluate() {
|
|
return _value;
|
|
}
|
|
|
|
}
|
|
|
|
}
|