191 lines
7.1 KiB
Java
191 lines
7.1 KiB
Java
package jmri.jmrit.beantable.signalmast;
|
|
|
|
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 static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
|
import java.util.*;
|
|
|
|
import javax.swing.*;
|
|
|
|
import jmri.*;
|
|
import jmri.implementation.*;
|
|
import jmri.util.*;
|
|
import jmri.util.junit.annotations.DisabledIfHeadless;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
import org.netbeans.jemmy.operators.*;
|
|
|
|
/**
|
|
* @author Bob Jacobsen Copyright 2018
|
|
*/
|
|
public class VirtualSignalMastAddPaneTest extends AbstractSignalMastAddPaneTestBase {
|
|
|
|
/** {@inheritDoc} */
|
|
@Override
|
|
protected SignalMastAddPane getOTT() { return new VirtualSignalMastAddPane(); }
|
|
|
|
@Test
|
|
public void testSetMast() {
|
|
VirtualSignalMast s1 = new VirtualSignalMast("IF$vsm:basic:one-searchlight($1)", "user name");
|
|
MatrixSignalMast m1 = new MatrixSignalMast("IF$xsm:basic:one-low($0001)-3t", "user");
|
|
|
|
VirtualSignalMastAddPane vp = new VirtualSignalMastAddPane();
|
|
|
|
assertTrue(vp.canHandleMast(s1));
|
|
assertFalse(vp.canHandleMast(m1));
|
|
|
|
vp.setMast(null);
|
|
|
|
SignalSystem basicSys = InstanceManager.getDefault(SignalSystemManager.class).getSystem("basic");
|
|
assertNotNull(basicSys);
|
|
|
|
vp.setAspectNames(s1.getAppearanceMap(), basicSys);
|
|
vp.setMast(s1);
|
|
|
|
vp.setAspectNames(m1.getAppearanceMap(), basicSys);
|
|
vp.setMast(m1);
|
|
JUnitAppender.assertErrorMessage("mast was wrong type: IF$xsm:basic:one-low($0001)-3t jmri.implementation.MatrixSignalMast");
|
|
|
|
}
|
|
|
|
@Test
|
|
public void testCreateMast() {
|
|
VirtualSignalMastAddPane vp = new VirtualSignalMastAddPane();
|
|
new VirtualSignalMast("IF$vsm:basic:one-searchlight($1)", "no user name"){
|
|
{ setLastRef(4); } // reset references - this leads to $0005 below, just in case anybody else has created one
|
|
};
|
|
|
|
vp.createMast("AAR-1946", "appearance-PL-2-high.xml", "user name");
|
|
|
|
SignalMast aar1946 = InstanceManager.getDefault(SignalMastManager.class).getByUserName("user name");
|
|
assertNotNull(aar1946);
|
|
assertEquals("PL-2-high", aar1946.getMastType());
|
|
assertNotNull(InstanceManager.getDefault(SignalMastManager.class).getBySystemName("IF$vsm:AAR-1946:PL-2-high($0005)"));
|
|
|
|
}
|
|
|
|
@Test
|
|
@DisabledIfHeadless
|
|
public void testCreateAndDisableViaGui() {
|
|
assertEquals(0, InstanceManager.getDefault(SignalMastManager.class).getObjectCount());
|
|
|
|
VirtualSignalMastAddPane vp = new VirtualSignalMastAddPane();
|
|
SignalSystem basicSys = InstanceManager.getDefault(SignalSystemManager.class).getSystem("basic");
|
|
assertNotNull(basicSys);
|
|
|
|
vp.setAspectNames(
|
|
new jmri.implementation.DefaultSignalAppearanceMap("IM123") {
|
|
@Override
|
|
public Enumeration<String> getAspects() {
|
|
return java.util.Collections.enumeration(
|
|
java.util.Arrays.asList(
|
|
new String[]{"Clear","Approach Medium","Advance Approach"}));
|
|
}
|
|
}
|
|
, basicSys);
|
|
|
|
JFrame frame = new JFrame("Add/Edit Signal Mast");
|
|
frame.add(vp);
|
|
ThreadingUtil.runOnGUI( () -> {
|
|
frame.pack();
|
|
frame.setVisible(true);
|
|
});
|
|
|
|
JFrameOperator frameOp = new JFrameOperator("Add/Edit Signal Mast");
|
|
JCheckBoxOperator bBox = new JCheckBoxOperator(frameOp, "Approach Medium");
|
|
|
|
// disable Approach Medium
|
|
ThreadingUtil.runOnGUI(() -> {
|
|
bBox.push();
|
|
vp.createMast("AAR-1946", "appearance-PL-2-high.xml", "user name 1");
|
|
});
|
|
|
|
// check list of SignalMasts
|
|
assertEquals(1, InstanceManager.getDefault(SignalMastManager.class).getObjectCount());
|
|
SignalMast uName1 = InstanceManager.getDefault(SignalMastManager.class).getByUserName("user name 1");
|
|
assertNotNull(uName1);
|
|
// system name not checked, depends on history of how many VirtualSignalMast objects have been created
|
|
|
|
// check aspect disabled
|
|
assertTrue(uName1.isAspectDisabled("Approach Medium"));
|
|
assertFalse(uName1.isAspectDisabled("Clear"));
|
|
|
|
JUnitUtil.dispose(frame);
|
|
|
|
}
|
|
|
|
@Test
|
|
@DisabledIfHeadless
|
|
public void testEditAndDisableViaGui() {
|
|
assertEquals(0, InstanceManager.getDefault(SignalMastManager.class).getObjectCount());
|
|
VirtualSignalMast mast = new VirtualSignalMast("IF$vsm:basic:one-searchlight($1)", "user name 2"){
|
|
{ setLastRef(7); } // reset references - this leads to $0007 below, just in case anybody else has created one
|
|
};
|
|
InstanceManager.getDefault(SignalMastManager.class).register(mast);
|
|
assertEquals(1, InstanceManager.getDefault(SignalMastManager.class).getObjectCount());
|
|
mast.setAspectDisabled("Stop");
|
|
mast.setAspectDisabled("Unlit"); // we will reenable this below
|
|
|
|
VirtualSignalMastAddPane vp = new VirtualSignalMastAddPane();
|
|
|
|
SignalSystem basicSys = InstanceManager.getDefault(SignalSystemManager.class).getSystem("basic");
|
|
assertNotNull(basicSys);
|
|
|
|
vp.setAspectNames(
|
|
new jmri.implementation.DefaultSignalAppearanceMap("IM123") {
|
|
@Override
|
|
public Enumeration<String> getAspects() { return mast.getAllKnownAspects().elements(); }
|
|
}
|
|
, basicSys);
|
|
vp.setMast(mast);
|
|
|
|
JFrame frame = new JFrame("Add/Edit Signal Mast");
|
|
frame.add(vp);
|
|
ThreadingUtil.runOnGUI( () -> {
|
|
frame.pack();
|
|
frame.setVisible(true);
|
|
});
|
|
|
|
JFrameOperator frameOp = new JFrameOperator("Add/Edit Signal Mast");
|
|
JCheckBoxOperator aBox = new JCheckBoxOperator(frameOp, "Approach");
|
|
JCheckBoxOperator uBox = new JCheckBoxOperator(frameOp, "Unlit");
|
|
|
|
// disable Approach
|
|
jmri.util.ThreadingUtil.runOnGUI(() -> {
|
|
aBox.push(); // this should set disabled
|
|
uBox.push(); // this should set enabled
|
|
vp.createMast("basic", "appearance-one-searchlight.xml", "user name 2");
|
|
});
|
|
|
|
// check list of SignalMasts
|
|
assertEquals(1, InstanceManager.getDefault(SignalMastManager.class).getObjectCount());
|
|
SignalMast userName2 = InstanceManager.getDefault(SignalMastManager.class).getByUserName("user name 2");
|
|
assertNotNull(userName2);
|
|
// system name not checked, depends on history of how many VirtualSignalMast objects have been created
|
|
|
|
// check correct aspect disabled
|
|
assertFalse(userName2.isAspectDisabled("Clear"));
|
|
assertTrue(userName2.isAspectDisabled("Approach"));
|
|
assertTrue(userName2.isAspectDisabled("Stop"));
|
|
assertFalse(userName2.isAspectDisabled("Unlit"));
|
|
|
|
JUnitUtil.dispose(frame);
|
|
}
|
|
|
|
@BeforeEach
|
|
@Override
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.initDefaultUserMessagePreferences();
|
|
}
|
|
|
|
@AfterEach
|
|
@Override
|
|
public void tearDown() {
|
|
JUnitUtil.tearDown();
|
|
}
|
|
}
|