Files
JIMRI/java/test/jmri/jmrix/dccpp/DCCppPredefinedMetersTest.java
2026-06-17 14:00:51 +02:00

76 lines
3.4 KiB
Java

package jmri.jmrix.dccpp;
import jmri.InstanceManager;
import jmri.Meter;
import jmri.MeterManager;
import jmri.util.JUnitUtil;
import org.junit.Assert;
import org.junit.jupiter.api.*;
/**
*
* @author Paul Bender Copyright (C) 2017
* @author Daniel Bergqvist Copyright (C) 2020
*/
public class DCCppPredefinedMetersTest {
private DCCppInterfaceScaffold tc = null;
private DCCppPredefinedMeters mm = null;
@Test
public void testMeterReplies() {
mm.message(DCCppReply.parseDCCppReply("a10")); // a syntactically valid current reply
Meter m = InstanceManager.getDefault(MeterManager.class).getBySystemName("DVC_CurrentPct");
Assert.assertNotNull("verify meter was created", m);
Assert.assertEquals("current level percentage 100.0 - 0.0", (10.0 / DCCppConstants.MAX_CURRENT) * 100, m.getKnownAnalogValue(), 0.05);
mm.message(DCCppReply.parseDCCppReply("c PROGVolts 18.2 V Milli 9.0 24.0 0.1 18")); // new meter reply
m = InstanceManager.getDefault(MeterManager.class).getBySystemName("DVV_PROGVolts");
Assert.assertNotNull("verify meter was created", m);
Assert.assertEquals("verify value from meter reply", 18.2, m.getKnownAnalogValue(), 0.00001);
Assert.assertEquals("DVV_PROGVolts", m.getSystemName());
Assert.assertEquals(jmri.Meter.Unit.Milli, m.getUnit());
Assert.assertEquals(9.0, m.getMin(), 0.00001);
Assert.assertEquals(24.0, m.getMax(), 0.00001);
Assert.assertEquals(0.1, m.getResolution(), 0.00001);
mm.message(DCCppReply.parseDCCppReply("c MAINVolts 25.2 V Milli 9.0 24.0 0.1 18")); // new meter reply, value exceeds max value
m = InstanceManager.getDefault(MeterManager.class).getBySystemName("DVV_MAINVolts");
Assert.assertNotNull("verify meter was created", m);
Assert.assertEquals("verify value is capped at maxValue", 24.0, m.getKnownAnalogValue(), 0.00001);
mm.message(DCCppReply.parseDCCppReply("c My-Current_Meter#1 0.3 C NoPrefix 0.0 5.0 0.01 4.9"));
m = InstanceManager.getDefault(MeterManager.class).getBySystemName("DVC_My-Current_Meter#1");
Assert.assertNotNull("meter created with special chars in name", m);
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
// This test requires a registered connection config since ProxyMeterManager
// auto creates system meter managers using the connection configs.
InstanceManager.setDefault(jmri.jmrix.ConnectionConfigManager.class, new jmri.jmrix.ConnectionConfigManager());
jmri.jmrix.NetworkPortAdapter pa = new jmri.jmrix.dccpp.network.DCCppEthernetAdapter();
pa.setSystemPrefix("D");
jmri.jmrix.ConnectionConfig cc = new jmri.jmrix.dccpp.network.ConnectionConfig(pa);
InstanceManager.getDefault(jmri.jmrix.ConnectionConfigManager.class).add(cc);
// infrastructure objects
tc = new DCCppInterfaceScaffold(new DCCppCommandStation());
DCCppSystemConnectionMemo memo = new DCCppSystemConnectionMemo(tc);
mm = new DCCppPredefinedMeters(memo);
}
@AfterEach
public void tearDown() {
tc.terminateThreads();
JUnitUtil.resetWindows(false, false);
JUnitUtil.tearDown();
}
// private static final Logger log = LoggerFactory.getLogger(DCCppPredefinedMetersTest.class);
}