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

122 lines
3.1 KiB
Java

package jmri.jmrix.sprog;
import jmri.util.JUnitUtil;
import jmri.util.junit.annotations.*;
import org.junit.Assert;
import org.junit.jupiter.api.*;
/**
* Tests for SprogPowerManager.
*
* @author Paul Bender Copyright (C) 2016
*/
public class SprogPowerManagerTest extends jmri.jmrix.AbstractPowerManagerTestBase {
private SprogTrafficControlScaffold stc = null;
// service routines to simulate receiving on, off from interface
@Override
protected void hearOn() {
stc.sendTestReply(new SprogReply("+"));
}
@Override
protected void sendOnReply() {
stc.sendTestReply(new SprogReply("+"));
}
@Override
protected void sendOffReply() {
stc.sendTestReply(new SprogReply("-"));
}
@Override
protected void hearOff() {
stc.sendTestReply(new SprogReply("-"));
}
@Override
protected void sendIdleReply() {
// do nothing
}
@Override
protected void hearIdle() {
// do nothing
}
@Override
protected int numListeners() {
return stc.numListeners();
}
@Override
protected int outboundSize() {
return stc.outbound.size();
}
@Override
protected boolean outboundOnOK(int index) {
return ((stc.outbound.elementAt(index))).toString().equals("+");
}
@Override
protected boolean outboundOffOK(int index) {
return ((stc.outbound.elementAt(index))).toString().equals("-");
}
@Override
protected boolean outboundIdleOK(int index) {
return true;
}
@Test
@Override
@NotApplicable("unsolicited state changes are currently ignored")
public void testStateOn(){
}
@Test
@Override
@NotApplicable("unsolicited state changes are currently ignored")
public void testStateOff(){
}
@Override
@Test
public void testSetPowerOff() throws jmri.JmriException {
int startingMessages = outboundSize();
p.setPower(jmri.PowerManager.OFF);
// Sprog sends the message 3 times.
// check one message sent, correct form
Assert.assertEquals("messages sent", startingMessages + 3, outboundSize());
Assert.assertTrue("message type OK", outboundOffOK(startingMessages));
Assert.assertTrue("message type OK", outboundOffOK(startingMessages+1));
Assert.assertTrue("message type OK", outboundOffOK(startingMessages+2));
Assert.assertEquals("state before reply ", jmri.PowerManager.UNKNOWN, p.getPower());
// arrange for reply
sendOffReply();
Assert.assertEquals("state after reply ", jmri.PowerManager.OFF, p.getPower());
}
@BeforeEach
@Override
public void setUp() {
JUnitUtil.setUp();
SprogSystemConnectionMemo m = new SprogSystemConnectionMemo();
stc = new SprogTrafficControlScaffold(m);
stc.setTestReplies(true);
m.setSprogTrafficController(stc); // constructor calls getSprogTrafficController.
p = new SprogPowerManager(m);
}
@AfterEach
public void tearDown() {
stc.dispose();
JUnitUtil.tearDown();
}
}