182 lines
4.8 KiB
Java
182 lines
4.8 KiB
Java
package jmri.jmrix.can.cbus;
|
|
|
|
import jmri.jmrix.AbstractPowerManagerTestBase;
|
|
import jmri.jmrix.can.CanReply;
|
|
import jmri.jmrix.can.CanSystemConnectionMemo;
|
|
import jmri.jmrix.can.TrafficControllerScaffold;
|
|
import jmri.PowerManager;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
*
|
|
* @author Paul Bender Copyright (C) 2017
|
|
* @author Steve Young Copyright (c) 2019
|
|
* @author Andrew Crosland Copyright (c) 2021
|
|
*/
|
|
public class CbusPowerManagerTest extends AbstractPowerManagerTestBase {
|
|
|
|
|
|
/**
|
|
* service routines to simulate receiving on from command station
|
|
*/
|
|
@Override
|
|
protected void hearOn() {
|
|
CanReply r = new CanReply( new int[]{CbusConstants.CBUS_TON},0x12);
|
|
pwr.reply(r);
|
|
}
|
|
|
|
/**
|
|
* service routines to simulate receiving off from command station
|
|
*/
|
|
@Override
|
|
protected void hearOff() {
|
|
CanReply r = new CanReply( new int[]{CbusConstants.CBUS_TOF},0x12);
|
|
pwr.reply(r);
|
|
}
|
|
|
|
@Override
|
|
protected void sendOnReply() {
|
|
hearOn();
|
|
}
|
|
|
|
@Override
|
|
protected void sendOffReply() {
|
|
hearOff();
|
|
}
|
|
|
|
@Override
|
|
protected boolean outboundIdleOK(int index) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
protected boolean outboundOnOK(int index) {
|
|
return CbusConstants.CBUS_RTON == controller.outbound.elementAt(index).getOpCode();
|
|
}
|
|
|
|
@Override
|
|
protected boolean outboundOffOK(int index) {
|
|
return CbusConstants.CBUS_RTOF == controller.outbound.elementAt(index).getOpCode();
|
|
}
|
|
|
|
@Override
|
|
protected int numListeners() {
|
|
return controller.numListeners();
|
|
}
|
|
|
|
@Override
|
|
protected int outboundSize() {
|
|
return controller.outbound.size();
|
|
}
|
|
|
|
@Override
|
|
protected void hearIdle() {
|
|
}
|
|
|
|
@Override
|
|
protected void sendIdleReply() {
|
|
Assert.fail("Should not have been called");
|
|
}
|
|
|
|
@Test
|
|
public void checkCanMessage() {
|
|
// unused but needs to be there for CanListener
|
|
jmri.jmrix.can.CanMessage m = new jmri.jmrix.can.CanMessage(new int[]{CbusConstants.CBUS_TON},0x12);
|
|
pwr.message(m);
|
|
|
|
}
|
|
|
|
|
|
@Test
|
|
public void checkCanReplyExtendedRtr () throws jmri.JmriException {
|
|
|
|
CanReply r = new CanReply( new int[]{CbusConstants.CBUS_TOF},0x12);
|
|
pwr.reply(r);
|
|
Assert.assertEquals("set off", PowerManager.OFF, p.getPower());
|
|
|
|
r = new CanReply( new int[]{CbusConstants.CBUS_TON},0x12);
|
|
r.setExtended(true);
|
|
|
|
pwr.reply(r);
|
|
Assert.assertEquals("still off", PowerManager.OFF, p.getPower());
|
|
|
|
r.setExtended(false);
|
|
r.setRtr(true);
|
|
pwr.reply(r);
|
|
Assert.assertEquals("still off", PowerManager.OFF, p.getPower());
|
|
|
|
r.setRtr(false);
|
|
pwr.reply(r);
|
|
Assert.assertEquals("on", PowerManager.ON, p.getPower());
|
|
Assert.assertEquals(0, controller.outbound.size());
|
|
|
|
}
|
|
|
|
@Test
|
|
public void checkArstBehaviour () throws jmri.JmriException {
|
|
|
|
// Test effect of ARST on power state
|
|
CanReply r = new CanReply( new int[]{CbusConstants.CBUS_TOF},0x12);
|
|
pwr.reply(r);
|
|
Assert.assertEquals("set off before ARST", PowerManager.OFF, p.getPower());
|
|
|
|
r = new CanReply( new int[]{CbusConstants.CBUS_ARST},0x12);
|
|
pwr.reply(r);
|
|
Assert.assertEquals("on after ARST", PowerManager.ON, p.getPower());
|
|
|
|
// Change from default behaviour
|
|
memo.setPowerOnArst(false);
|
|
|
|
r = new CanReply( new int[]{CbusConstants.CBUS_TOF},0x12);
|
|
pwr.reply(r);
|
|
Assert.assertEquals("set off before ARST", PowerManager.OFF, p.getPower());
|
|
|
|
r = new CanReply( new int[]{CbusConstants.CBUS_ARST},0x12);
|
|
pwr.reply(r);
|
|
Assert.assertEquals("still off after ARST", PowerManager.OFF, p.getPower());
|
|
|
|
}
|
|
|
|
@Test
|
|
public void checkName() {
|
|
Assert.assertNotNull(pwr.getUserName());
|
|
}
|
|
|
|
private CanSystemConnectionMemo memo;
|
|
private CbusPowerManager pwr;
|
|
private TrafficControllerScaffold controller;
|
|
|
|
@BeforeEach
|
|
@Override
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
controller = new TrafficControllerScaffold();
|
|
memo = new CanSystemConnectionMemo();
|
|
memo.setTrafficController(controller);
|
|
p = pwr = new CbusPowerManager(memo);
|
|
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
|
|
pwr.dispose();
|
|
|
|
memo.dispose();
|
|
controller.terminateThreads();
|
|
pwr = null;
|
|
memo = null;
|
|
controller = null;
|
|
|
|
JUnitUtil.tearDown();
|
|
|
|
|
|
}
|
|
|
|
// private static final Logger log = LoggerFactory.getLogger(CbusPowerManagerTest.class);
|
|
|
|
}
|