182 lines
6.3 KiB
Java
182 lines
6.3 KiB
Java
package jmri.implementation;
|
|
|
|
import jmri.JmriException;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
|
/**
|
|
* Tests for AbstractAnalogIO
|
|
*
|
|
* @author Daniel Bergqvist Copyright (c) 2018
|
|
*/
|
|
public class AbstractAnalogIOTest {
|
|
|
|
@Test
|
|
public void testCtor() {
|
|
MyAbstractAnalogIO stringIO = new MyAbstractAnalogIO();
|
|
assertNotNull( stringIO, "AbstractAnalogIO constructor return");
|
|
}
|
|
|
|
@Test
|
|
public void testSystemNames() {
|
|
MyAbstractAnalogIO myAnalogIO_1 = new MyAbstractAnalogIO("IV1");
|
|
MyAbstractAnalogIO myAnalogIO_2 = new MyAbstractAnalogIO("IV01");
|
|
assertEquals( "IV1", myAnalogIO_1.getSystemName(), "AnalogIO system name is correct");
|
|
assertEquals( "IV01", myAnalogIO_2.getSystemName(), "AnalogIO system name is correct");
|
|
}
|
|
|
|
@Test
|
|
public void testCompareTo() {
|
|
MyAbstractAnalogIO myAnalogIO_1 = new MyAbstractAnalogIO("IV1");
|
|
MyAbstractAnalogIO myAnalogIO_2 = new MyAbstractAnalogIO("IV01");
|
|
assertNotEquals( myAnalogIO_1, myAnalogIO_2, "AnalogIOs are different");
|
|
assertNotEquals( 0, myAnalogIO_1.compareTo(myAnalogIO_2), "AnalogIO compareTo returns not zero");
|
|
}
|
|
|
|
@Test
|
|
public void testCompareSystemNameSuffix() {
|
|
MyAbstractAnalogIO myAnalogIO_1 = new MyAbstractAnalogIO("IV1");
|
|
MyAbstractAnalogIO myAnalogIO_2 = new MyAbstractAnalogIO("IV01");
|
|
assertEquals( -1, myAnalogIO_1.compareSystemNameSuffix("01", "1", myAnalogIO_2),
|
|
"compareSystemNameSuffix returns correct value");
|
|
assertEquals( 0, myAnalogIO_1.compareSystemNameSuffix("1", "1", myAnalogIO_2),
|
|
"compareSystemNameSuffix returns correct value");
|
|
assertEquals( 0, myAnalogIO_1.compareSystemNameSuffix("01", "01", myAnalogIO_2),
|
|
"compareSystemNameSuffix returns correct value");
|
|
assertEquals( +1, myAnalogIO_1.compareSystemNameSuffix("1", "01", myAnalogIO_2),
|
|
"compareSystemNameSuffix returns correct value");
|
|
}
|
|
|
|
@Test
|
|
public void testAnalogIO() throws JmriException {
|
|
MyAbstractAnalogIO myAnalogIO = new MyAbstractAnalogIO();
|
|
myAnalogIO.setCommandedAnalogValue(33.21);
|
|
assertEquals( 33.21, myAnalogIO.getKnownAnalogValue(), 0.0,
|
|
"string is correct");
|
|
|
|
MyAbstractAnalogIO myAnalogIO2 = new MyAbstractAnalogIO(1, 2, false);
|
|
Exception exception = assertThrows(JmriException.class, () ->
|
|
myAnalogIO2.setCommandedAnalogValue(5) );
|
|
assertEquals("value out of bounds", exception.getMessage());
|
|
|
|
MyAbstractAnalogIO myAnalogIO3 = new MyAbstractAnalogIO(1, 2, false);
|
|
exception = assertThrows(JmriException.class, () ->
|
|
myAnalogIO3.setCommandedAnalogValue(0.2) );
|
|
assertEquals("value out of bounds", exception.getMessage());
|
|
|
|
myAnalogIO = new MyAbstractAnalogIO(2.0, 43, false);
|
|
myAnalogIO.setCommandedAnalogValue(2.0);
|
|
assertEquals( 2.0, myAnalogIO.getKnownAnalogValue(), 0,
|
|
"string is correct and has valid length");
|
|
|
|
myAnalogIO = new MyAbstractAnalogIO(10.0, 20.0, true);
|
|
myAnalogIO.setCommandedAnalogValue(3.0);
|
|
assertEquals( 10.0, myAnalogIO.getKnownAnalogValue(), 0.0,
|
|
"out of bounds value is cut");
|
|
|
|
myAnalogIO = new MyAbstractAnalogIO(10.0, 20.0, true);
|
|
myAnalogIO.setCommandedAnalogValue(30.0);
|
|
assertEquals( 20.0, myAnalogIO.getKnownAnalogValue(), 0,
|
|
"out of bounds value is cut");
|
|
|
|
assertEquals( "IVMySystemName", myAnalogIO.toString(), "toAnalog() matches");
|
|
|
|
assertTrue( "Analog I/O".equals(myAnalogIO.getBeanType()), "getBeanType() matches");
|
|
}
|
|
|
|
@Test
|
|
public void testState() throws JmriException {
|
|
MyAbstractAnalogIO myAnalogIO = new MyAbstractAnalogIO(1.0, 20.0, true);
|
|
myAnalogIO.setState(3.3);
|
|
myAnalogIO.setCommandedAnalogValue(3.3);
|
|
//System.err.format("Value: %1.2f%n", myAnalogIO.getCommandedAnalogValue());
|
|
//System.err.format("Value: %1.2f%n", myAnalogIO.getKnownAnalogValue());
|
|
assertEquals( 3.3, myAnalogIO.getKnownAnalogValue(), 0.0, "value is correct");
|
|
|
|
myAnalogIO = new MyAbstractAnalogIO(1.0, 20.0, true);
|
|
myAnalogIO.setCommandedAnalogValue(3.3);
|
|
assertEquals( 3.3, myAnalogIO.getState(0.0), 0.0, "value is correct");
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
jmri.util.JUnitUtil.setUp();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
jmri.util.JUnitUtil.tearDown();
|
|
}
|
|
|
|
|
|
private static class MyAbstractAnalogIO extends AbstractAnalogIO {
|
|
|
|
private double _min = 0;
|
|
private double _max = 100;
|
|
private boolean _cutOutOfBoundsValues = false;
|
|
|
|
MyAbstractAnalogIO() {
|
|
super("IVMySystemName", true);
|
|
}
|
|
|
|
MyAbstractAnalogIO(String sysName) {
|
|
super(sysName, true);
|
|
}
|
|
|
|
MyAbstractAnalogIO(double min, double max, boolean cutOutOfBoundsValues) {
|
|
super("IVMySystemName", true);
|
|
_min = min;
|
|
_max = max;
|
|
_cutOutOfBoundsValues = cutOutOfBoundsValues;
|
|
}
|
|
|
|
@Override
|
|
protected void sendValueToLayout(double value) throws JmriException {
|
|
this.setValue(value);
|
|
}
|
|
|
|
@Override
|
|
public void setState(int s) throws JmriException {
|
|
throw new UnsupportedOperationException("Not supported.");
|
|
}
|
|
|
|
@Override
|
|
public int getState() {
|
|
throw new UnsupportedOperationException("Not supported.");
|
|
}
|
|
|
|
@Override
|
|
public double getMin() {
|
|
return _min;
|
|
}
|
|
|
|
@Override
|
|
public double getMax() {
|
|
return _max;
|
|
}
|
|
|
|
@Override
|
|
protected boolean cutOutOfBoundsValues() {
|
|
return _cutOutOfBoundsValues;
|
|
}
|
|
|
|
@Override
|
|
public double getResolution() {
|
|
return 1.0;
|
|
}
|
|
|
|
@Override
|
|
public AbsoluteOrRelative getAbsoluteOrRelative() {
|
|
return AbsoluteOrRelative.ABSOLUTE;
|
|
}
|
|
|
|
}
|
|
|
|
}
|