214 lines
8.2 KiB
Java
214 lines
8.2 KiB
Java
package jmri.managers;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
|
|
import jmri.*;
|
|
import jmri.implementation.AbstractVariableLight;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.AfterEach;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
/**
|
|
* Test the DefaultVariableLightManager.
|
|
*
|
|
* @author Daniel Bergqvist Copyright (C) 2020
|
|
*/
|
|
public class DefaultVariableLightManagerTest {
|
|
|
|
private VariableLight newVariableLight(String sysName, String userName) {
|
|
return new MyVariableLight(sysName, userName);
|
|
}
|
|
|
|
@Test
|
|
public void testDispose() {
|
|
VariableLightManager l = InstanceManager.getDefault(VariableLightManager.class);
|
|
l.dispose(); // all we're really doing here is making sure the method exists
|
|
}
|
|
|
|
@Test
|
|
public void testRegister() {
|
|
// create
|
|
VariableLight t = newVariableLight("L11", "mine");
|
|
|
|
VariableLightManager l = InstanceManager.getDefault(VariableLightManager.class);
|
|
|
|
UnsupportedOperationException ex = assertThrows(UnsupportedOperationException.class, () -> l.register(t));
|
|
assertNotNull(ex);
|
|
ex = assertThrows(UnsupportedOperationException.class, () -> l.deregister(t));
|
|
assertNotNull(ex);
|
|
}
|
|
|
|
@Test
|
|
public void testLights() {
|
|
// Test that the VariableLightManager registers variable lights but not
|
|
// lights that are not variable.
|
|
|
|
// When this light is created, the VariableLightManager isn't created yet.
|
|
Light light = new MyLight("IL1");
|
|
InstanceManager.getDefault(LightManager.class).register(light);
|
|
VariableLight variableLight = InstanceManager.getDefault(VariableLightManager.class).getBySystemName("IL1");
|
|
assertNull( variableLight, "light does not exists in VariableLightManager");
|
|
|
|
// Check that we can deregister light without problem
|
|
InstanceManager.getDefault(LightManager.class).deregister(light);
|
|
variableLight = InstanceManager.getDefault(VariableLightManager.class).getBySystemName("IL1");
|
|
assertNull( variableLight, "light does not exists in VariableLightManager");
|
|
|
|
// When this light is created, the VariableLightManager is created.
|
|
Light light2 = new MyLight("IL2");
|
|
InstanceManager.getDefault(LightManager.class).register(light2);
|
|
variableLight = InstanceManager.getDefault(VariableLightManager.class).getBySystemName("IL2");
|
|
assertNull( variableLight, "light does not exists in VariableLightManager");
|
|
|
|
// Check that we can deregister light without problem
|
|
InstanceManager.getDefault(LightManager.class).deregister(light);
|
|
variableLight = InstanceManager.getDefault(VariableLightManager.class).getBySystemName("IL2");
|
|
assertNull( variableLight, "light does not exists in VariableLightManager");
|
|
}
|
|
|
|
@Test
|
|
public void testVariableLights() {
|
|
// Test that the VariableLightManager registers variable lights.
|
|
|
|
// When this light is created, the VariableLightManager isn't created yet.
|
|
Light variableLight = new MyVariableLight("IL101", "MyLight");
|
|
InstanceManager.getDefault(LightManager.class).register(variableLight);
|
|
variableLight = InstanceManager.getDefault(VariableLightManager.class).getBySystemName("IL101");
|
|
assertNotNull( variableLight, "variable light exists in VariableLightManager");
|
|
|
|
// Check that we can deregister light and that it get deregstered from VariableLightManager as well
|
|
InstanceManager.getDefault(LightManager.class).deregister(variableLight);
|
|
variableLight = InstanceManager.getDefault(VariableLightManager.class).getBySystemName("IL101");
|
|
assertNull( variableLight, "light does not exists in VariableLightManager");
|
|
|
|
// When this light is created, the VariableLightManager is created.
|
|
Light variableLight2 = new MyVariableLight("IL201", "MyLight");
|
|
InstanceManager.getDefault(LightManager.class).register(variableLight2);
|
|
variableLight = InstanceManager.getDefault(VariableLightManager.class).getBySystemName("IL201");
|
|
assertNotNull( variableLight, "variable light exists in VariableLightManager");
|
|
|
|
// Check that we can deregister light and that it get deregstered from VariableLightManager as well
|
|
InstanceManager.getDefault(LightManager.class).deregister(variableLight2);
|
|
variableLight = InstanceManager.getDefault(VariableLightManager.class).getBySystemName("IL2901");
|
|
assertNull( variableLight, "light does not exists in VariableLightManager");
|
|
}
|
|
|
|
@Test
|
|
public void testVariableLights_UserName() {
|
|
// Test that the VariableLightManager registers variable lights but not
|
|
// lights that are not variable.
|
|
|
|
Light light = new MyLight("IL1");
|
|
InstanceManager.getDefault(LightManager.class).register(light);
|
|
VariableLight variableLight = InstanceManager.getDefault(VariableLightManager.class).getByUserName("A light");
|
|
assertNull( variableLight, "light does not exists in VariableLightManager");
|
|
|
|
// Check that we can deregister light without problem
|
|
InstanceManager.getDefault(LightManager.class).deregister(light);
|
|
variableLight = InstanceManager.getDefault(VariableLightManager.class).getByUserName("A light");
|
|
assertNull( variableLight, "light does not exists in VariableLightManager");
|
|
|
|
Light variableLight2 = new MyVariableLight("IL2", "A variable light 2 DVLMT");
|
|
InstanceManager.getDefault(LightManager.class).register(variableLight2);
|
|
variableLight = InstanceManager.getDefault(VariableLightManager.class).getByUserName("A variable light 2 DVLMT");
|
|
assertNotNull( variableLight, "variableLight exists in VariableLightManager");
|
|
|
|
// Check that we can deregister variableLight and that it get deregstered from VariableLightManager as well
|
|
InstanceManager.getDefault(LightManager.class).deregister(variableLight2);
|
|
variableLight = InstanceManager.getDefault(VariableLightManager.class).getByUserName("A variable light 2 DVLMT");
|
|
assertNull( variableLight, "variableLight does not exists in VariableLightManager");
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.initInternalLightManager();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
// kill timebase created by variable light
|
|
var timebase = InstanceManager.getNullableDefault(jmri.Timebase.class);
|
|
if (timebase != null) {
|
|
timebase.setRun(false);
|
|
for (var listener : timebase.getMinuteChangeListeners()) {
|
|
timebase.removeMinuteChangeListener(listener);
|
|
}
|
|
}
|
|
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
|
|
|
|
private static class MyLight extends jmri.implementation.AbstractLight {
|
|
|
|
private MyLight(String systemName) {
|
|
super(systemName);
|
|
}
|
|
|
|
}
|
|
|
|
private static class MyVariableLight extends AbstractVariableLight {
|
|
|
|
double _value = 0.0;
|
|
|
|
private MyVariableLight(String sys, String userName) {
|
|
super(sys, userName);
|
|
}
|
|
|
|
@Override
|
|
public void setCommandedAnalogValue(double value) throws JmriException {
|
|
_value = value;
|
|
}
|
|
|
|
@Override
|
|
public double getCommandedAnalogValue() {
|
|
return _value;
|
|
}
|
|
|
|
@Override
|
|
public double getMin() {
|
|
return Float.MIN_VALUE;
|
|
}
|
|
|
|
@Override
|
|
public double getMax() {
|
|
return Float.MAX_VALUE;
|
|
}
|
|
|
|
@Override
|
|
public double getResolution() {
|
|
return 0.1;
|
|
}
|
|
|
|
@Override
|
|
public int getNumberOfSteps() {
|
|
return 10;
|
|
}
|
|
|
|
@Override
|
|
public AbsoluteOrRelative getAbsoluteOrRelative() {
|
|
return AbsoluteOrRelative.ABSOLUTE;
|
|
}
|
|
|
|
@Override
|
|
protected void sendIntensity(double intensity) {
|
|
// Do nothing
|
|
}
|
|
|
|
@Override
|
|
protected void sendOnOffCommand(int newState) {
|
|
// Do nothing
|
|
}
|
|
}
|
|
|
|
|
|
// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ProxyVariableLightManagerTest.class);
|
|
|
|
}
|