318 lines
13 KiB
Java
318 lines
13 KiB
Java
package jmri.jmrit.display.layoutEditor;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
|
|
import java.util.List;
|
|
|
|
import jmri.Block;
|
|
import jmri.BlockManager;
|
|
import jmri.JmriException;
|
|
import jmri.Turnout;
|
|
import jmri.configurexml.ConfigXmlManager;
|
|
import jmri.jmrit.display.EditorFrameOperator;
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.util.junit.annotations.DisabledIfHeadless;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
/**
|
|
* Swing tests for the LayoutEditor
|
|
*
|
|
* @author Dave Duchamp Copyright 2011
|
|
*/
|
|
public class LayoutEditorConnectivityTest {
|
|
|
|
private ConfigXmlManager cm = null;
|
|
|
|
@Test
|
|
@DisabledIfHeadless
|
|
public void testShowAndClose() throws JmriException {
|
|
|
|
// load and display test panel file
|
|
java.io.File f = new java.io.File("java/test/jmri/jmrit/display/layoutEditor/valid/LEConnectTest.xml");
|
|
Assertions.assertTrue(cm.load(f));
|
|
|
|
// Find new window by name (should be more distinctive, comes from sample file)
|
|
EditorFrameOperator to = new EditorFrameOperator("Connectivity Test");
|
|
|
|
LayoutEditor le = (LayoutEditor) jmri.util.JmriJFrame.getFrame("Connectivity Test");
|
|
assertNotNull(le);
|
|
|
|
// Panel is up, continue set up for tests.
|
|
ConnectivityUtil cu = new ConnectivityUtil(le);
|
|
assertNotNull(cu);
|
|
BlockManager bm = jmri.InstanceManager.getDefault(jmri.BlockManager.class);
|
|
assertNotNull(bm);
|
|
|
|
// Test right-handed crossover connectivity turnout settings
|
|
Block cBlock = bm.getBlock("4");
|
|
Block pBlock = bm.getBlock("6");
|
|
Block nBlock = bm.getBlock("5");
|
|
List <LayoutTrackExpectedState<LayoutTurnout>> tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
int setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "6_4_5Connect");
|
|
|
|
pBlock = bm.getBlock("5");
|
|
nBlock = bm.getBlock("6");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "5_4_6Connect");
|
|
|
|
pBlock = bm.getBlock("5");
|
|
nBlock = bm.getBlock("2");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "5_4_2Connect");
|
|
|
|
cBlock = bm.getBlock("2");
|
|
pBlock = bm.getBlock("1");
|
|
nBlock = bm.getBlock("3");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "1_2_3Connect");
|
|
|
|
pBlock = bm.getBlock("3");
|
|
nBlock = bm.getBlock("1");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "3_2_1Connect");
|
|
|
|
pBlock = bm.getBlock("1");
|
|
nBlock = bm.getBlock("4");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "1_2_4Connect");
|
|
|
|
// Test left-handed crossover connectivity turnout settings
|
|
cBlock = bm.getBlock("14");
|
|
pBlock = bm.getBlock("13");
|
|
nBlock = bm.getBlock("17");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "13_14_17Connect");
|
|
|
|
pBlock = bm.getBlock("17");
|
|
nBlock = bm.getBlock("13");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "17_14_13Connect");
|
|
|
|
pBlock = bm.getBlock("17");
|
|
nBlock = bm.getBlock("12");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "17_14_12Connect");
|
|
|
|
cBlock = bm.getBlock("12");
|
|
pBlock = bm.getBlock("11");
|
|
nBlock = bm.getBlock("15");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "11_12_15Connect");
|
|
|
|
pBlock = bm.getBlock("15");
|
|
nBlock = bm.getBlock("11");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "15_12_11Connect");
|
|
|
|
pBlock = bm.getBlock("15");
|
|
nBlock = bm.getBlock("14");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "15_12_14Connect");
|
|
|
|
// Test double crossover connectivity turnout settings
|
|
cBlock = bm.getBlock("21");
|
|
pBlock = bm.getBlock("20");
|
|
nBlock = bm.getBlock("22");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "20_21_22Connect");
|
|
|
|
pBlock = bm.getBlock("22");
|
|
nBlock = bm.getBlock("20");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "22_21_20Connect");
|
|
|
|
pBlock = bm.getBlock("20");
|
|
nBlock = bm.getBlock("26");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "20_21_26Connect");
|
|
|
|
cBlock = bm.getBlock("22");
|
|
pBlock = bm.getBlock("23");
|
|
nBlock = bm.getBlock("21");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "23_22_21Connect");
|
|
|
|
pBlock = bm.getBlock("21");
|
|
nBlock = bm.getBlock("23");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "21_22_23Connect");
|
|
|
|
pBlock = bm.getBlock("23");
|
|
nBlock = bm.getBlock("25");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "23_22_25Connect");
|
|
|
|
cBlock = bm.getBlock("26");
|
|
pBlock = bm.getBlock("27");
|
|
nBlock = bm.getBlock("25");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "27_26_25Connect");
|
|
|
|
pBlock = bm.getBlock("25");
|
|
nBlock = bm.getBlock("27");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "25_26_27Connect");
|
|
|
|
pBlock = bm.getBlock("27");
|
|
nBlock = bm.getBlock("21");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "27_26_21Connect");
|
|
|
|
cBlock = bm.getBlock("25");
|
|
pBlock = bm.getBlock("24");
|
|
nBlock = bm.getBlock("26");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "24_25_26Connect");
|
|
|
|
pBlock = bm.getBlock("26");
|
|
nBlock = bm.getBlock("24");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "26_25_24Connect");
|
|
|
|
pBlock = bm.getBlock("24");
|
|
nBlock = bm.getBlock("22");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "24_25_22Connect");
|
|
|
|
// Test right handed turnout (with "wings" in same block) connectivity turnout settings
|
|
cBlock = bm.getBlock("62");
|
|
pBlock = bm.getBlock("64");
|
|
nBlock = bm.getBlock("61");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "64_62_61Connect");
|
|
|
|
pBlock = bm.getBlock("61");
|
|
nBlock = bm.getBlock("64");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "61_62_64Connect");
|
|
|
|
pBlock = bm.getBlock("63");
|
|
nBlock = bm.getBlock("61");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "63_62_61Connect");
|
|
|
|
pBlock = bm.getBlock("61");
|
|
nBlock = bm.getBlock("63");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "61_62_63Connect");
|
|
|
|
// Test extended track following connectivity turnout settings
|
|
// Each path must go through two turnouts, whose settings are tested in order
|
|
cBlock = bm.getBlock("32");
|
|
pBlock = bm.getBlock("31");
|
|
nBlock = bm.getBlock("33");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "31_32_33ConnectA");
|
|
setting = tsList.get(1).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "31_32_33ConnectB");
|
|
|
|
pBlock = bm.getBlock("33");
|
|
nBlock = bm.getBlock("31");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "33_32_31ConnectA");
|
|
setting = tsList.get(1).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "33_32_31ConnectB");
|
|
|
|
pBlock = bm.getBlock("31");
|
|
nBlock = bm.getBlock("34");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "31_32_34ConnectA");
|
|
setting = tsList.get(1).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "31_32_34ConnectB");
|
|
|
|
pBlock = bm.getBlock("34");
|
|
nBlock = bm.getBlock("31");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "34_32_31ConnectA");
|
|
setting = tsList.get(1).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "34_32_31ConnectB");
|
|
|
|
pBlock = bm.getBlock("31");
|
|
nBlock = bm.getBlock("35");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "31_32_35ConnectA");
|
|
setting = tsList.get(1).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "31_32_35ConnectB");
|
|
|
|
pBlock = bm.getBlock("35");
|
|
nBlock = bm.getBlock("31");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.CLOSED, setting, "35_32_31ConnectA");
|
|
setting = tsList.get(1).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "35_32_31ConnectB");
|
|
|
|
pBlock = bm.getBlock("31");
|
|
nBlock = bm.getBlock("36");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "31_32_36ConnectA");
|
|
setting = tsList.get(1).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "31_32_36ConnectB");
|
|
|
|
pBlock = bm.getBlock("36");
|
|
nBlock = bm.getBlock("31");
|
|
tsList = cu.getTurnoutList(cBlock, pBlock, nBlock);
|
|
setting = tsList.get(0).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "36_32_31ConnectA");
|
|
setting = tsList.get(1).getExpectedState();
|
|
assertEquals( Turnout.THROWN, setting, "36_32_31ConnectB");
|
|
|
|
// and close the window
|
|
to.closeFrameWithConfirmations();
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.resetProfileManager();
|
|
JUnitUtil.initInternalTurnoutManager();
|
|
JUnitUtil.initInternalSensorManager();
|
|
cm = new jmri.configurexml.ConfigXmlManager() {
|
|
};
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
cm = null;
|
|
JUnitUtil.deregisterBlockManagerShutdownTask();
|
|
jmri.jmrit.display.EditorFrameOperator.clearEditorFrameOperatorThreads();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
}
|