170 lines
5.3 KiB
Java
170 lines
5.3 KiB
Java
package jmri.implementation;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import jmri.InstanceManager;
|
|
import jmri.NamedBean;
|
|
import jmri.NamedBeanHandle;
|
|
import jmri.SignalHead;
|
|
import jmri.SignalMast;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* Tests for the SignalAppearanceMap interface.
|
|
*
|
|
* @author Bob Jacobsen Copyright (C) 2009
|
|
*/
|
|
public class DefaultSignalAppearanceMapTest {
|
|
|
|
private SignalHead h1;
|
|
private SignalHead h2;
|
|
|
|
private List<NamedBeanHandle<SignalHead>> l1;
|
|
private List<NamedBeanHandle<SignalHead>> l2;
|
|
|
|
@Test
|
|
public void testCtor() {
|
|
DefaultSignalAppearanceMap map = new DefaultSignalAppearanceMap("sys", "user");
|
|
assertNotNull(map);
|
|
}
|
|
|
|
@Test
|
|
public void testSearchOrder() throws IOException {
|
|
try { // need try-finally to ensure junk deleted from user area
|
|
SignalSystemTestUtil.createMockSystem();
|
|
|
|
// check that mock (test directory) system is present
|
|
InstanceManager.getDefault(jmri.SignalMastManager.class)
|
|
.provideSignalMast("IF$shsm:" + SignalSystemTestUtil.getMockSystemName() + ":one-searchlight:IH1");
|
|
|
|
} finally {
|
|
SignalSystemTestUtil.deleteMockSystem();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void testDefaultMap() {
|
|
SignalMast s = InstanceManager.getDefault(jmri.SignalMastManager.class).provideSignalMast("IF$shsm:basic:one-searchlight:IH1");
|
|
DefaultSignalAppearanceMap t = (DefaultSignalAppearanceMap) s.getAppearanceMap();
|
|
t.loadDefaults();
|
|
|
|
s.setAspect("Stop");
|
|
assertEquals( SignalHead.RED, h1.getAppearance(),
|
|
"Stop is RED");
|
|
|
|
s.setAspect("Approach");
|
|
assertEquals( SignalHead.YELLOW, h1.getAppearance(),
|
|
"Approach is YELLOW");
|
|
|
|
s.setAspect("Clear");
|
|
assertEquals( SignalHead.GREEN, h1.getAppearance(),
|
|
"Clear is GREEN");
|
|
|
|
InstanceManager.getDefault(jmri.SignalMastManager.class).deregister(s);
|
|
s.dispose();
|
|
}
|
|
|
|
@Test
|
|
public void testDefaultAspects() {
|
|
DefaultSignalAppearanceMap t = new DefaultSignalAppearanceMap("sys", "user");
|
|
t.loadDefaults();
|
|
|
|
java.util.Enumeration<String> e = t.getAspects();
|
|
|
|
assertEquals("Stop", e.nextElement());
|
|
assertEquals("Approach", e.nextElement());
|
|
assertEquals("Clear", e.nextElement());
|
|
|
|
assertFalse(e.hasMoreElements());
|
|
}
|
|
|
|
@Test
|
|
public void testTwoHead() {
|
|
|
|
SignalMast s = new SignalHeadSignalMast("IF$shsm:basic:two-searchlight:IH1:IH2") {
|
|
@Override
|
|
protected void configureAspectTable(String signalSystemName, String aspectMapName) {
|
|
map = new DefaultSignalAppearanceMap("sys", "user");
|
|
}
|
|
};
|
|
|
|
DefaultSignalAppearanceMap t = (DefaultSignalAppearanceMap) s.getAppearanceMap();
|
|
t.addAspect("meh", new int[]{SignalHead.LUNAR, SignalHead.DARK});
|
|
t.addAspect("biff", new int[]{SignalHead.GREEN, SignalHead.GREEN});
|
|
|
|
s.setAspect("meh");
|
|
assertEquals( SignalHead.LUNAR, h1.getAppearance(),
|
|
"meh 1 is LUNAR");
|
|
assertEquals( SignalHead.DARK, h2.getAppearance(),
|
|
"meh 2 is LUNAR");
|
|
|
|
s.setAspect("biff");
|
|
assertEquals( SignalHead.GREEN, h1.getAppearance(),
|
|
"biff 1 is GREEN");
|
|
assertEquals( SignalHead.GREEN, h2.getAppearance(),
|
|
"biff 2 is GREEN");
|
|
|
|
InstanceManager.getDefault(jmri.SignalMastManager.class).deregister(s);
|
|
s.dispose();
|
|
}
|
|
|
|
@Test
|
|
public void testGetState() {
|
|
DefaultSignalAppearanceMap map = new DefaultSignalAppearanceMap("sys", "user");
|
|
assertEquals(NamedBean.INCONSISTENT, map.getState());
|
|
}
|
|
|
|
@Test
|
|
public void testSetState() {
|
|
DefaultSignalAppearanceMap map = new DefaultSignalAppearanceMap("sys", "user");
|
|
map.setState(NamedBean.UNKNOWN);
|
|
// verify getState did not change
|
|
assertEquals(NamedBean.INCONSISTENT, map.getState());
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.initInternalSignalHeadManager();
|
|
h1 = new DefaultSignalHead("IH1", "head1") {
|
|
@Override
|
|
protected void updateOutput() {
|
|
}
|
|
};
|
|
h2 = new DefaultSignalHead("IH2", "head2") {
|
|
@Override
|
|
protected void updateOutput() {
|
|
}
|
|
};
|
|
l1 = new ArrayList<>();
|
|
l1.add(new NamedBeanHandle<>("IH1", h1));
|
|
l2 = new ArrayList<>();
|
|
l2.add(new NamedBeanHandle<>("IH1", h1));
|
|
l2.add(new NamedBeanHandle<>("IH2", h2));
|
|
InstanceManager.getDefault(jmri.SignalHeadManager.class).register(h1);
|
|
InstanceManager.getDefault(jmri.SignalHeadManager.class).register(h2);
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
InstanceManager.getDefault(jmri.SignalHeadManager.class).deregister(h1);
|
|
h1.dispose();
|
|
h1 = null;
|
|
InstanceManager.getDefault(jmri.SignalHeadManager.class).deregister(h2);
|
|
h2.dispose();
|
|
h2 = null;
|
|
l1 = null;
|
|
l2 = null;
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
}
|