137 lines
3.6 KiB
Java
137 lines
3.6 KiB
Java
package jmri.jmrix.mqtt;
|
|
|
|
import jmri.jmrix.AbstractPowerManagerTestBase;
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.JmriException;
|
|
import jmri.PowerManager;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
import org.junit.Assert;
|
|
|
|
/**
|
|
* MqttPowerManagerTest.java
|
|
*
|
|
* Test for the jmri.jmrix.mqtt.MqttPowerManager class
|
|
*
|
|
* @author Dean Cording (C) 2023
|
|
*
|
|
*/
|
|
public class MqttPowerManagerTest extends AbstractPowerManagerTestBase {
|
|
|
|
private MqttSystemConnectionMemo memo = null;
|
|
private MqttAdapterScaffold a;
|
|
|
|
public String sendPowerTopic = "track/power";
|
|
public String rcvPowerTopic ="track/power";
|
|
|
|
@Override
|
|
protected void hearOn(){
|
|
((MqttPowerManager)p).notifyMqttMessage(rcvPowerTopic, "ON");
|
|
}
|
|
|
|
@Override
|
|
protected void hearOff(){
|
|
((MqttPowerManager)p).notifyMqttMessage(rcvPowerTopic, "OFF");
|
|
}
|
|
|
|
@Override
|
|
protected void hearIdle(){}
|
|
|
|
@Override
|
|
protected void sendOnReply(){
|
|
((MqttPowerManager)p).notifyMqttMessage(rcvPowerTopic, "ON");
|
|
} // get a reply to On command from layout
|
|
|
|
@Override
|
|
protected void sendOffReply(){
|
|
((MqttPowerManager)p).notifyMqttMessage(rcvPowerTopic, "OFF");
|
|
} // get a reply to Off command from layout
|
|
|
|
@Override
|
|
protected void sendIdleReply(){}
|
|
|
|
@Override
|
|
protected int numListeners(){return 0;}
|
|
|
|
@Override
|
|
protected int outboundSize(){return 0;}
|
|
|
|
@Override
|
|
protected boolean outboundOnOK(int index){return false;}
|
|
|
|
@Override
|
|
protected boolean outboundOffOK(int index){return false;}
|
|
|
|
@Override
|
|
protected boolean outboundIdleOK(int index){return false;}
|
|
|
|
|
|
// test setting power on, off, then getting reply from system
|
|
@Override
|
|
@Test
|
|
public void testSetPowerOn() throws JmriException {
|
|
Assert.assertEquals(PowerManager.UNKNOWN, p.getPower());
|
|
p.setPower(PowerManager.ON);
|
|
JUnitUtil.waitFor( ()->{ return a.getPublishCount()==2; }, "publish triggered");
|
|
Assert.assertEquals(rcvPowerTopic, a.getLastTopic());
|
|
Assert.assertEquals("ON", new String(a.getLastPayload()));
|
|
Assert.assertEquals(PowerManager.UNKNOWN, p.getPower());
|
|
hearOn();
|
|
Assert.assertEquals(PowerManager.ON, p.getPower());
|
|
|
|
}
|
|
|
|
@Override
|
|
@Test
|
|
public void testSetPowerOff() throws JmriException {
|
|
Assert.assertEquals(PowerManager.UNKNOWN, p.getPower());
|
|
p.setPower(PowerManager.OFF);
|
|
JUnitUtil.waitFor( ()->{ return a.getPublishCount()==2; }, "publish triggered");
|
|
Assert.assertEquals(rcvPowerTopic, a.getLastTopic());
|
|
Assert.assertEquals("OFF", new String(a.getLastPayload()));
|
|
Assert.assertEquals(PowerManager.UNKNOWN, p.getPower());
|
|
hearOff();
|
|
Assert.assertEquals(PowerManager.OFF, p.getPower());
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@Test
|
|
@Disabled("Listeners not relevant")
|
|
public void testDispose1() throws JmriException {}
|
|
|
|
@Override
|
|
@Test
|
|
@Disabled("Listeners not relevant")
|
|
public void testDispose2() throws JmriException {}
|
|
|
|
@Override
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
// prepare an interface
|
|
a = new MqttAdapterScaffold(true);
|
|
|
|
memo = new MqttSystemConnectionMemo();
|
|
memo.setMqttAdapter(a);
|
|
|
|
p = new MqttPowerManager(memo);
|
|
((MqttPowerManager)p).setSendTopic(sendPowerTopic);
|
|
((MqttPowerManager)p).setRcvTopic(rcvPowerTopic);
|
|
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
a.dispose();
|
|
a = null;
|
|
memo.dispose();
|
|
memo = null;
|
|
p = null;
|
|
JUnitUtil.tearDown();
|
|
|
|
}
|
|
|
|
}
|