69 lines
1.7 KiB
Java
69 lines
1.7 KiB
Java
package jmri.implementation;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
|
import jmri.*;
|
|
import jmri.util.*;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* Tests for DefaultAverageMeter
|
|
*
|
|
* @author Daniel Bergqvist Copyright (C) 2025
|
|
*/
|
|
public class DefaultAverageMeterTest {
|
|
|
|
@Test
|
|
public void testState() {
|
|
final int COUNT = 20;
|
|
double[] expectedValues = {0.025, 0.075, 0.150, 0.250, 0.350, 0.450, 0.550, 0.650, 0.750, 0.850, 0.950, 1.050, 1.150, 1.250, 1.350, 1.450, 1.550, 1.650, 1.750, 1.850};
|
|
assertEquals(COUNT, expectedValues.length);
|
|
MyMeter m = new MyMeter();
|
|
MeterManager mm = InstanceManager.getDefault(MeterManager.class);
|
|
AverageMeter am = ((HasAverageMeter)mm).newAverageMeter("IMAverage", null, m);
|
|
for (int i=0; i < COUNT; i++) {
|
|
JUnitUtil.waitFor(m::isRead, "m is read");
|
|
assertEquals( expectedValues[i], am.getKnownAnalogValue(), 0.00001,
|
|
String.format("Meter has correct value for value %d", i));
|
|
}
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
|
|
private static class MyMeter extends DefaultMeter {
|
|
|
|
private double _value = 0.0;
|
|
private boolean _isRead = false;
|
|
|
|
MyMeter() {
|
|
super("MySystemName", Meter.Unit.NoPrefix, 0, 100, 1, null);
|
|
}
|
|
|
|
/** {@inheritDoc} */
|
|
@Override
|
|
public double getKnownAnalogValue() {
|
|
_isRead = true;
|
|
_value += 0.1;
|
|
return _value;
|
|
}
|
|
|
|
public boolean isRead() {
|
|
boolean isRead = _isRead;
|
|
_isRead = false;
|
|
return isRead;
|
|
}
|
|
|
|
}
|
|
|
|
}
|