Files
JIMRI/java/test/jmri/jmrit/logixng/implementation/DefaultFemaleGenericExpressionSocket2_Test.java
T
2026-06-17 14:00:51 +02:00

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;
}
}
}