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

82 lines
3.6 KiB
Java

package jmri.jmrit.logixng.expressions;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import java.util.Locale;
import jmri.JmriException;
import jmri.NamedBean;
import jmri.jmrit.logixng.AbstractBaseTestBase;
import jmri.jmrit.logixng.DigitalExpressionBean;
import jmri.jmrit.logixng.implementation.DefaultMaleDigitalExpressionSocket.DigitalExpressionDebugConfig;
import org.junit.jupiter.api.Test;
/**
* Base class for classes that tests DigitalAction
*/
public abstract class AbstractDigitalExpressionTestBase extends AbstractBaseTestBase {
public abstract NamedBean createNewBean(String systemName);
@Test
public void testBadSystemName() {
IllegalArgumentException e = assertThrows( IllegalArgumentException.class, () -> {
// Create a bean with bad system name. This must throw an exception
NamedBean bean = createNewBean("IQ111");
// We should never get here.
fail("Bean is not null " + bean);
}, "Exception is thrown");
assertEquals( "system name is not valid", e.getMessage(), "Exception is correct");
}
@Test
public void testBundle() {
assertEquals( "Memory", Bundle.getMessage("Memory_Short"), "strings are equal");
assertEquals( "Memory IM1 is null", Bundle.getMessage("Memory_Long_CompareNull", "IM1", Bundle.getMessage("MemoryOperation_IsNull")), "strings are equal");
assertEquals( "Memory", Bundle.getMessage(Locale.CANADA, "Memory_Short"), "strings are equal");
assertEquals( "Memory IM1 is null", Bundle.getMessage(Locale.CANADA, "Memory_Long_CompareNull", "IM1", Bundle.getMessage("MemoryOperation_IsNull")), "strings are equal");
}
@Test
public void testGetBeanType() {
assertEquals( "Digital expression", ((DigitalExpressionBean)_base).getBeanType(), "String matches");
}
@Test
public void testEnableAndEvaluate() throws JmriException {
DigitalExpressionBean _expression = (DigitalExpressionBean)_baseMaleSocket;
assertTrue( _baseMaleSocket.isEnabled(), "male socket is enabled");
assertTrue( _expression.evaluate(), "evaluate() returns true");
_baseMaleSocket.setEnabled(false);
assertFalse( _baseMaleSocket.isEnabled(), "male socket is disabled");
assertFalse( _expression.evaluate(), "evaluate() returns false");
_baseMaleSocket.setEnabled(true);
assertTrue( _baseMaleSocket.isEnabled(), "male socket is enabled");
assertTrue( _expression.evaluate(), "evaluate() returns true");
}
@Test
public void testDebugConfig() throws JmriException {
DigitalExpressionBean _expression = (DigitalExpressionBean)_baseMaleSocket;
assertTrue( _expression.evaluate(), "evaluate() returns true");
DigitalExpressionDebugConfig debugConfig = new DigitalExpressionDebugConfig();
debugConfig._forceResult = true;
debugConfig._result = false;
_baseMaleSocket.setDebugConfig(debugConfig);
assertFalse( _expression.evaluate(), "evaluate() returns true");
debugConfig._result = true;
assertTrue( _expression.evaluate(), "evaluate() returns true");
debugConfig._result = false;
assertFalse( _expression.evaluate(), "evaluate() returns true");
debugConfig._forceResult = false;
assertTrue( _expression.evaluate(), "evaluate() returns true");
}
}