Files
JIMRI/java/test/jmri/jmrit/display/layoutEditor/LayoutEditorConnectivityTest.java
2026-06-17 14:00:51 +02:00

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();
}
}