92 lines
2.7 KiB
Java
92 lines
2.7 KiB
Java
package jmri.jmrix.mqtt;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
|
import jmri.Light;
|
|
import jmri.implementation.AbstractLightTestBase;
|
|
import jmri.util.*;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* Tests for MqttLight class.
|
|
*
|
|
* @author Bob Jacobsen Copyright (C) 2018
|
|
* @since 4.11.5
|
|
*/
|
|
public class MqttLightTest extends AbstractLightTestBase {
|
|
|
|
private MqttAdapterScaffold a = null;
|
|
|
|
@BeforeEach
|
|
@Override
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.initDefaultUserMessagePreferences();
|
|
// prepare an interface
|
|
a = new MqttAdapterScaffold(true);
|
|
t = new MqttLight(a, "ML2", "", "track/light/2", "track/light/2/foo");
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
t.dispose();
|
|
a.dispose();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
@Override
|
|
public int numListeners() {
|
|
return 0;
|
|
}
|
|
|
|
@Test
|
|
public void testParserUpdate() {
|
|
|
|
t.setCommandedState(Light.ON);
|
|
|
|
JUnitUtil.waitFor( ()->{ return a.getPublishCount()==2; }, "publish triggered");
|
|
assertEquals("track/light/2", a.getLastTopic(),"topic");
|
|
assertEquals("ON", new String(a.getLastPayload()),"payload");
|
|
|
|
t.setCommandedState(Light.OFF);
|
|
|
|
JUnitUtil.waitFor( ()->{ return a.getPublishCount()==3; }, "publish triggered 2");
|
|
assertEquals("track/light/2", a.getLastTopic(),"topic");
|
|
assertEquals("OFF", new String(a.getLastPayload()),"payload");
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testParserModes() {
|
|
((MqttLight)t).notifyMqttMessage("track/light/2/foo", "ON");
|
|
assertEquals( Light.ON, t.getKnownState(), "state");
|
|
((MqttLight)t).notifyMqttMessage("track/light/2/foo", "OFF");
|
|
assertEquals( Light.OFF, t.getKnownState(), "state");
|
|
((MqttLight)t).notifyMqttMessage("track/light/2/foo", "UNKNOWN");
|
|
assertEquals( Light.UNKNOWN, t.getKnownState(), "state");
|
|
}
|
|
|
|
@Override
|
|
public void checkOnMsgSent() {
|
|
JUnitUtil.waitFor( ()->{ return a.getPublishCount()==2; }, "publish triggered");
|
|
assertEquals("track/light/2", a.getLastTopic(),"topic");
|
|
assertEquals("ON", new String(a.getLastPayload()),"payload");
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
public void testCommandOff() {
|
|
// Lights are initialized to OFF, so no order is sent. do this to force sening the off later.
|
|
t.setState(Light.ON);
|
|
super.testCommandOff();
|
|
}
|
|
|
|
@Override
|
|
public void checkOffMsgSent() {
|
|
JUnitUtil.waitFor( ()->{ return a.getPublishCount()==3; }, "publish on then off triggered");
|
|
assertEquals("track/light/2", a.getLastTopic(),"topic");
|
|
assertEquals("OFF", new String(a.getLastPayload()),"payload");
|
|
}
|
|
}
|