Files
JIMRI/java/test/jmri/jmrit/logixng/util/parser/ExpressionNodeIdentifierTest.java
2026-06-17 14:00:51 +02:00

95 lines
4.1 KiB
Java

package jmri.jmrit.logixng.util.parser;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import java.util.HashMap;
import java.util.Map;
import jmri.*;
import jmri.jmrit.logixng.SymbolTable;
import jmri.jmrit.logixng.implementation.DefaultConditionalNG;
import jmri.jmrit.logixng.implementation.DefaultSymbolTable;
import jmri.jmrit.logixng.util.LogixNG_Thread;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
/**
* Test ParsedExpression
*
* @author Daniel Bergqvist 2019
*/
public class ExpressionNodeIdentifierTest {
@Test
public void testCtor() throws IdentifierNotExistsException {
Token token = new Token(TokenType.NONE, "abc", 0);
Map<String, Variable> variables = new HashMap<>();
variables.put("abc", new Variable() {
@Override
public String getName() {
return "abc";
}
@Override
public Object getValue(SymbolTable symbolTable) {
return "0";
}
@Override
public void setValue(SymbolTable symbolTable, Object value) {
throw new UnsupportedOperationException("Not supported");
}
});
ExpressionNodeIdentifier t = new ExpressionNodeIdentifier(token, variables);
assertNotNull( t, "not null");
}
private Object getConstant(String name, SymbolTable symbolTable, Map<String, Variable> variables) throws JmriException {
Token token = new Token(TokenType.NONE, name, 0);
ExpressionNodeIdentifier t = new ExpressionNodeIdentifier(token, variables);
assertNotNull( t, "not null");
return t.calculate(symbolTable);
}
@Test
public void testConstants() throws JmriException {
SymbolTable symbolTable = new DefaultSymbolTable(new DefaultConditionalNG("IQC1", null));
Map<String, Variable> variables = new HashMap<>();
assertEquals(Math.PI, (Double)getConstant("MathPI",symbolTable,variables), 0.000000001);
assertEquals(Math.E, (Double)getConstant("MathE",symbolTable,variables), 0.000000001);
assertEquals(NamedBean.UNKNOWN, (int)(Integer)getConstant("Unknown",symbolTable,variables));
assertEquals(NamedBean.INCONSISTENT, (int)(Integer)getConstant("Inconsistent",symbolTable,variables));
assertEquals(Turnout.CLOSED, (int)(Integer)getConstant("Closed",symbolTable,variables));
assertEquals(Turnout.THROWN, (int)(Integer)getConstant("Thrown",symbolTable,variables));
assertEquals(Sensor.INACTIVE, (int)(Integer)getConstant("Inactive",symbolTable,variables));
assertEquals(Sensor.ACTIVE, (int)(Integer)getConstant("Active",symbolTable,variables));
assertEquals(SignalHead.DARK, (int)(Integer)getConstant("Dark",symbolTable,variables));
assertEquals(SignalHead.RED, (int)(Integer)getConstant("Red",symbolTable,variables));
assertEquals(SignalHead.FLASHRED, (int)(Integer)getConstant("FlashRed",symbolTable,variables));
assertEquals(SignalHead.YELLOW, (int)(Integer)getConstant("Yellow",symbolTable,variables));
assertEquals(SignalHead.FLASHYELLOW, (int)(Integer)getConstant("FlashYellow",symbolTable,variables));
assertEquals(SignalHead.GREEN, (int)(Integer)getConstant("Green",symbolTable,variables));
assertEquals(SignalHead.FLASHGREEN, (int)(Integer)getConstant("FlashGreen",symbolTable,variables));
assertEquals(SignalHead.LUNAR, (int)(Integer)getConstant("Lunar",symbolTable,variables));
assertEquals(SignalHead.FLASHLUNAR, (int)(Integer)getConstant("FlashLunar",symbolTable,variables));
assertEquals(SignalHead.HELD, (int)(Integer)getConstant("Held",symbolTable,variables));
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
}
@AfterEach
public void tearDown() {
JUnitUtil.deregisterBlockManagerShutdownTask();
LogixNG_Thread.stopAllLogixNGThreads();
JUnitUtil.tearDown();
}
}