101 lines
3.4 KiB
Java
101 lines
3.4 KiB
Java
package jmri.jmrix.openlcb;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
|
import jmri.InstanceManager;
|
|
import jmri.RailComManager;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.AfterEach;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.beans.PropertyVetoException;
|
|
|
|
import jmri.util.junit.annotations.NotApplicable;
|
|
|
|
/**
|
|
*
|
|
* @author Bob Jacobsen Coyright (C) 2023
|
|
* @author Balazs Racz Coyright (C) 2023
|
|
*/
|
|
public class OlcbReporterManagerTest extends jmri.managers.AbstractReporterMgrTestBase {
|
|
|
|
private OlcbTestInterface ti;
|
|
|
|
@Override
|
|
protected String getNameToTest1() {
|
|
return "06.80.0D.11.22.33.00.00";
|
|
}
|
|
|
|
@Override
|
|
protected String getNameToTest2() {
|
|
return "06.80.0D.44.55.66.00.00";
|
|
}
|
|
|
|
// For some reason this test hardcodes system name "1" and "2"
|
|
@Test
|
|
@Override
|
|
public void testRegisterDuplicateSystemName() throws PropertyVetoException, NoSuchFieldException, IllegalAccessException {
|
|
testRegisterDuplicateSystemName(l, l.makeSystemName(getNameToTest1()), l.makeSystemName(getNameToTest2()));
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
@NotApplicable("OpenLCB can not create a reporter just by number.")
|
|
public void testReporterProvideByNumber() {}
|
|
|
|
@Test
|
|
public void testIdentified() {
|
|
l.provideReporter(getNameToTest2());
|
|
// Upon construction, a consumer range identified message was sent out.
|
|
ti.assertSentMessage(":X194a4c4cN06800D445566FFFF;");
|
|
ti.assertNoSentMessages();
|
|
l.provideReporter(getNameToTest1());
|
|
// Upon construction, a consumer range identified message was sent out.
|
|
ti.assertSentMessage(":X194a4c4cN06800D1122330000;");
|
|
ti.assertNoSentMessages();
|
|
}
|
|
|
|
@Test
|
|
public void testIncrement() {
|
|
OlcbReporterManager om = (OlcbReporterManager) l;
|
|
assertEquals("MR06.40.0D.11.22.33.00.00", om.incrementSystemName("MR06.40.0D.11.22.32.00.00"));
|
|
assertEquals("MR06.40.0D.11.22.3A.00.00", om.incrementSystemName("MR06.40.0D.11.22.39.00.00"));
|
|
assertEquals("MR06.40.0D.11.22.40.00.00", om.incrementSystemName("MR06.40.0D.11.22.3F.00.00"));
|
|
assertEquals("MR06.40.0D.11.23.00.00.00", om.incrementSystemName("MR06.40.0D.11.22.FF.00.00"));
|
|
assertEquals("MR06.40.0D.12.00.00.00.00", om.incrementSystemName("MR06.40.0D.11.FF.FF.00.00"));
|
|
// There is no increment above the manufacturer ID range. Instead, the 24-bit field gets reset to all zeros.
|
|
assertEquals("MR06.40.FF.00.00.00.00.00", om.incrementSystemName("MR06.40.FF.FF.FF.FF.00.00"));
|
|
}
|
|
|
|
@Override
|
|
public String getSystemName(String i) {
|
|
return "MR" + i;
|
|
}
|
|
|
|
@Override
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.initDefaultUserMessagePreferences();
|
|
// prepare an interface
|
|
ti = new OlcbTestInterface(new OlcbTestInterface.CreateConfigurationManager());
|
|
ti.waitForStartup();
|
|
l = new OlcbReporterManager(ti.systemConnectionMemo);
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
InstanceManager.getDefault(RailComManager.class).dispose();
|
|
l.dispose();
|
|
l = null;
|
|
ti.dispose();
|
|
ti = null;
|
|
JUnitUtil.clearShutDownManager();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
// private static final Logger log = LoggerFactory.getLogger(OlcbReporterManagerTest.class);
|
|
}
|