143 lines
5.0 KiB
Java
143 lines
5.0 KiB
Java
package jmri.jmrit.logix;
|
|
|
|
import java.io.File;
|
|
import java.util.List;
|
|
|
|
import jmri.*;
|
|
import jmri.jmrit.display.EditorScaffold;
|
|
import jmri.jmrit.display.LocoIcon;
|
|
import jmri.jmrit.display.controlPanelEditor.ControlPanelEditor;
|
|
import jmri.util.*;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
import org.netbeans.jemmy.operators.JDialogOperator;
|
|
import org.netbeans.jemmy.operators.JFrameOperator;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
/**
|
|
*
|
|
* @author Paul Bender Copyright (C) 2017
|
|
*/
|
|
@jmri.util.junit.annotations.DisabledIfHeadless
|
|
public class TrackerTest {
|
|
|
|
@Test
|
|
public void testCTor() {
|
|
|
|
var es = new EditorScaffold();
|
|
Tracker t = new Tracker(new OBlock("OB1", "Test"), "Test",
|
|
new LocoIcon(es),
|
|
InstanceManager.getDefault(TrackerTableAction.class));
|
|
assertNotNull(t,"exists");
|
|
|
|
JUnitUtil.dispose(es);
|
|
JUnitUtil.dispose(JmriJFrame.getFrame(Bundle.getMessage("TrackerTable")));
|
|
}
|
|
|
|
@Test
|
|
public void testTrack() {
|
|
var es = new EditorScaffold();
|
|
TrackerTableAction trackTable = InstanceManager.getDefault(TrackerTableAction.class);
|
|
OBlock blk1 = new OBlock("OB1", "blk1");
|
|
blk1.setState(OBlock.OCCUPIED);
|
|
Tracker t = new Tracker(blk1, "Test",
|
|
new LocoIcon(es),
|
|
trackTable);
|
|
assertNotNull(t,"exists");
|
|
List<OBlock> occupied = t.getBlocksOccupied();
|
|
assertEquals(1, occupied.size(), "Number Blocks Occupied");
|
|
|
|
JUnitUtil.dispose(es);
|
|
JUnitUtil.dispose(JmriJFrame.getFrame(Bundle.getMessage("TrackerTable")));
|
|
}
|
|
|
|
@Test
|
|
public void testMultipleStartBlocks() throws JmriException {
|
|
Assumptions.assumeFalse(Boolean.getBoolean("jmri.skipTestsRequiringSeparateRunning"), "Ignoring intermittent test");
|
|
WarrantPreferences.getDefault().setShutdown(WarrantPreferences.Shutdown.NO_MERGE);
|
|
|
|
// load and display
|
|
File f = new File("java/test/jmri/jmrit/logix/valid/IndicatorDemoTest.xml");
|
|
Assertions.assertTrue(InstanceManager.getDefault(ConfigureManager.class).load(f));
|
|
JUnitAppender.suppressErrorMessage("Portal elem = null");
|
|
|
|
TrackerTableAction tta = InstanceManager.getDefault(TrackerTableAction.class);
|
|
assertNotNull(tta,"TrackerTableAction not found");
|
|
OBlockManager _OBlockMgr = InstanceManager.getDefault(OBlockManager.class);
|
|
|
|
OBlock westBlock = _OBlockMgr.getByUserName("West");
|
|
assertNotNull(westBlock);
|
|
Sensor sWest = westBlock.getSensor();
|
|
assertNotNull(sWest, "Sensor sWest found");
|
|
NXFrameTest.setAndConfirmSensorAction(sWest, Sensor.ACTIVE, westBlock);
|
|
|
|
OBlock mainBlock = _OBlockMgr.getByUserName("Main");
|
|
assertNotNull(mainBlock);
|
|
Sensor sMain = mainBlock.getSensor();
|
|
assertNotNull(sMain, "Sensor sMain found");
|
|
NXFrameTest.setAndConfirmSensorAction(sMain, Sensor.ACTIVE, mainBlock);
|
|
|
|
OBlock eastBlock = _OBlockMgr.getByUserName("East");
|
|
assertNotNull(eastBlock);
|
|
Sensor sEast = eastBlock.getSensor();
|
|
assertNotNull(sEast, "Sensor sEast found");
|
|
NXFrameTest.setAndConfirmSensorAction(sEast, Sensor.ACTIVE, eastBlock);
|
|
|
|
tta.actionPerformed(null); // called to make TrackerTableAction._frame
|
|
Tracker tkrWest = new Tracker(westBlock, "TkrFW", null, tta);
|
|
assertNotNull(tkrWest, "Tracker TkrWest found");
|
|
|
|
JFrameOperator nfo = new JFrameOperator(tta._frame);
|
|
JDialogOperator jdo = new JDialogOperator(nfo, Bundle.getMessage("TrackerTitle"));
|
|
assertNotNull(jdo, "Dialog operator found");
|
|
|
|
Tracker.ChooseStartBlock dialog = (Tracker.ChooseStartBlock)jdo.getSource();
|
|
assertNotNull(dialog, "JDialog found");
|
|
|
|
dialog._jList.setSelectedIndex(0);
|
|
|
|
List<OBlock> occupied = tkrWest.getBlocksOccupied();
|
|
assertEquals(2, occupied.size(),"TkrWest Blocks Occupied");
|
|
new org.netbeans.jemmy.QueueTool().waitEmpty();
|
|
|
|
dialog._jList.setSelectedIndex(0);
|
|
|
|
occupied = tkrWest.getBlocksOccupied();
|
|
assertEquals(3, occupied.size(),"TkrWest Blocks Occupied");
|
|
|
|
|
|
ControlPanelEditor panel = (ControlPanelEditor) JmriJFrame.getFrame("Indicator Demo 1 Editor");
|
|
|
|
// JFrameOperator requestClose just hides the Tracker Table, not disposing of it.
|
|
Boolean retVal = ThreadingUtil.runOnGUIwithReturn(() -> {
|
|
if (panel != null ) {
|
|
panel.dispose();
|
|
}
|
|
JmriJFrame.getFrame(Bundle.getMessage("TrackerTable")).dispose();
|
|
return true;
|
|
});
|
|
assertTrue(retVal);
|
|
|
|
_OBlockMgr.dispose();
|
|
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.resetInstanceManager();
|
|
JUnitUtil.initConfigureManager();
|
|
JUnitUtil.initOBlockManager();
|
|
JUnitUtil.initDebugThrottleManager();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.deregisterBlockManagerShutdownTask();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
}
|