Files
JIMRI/java/test/jmri/configurexml/SectionManagerXmlTest.java
2026-06-17 14:00:51 +02:00

555 lines
31 KiB
Java

package jmri.configurexml;
import java.util.List;
import jmri.Block;
import jmri.ConfigureManager;
import jmri.EntryPoint;
import jmri.InstanceManager;
import jmri.Memory;
import jmri.Path;
import jmri.Section;
import jmri.Sensor;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.io.TempDir;
import static org.junit.jupiter.api.Assertions.*;
/**
* Tests for SectionManagerXml.
* @author Bob Coleman Copyright 2012
*/
public class SectionManagerXmlTest {
@Test
public void testLoadCurrent() {
// load file
JUnitUtil.resetInstanceManager();
JUnitUtil.initConfigureManager();
JUnitUtil.initInternalTurnoutManager();
JUnitUtil.initInternalLightManager();
JUnitUtil.initInternalSensorManager();
JUnitUtil.initMemoryManager();
JUnitUtil.initLayoutBlockManager();
JUnitUtil.initSectionManager();
Assertions.assertDoesNotThrow( () -> InstanceManager.getDefault(ConfigureManager.class)
.load(new java.io.File("java/test/jmri/configurexml/load/SectionManagerXmlTest.xml")));
jmri.SensorManager sensorManager = InstanceManager.getDefault(jmri.SensorManager.class);
jmri.BlockManager blockManager = InstanceManager.getDefault(jmri.BlockManager.class);
jmri.SectionManager sectionManager = InstanceManager.getDefault(jmri.SectionManager.class);
jmri.TurnoutManager turnoutManager = InstanceManager.getDefault( jmri.TurnoutManager.class);
jmri.MemoryManager memoryManager = InstanceManager.getDefault( jmri.MemoryManager.class);
// Note: This test assumes that BlockManagerXMLTest passes and more importantly (weakly)
// that LoadSectionManagerFileText.xml and LoadBlockManagerFileText.xml refer to the
// same block / section layout definition.
// check existence of sections
assertNotNull(sectionManager.getSection("IY:AUTO:0001"));
assertNull(sectionManager.getSection("no section"));
assertNotNull(sectionManager.getSection("IY:AUTO:0002"));
assertNotNull(sectionManager.getSection("IY:AUTO:0003"));
assertNotNull(sectionManager.getSection("IY:AUTO:0004"));
assertNotNull(sectionManager.getSection("IY:AUTO:0005"));
assertNotNull(sectionManager.getSection("IY:AUTO:0006"));
assertNotNull(sectionManager.getSection("IY:AUTO:0007"));
assertNotNull(sectionManager.getSection("IY:AUTO:0008"));
assertNotNull(sectionManager.getSection("IY:AUTO:0009"));
assertNotNull(sectionManager.getSection("IY:AUTO:0010"));
assertNotNull(sectionManager.getSection("IY:AUTO:0011"));
assertNotNull(sectionManager.getSection("IY:AUTO:0012"));
assertNotNull(sectionManager.getSection("NorthWest"));
assertNotNull(sectionManager.getSection("North"));
assertNotNull(sectionManager.getSection("NorthSiding"));
assertNotNull(sectionManager.getSection("NorthEast"));
assertNotNull(sectionManager.getSection("East"));
assertNotNull(sectionManager.getSection("EastSiding"));
assertNotNull(sectionManager.getSection("SouthEast"));
assertNotNull(sectionManager.getSection("South"));
assertNotNull(sectionManager.getSection("SouthSiding"));
assertNotNull(sectionManager.getSection("SouthWest"));
assertNotNull(sectionManager.getSection("West"));
assertNotNull(sectionManager.getSection("WestSiding"));
// check existence of a couple of blocks just to be sure
// that LoadSectionManagerFileText.xml and LoadBlockManagerFileText.xml refer to the
// same block / section layout definition.
assertNotNull(blockManager.getBlock("IB1"));
assertNull(blockManager.getBlock("no block"));
assertNotNull(blockManager.getBlock("IB12"));
assertNotNull(blockManager.getBlock("blocknorthwest"));
assertNotNull(blockManager.getBlock("blockwestsiding"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB1"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB12"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blocknorthwest"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blockwestsiding"));
// check existence of a couple of turmouts just to be sure
// that LoadSectionManagerFileText.xml and LoadBlockManagerFileText.xml refer to the
// same block / section layout definition.
assertNotNull( turnoutManager.getTurnout("IT1"));
assertNull( turnoutManager.getTurnout("no turnout"));
assertNotNull( turnoutManager.getTurnout("IT2"));
assertNotNull( turnoutManager.getTurnout("IT8"));
// check existence of a couple of memories just to be sure
// that LoadSectionManagerFileText.xml and LoadBlockManagerFileText.xml refer to the
// same block / section layout definition.
assertNotNull(memoryManager.getMemory("IM:AUTO:0001"));
assertNull(memoryManager.getMemory("no memory"));
assertNotNull(memoryManager.getMemory("IM:AUTO:0002"));
assertNotNull(memoryManager.getMemory("IM:AUTO:0012"));
assertNotNull(memoryManager.getMemory("blocknorthwestmemory"));
assertNotNull(memoryManager.getMemory("blockwestsidingmemory"));
// check existence of a couple of sensors just to be sure
// that LoadSectionManagerFileText.xml and LoadBlockManagerFileText.xml refer to the
// same block / section layout definition.
assertNotNull(sensorManager.getSensor("ISBO1"));
assertNull(sensorManager.getSensor("no sensor"));
assertNotNull(sensorManager.getSensor("ISBO2"));
assertNotNull(sensorManager.getSensor("ISBO12"));
assertNotNull(sensorManager.getSensor("blocknorthwestoccupied"));
assertNotNull(sensorManager.getSensor("blockwestsidingoccupied"));
// check existence of a couple of paths between blocks just to be sure
// that LoadSectionManagerFileText.xml and LoadBlockManagerFileText.xml refer to the
// same block / section layout definition.
Block[] blockstotest = new Block[12]; //Make sure this is bigger than the list below
Sensor[] occupiedsensor = new Sensor[12]; //Make sure this is bigger than the list below
int[] expectedpreviouspaths = new int[12]; //Make sure this is bigger than the list below
int[] expectednextpaths = new int[12]; //Make sure this is bigger than the list below
boolean[] passprevioustest = new boolean[4]; //Make sure this is bigger than needed
boolean[] passnexttest = new boolean[4]; //Make sure this is bigger than needed
Block[][] previousblock = new Block[12][4]; //Make sure this is bigger than the list below
Block[][] nextblock = new Block[12][4]; //Make sure this is bigger than the list below
// This matches up with the test file, ..., just be sure
// that LoadSectionManagerFileText.xml and LoadBlockManagerFileText.xml refer to the
// same block / section layout definition.
blockstotest[0] = blockManager.getBlock("blocknorthwest");
assertNotNull(blockstotest[0]);
occupiedsensor[0] = sensorManager.getSensor("blocknorthwestoccupied");
assertNotNull(occupiedsensor[0]);
blockstotest[1] = blockManager.getBlock("blocknorth");
assertNotNull(blockstotest[1]);
occupiedsensor[1] = sensorManager.getSensor("blocknorthoccupied");
assertNotNull(occupiedsensor[1]);
blockstotest[2] = blockManager.getBlock("blocknorthsiding");
assertNotNull(blockstotest[2]);
occupiedsensor[2] = sensorManager.getSensor("blocknorthsidingoccupied");
assertNotNull(occupiedsensor[2]);
blockstotest[3] = blockManager.getBlock("blocknortheast");
assertNotNull(blockstotest[3]);
occupiedsensor[3] = sensorManager.getSensor("blocknortheastoccupied");
assertNotNull(occupiedsensor[3]);
blockstotest[4] = blockManager.getBlock("blockeast");
assertNotNull(blockstotest[4]);
occupiedsensor[4] = sensorManager.getSensor("blockeastoccupied");
assertNotNull(occupiedsensor[4]);
blockstotest[5] = blockManager.getBlock("blockeastsiding");
assertNotNull(blockstotest[5]);
occupiedsensor[5] = sensorManager.getSensor("blockeastsidingoccupied");
assertNotNull(occupiedsensor[5]);
blockstotest[6] = blockManager.getBlock("blocksoutheast");
assertNotNull(blockstotest[6]);
occupiedsensor[6] = sensorManager.getSensor("blocksoutheastoccupied");
assertNotNull(occupiedsensor[6]);
blockstotest[7] = blockManager.getBlock("blocksouth");
assertNotNull(blockstotest[7]);
occupiedsensor[7] = sensorManager.getSensor("blocksouthoccupied");
assertNotNull(occupiedsensor[7]);
blockstotest[8] = blockManager.getBlock("blocksouthsiding");
assertNotNull(blockstotest[8]);
occupiedsensor[8] = sensorManager.getSensor("blocksouthsidingoccupied");
assertNotNull(occupiedsensor[8]);
blockstotest[9] = blockManager.getBlock("blocksouthwest");
assertNotNull(blockstotest[9]);
occupiedsensor[9] = sensorManager.getSensor("blocksouthwestoccupied");
assertNotNull(occupiedsensor[9]);
blockstotest[10] = blockManager.getBlock("blockwest");
assertNotNull(blockstotest[10]);
occupiedsensor[10] = sensorManager.getSensor("blockwestoccupied");
assertNotNull(occupiedsensor[10]);
blockstotest[11] = blockManager.getBlock("blockwestsiding");
assertNotNull(blockstotest[11]);
occupiedsensor[11] = sensorManager.getSensor("blockwestsidingoccupied");
assertNotNull(occupiedsensor[11]);
// The references are circular so the definitons are split up, ..., just be sure
// that LoadSectionManagerFileText.xml and LoadBlockManagerFileText.xml refer to the
// same block / section layout definition.
expectedpreviouspaths[0] = 2;
previousblock[0][0] = blockstotest[10];
previousblock[0][1] = blockstotest[11];
expectednextpaths[0] = 2;
nextblock[0][0] = blockstotest[1];
nextblock[0][1] = blockstotest[2];
expectedpreviouspaths[1] = 1;
previousblock[1][0] = blockstotest[0];
expectednextpaths[1] = 1;
nextblock[1][0] = blockstotest[3];
expectedpreviouspaths[2] = 1;
previousblock[2][0] = blockstotest[0];
expectednextpaths[2] = 1;
nextblock[2][0] = blockstotest[3];
expectedpreviouspaths[3] = 2;
previousblock[3][0] = blockstotest[1];
previousblock[3][1] = blockstotest[2];
expectednextpaths[3] = 2;
nextblock[3][0] = blockstotest[4];
nextblock[3][1] = blockstotest[5];
expectedpreviouspaths[4] = 1;
previousblock[4][0] = blockstotest[3];
expectednextpaths[4] = 1;
nextblock[4][0] = blockstotest[6];
expectedpreviouspaths[5] = 1;
previousblock[5][0] = blockstotest[3];
expectednextpaths[5] = 1;
nextblock[5][0] = blockstotest[6];
expectedpreviouspaths[6] = 2;
previousblock[6][0] = blockstotest[4];
previousblock[6][1] = blockstotest[5];
expectednextpaths[6] = 2;
nextblock[6][0] = blockstotest[7];
nextblock[6][1] = blockstotest[8];
expectedpreviouspaths[7] = 1;
previousblock[7][0] = blockstotest[6];
expectednextpaths[7] = 1;
nextblock[7][0] = blockstotest[9];
expectedpreviouspaths[8] = 1;
previousblock[8][0] = blockstotest[6];
expectednextpaths[8] = 1;
nextblock[8][0] = blockstotest[9];
expectedpreviouspaths[9] = 2;
previousblock[9][0] = blockstotest[7];
previousblock[9][1] = blockstotest[8];
expectednextpaths[9] = 2;
nextblock[9][0] = blockstotest[10];
nextblock[9][1] = blockstotest[11];
expectedpreviouspaths[10] = 1;
previousblock[10][0] = blockstotest[9];
expectednextpaths[10] = 1;
nextblock[10][0] = blockstotest[0];
expectedpreviouspaths[11] = 1;
previousblock[11][0] = blockstotest[9];
expectednextpaths[11] = 1;
nextblock[11][0] = blockstotest[0];
for (int testblockfocus = 0; testblockfocus < 12; testblockfocus++) { // Set to one greater than above
int expectedcentrepaths = expectedpreviouspaths[testblockfocus] + expectednextpaths[testblockfocus];
Block focusBlock = blockstotest[testblockfocus];
Memory expectedtestmemory = memoryManager.getMemory("blocknorthmemory");
assertNotNull(expectedtestmemory);
expectedtestmemory.setValue("Memory test: " + testblockfocus);
// TODO: BOB C: Memory Test
// Memory actualtestmemory = (Memory) focusBlock.getValue();
// Assert.assertNotNull(actualtestmemory);
// Assert.assertEquals("Memory where Focus was: " + testblockfocus, expectedtestmemory, actualtestmemory);
assertEquals( occupiedsensor[testblockfocus], focusBlock.getSensor(),
"Sensor where Focus was: " + testblockfocus);
List<Path> testpaths = focusBlock.getPaths();
assertEquals( expectedcentrepaths, testpaths.size(),
"Block Path size where Block Focus was: " + testblockfocus);
for (int p = 0; p < expectedpreviouspaths[testblockfocus]; p++) {
passprevioustest[p] = false;
}
for (int n = 0; n < expectednextpaths[testblockfocus]; n++) {
passnexttest[n] = false;
}
for (int i = 0; i < testpaths.size(); i++) {
Block testblock = testpaths.get(i).getBlock();
assertNotNull(testblock);
for (int p = 0; p < expectedpreviouspaths[testblockfocus]; p++) {
if (testblock == previousblock[testblockfocus][p]) {
passprevioustest[p] = true;
}
}
for (int n = 0; n < expectednextpaths[testblockfocus]; n++) {
if (testblock == nextblock[testblockfocus][n]) {
passnexttest[n] = true;
}
}
}
for (int p = 0; p < expectedpreviouspaths[testblockfocus]; p++) {
assertTrue(passprevioustest[p], "Block Focus was: " + testblockfocus + " previous path: " + p);
}
for (int n = 0; n < expectednextpaths[testblockfocus]; n++) {
assertTrue(passnexttest[n], "Block Focus was: " + testblockfocus + " next path: " + n);
}
}
Section[] sectionstotest = new Section[12]; //Make sure this is bigger than the list below
Block[] expectedsectionentryblock = new Block[12]; //Make sure this is bigger than the list below
Block[][] expectedsectionforwardblock = new Block[12][2]; //Make sure this is bigger than the list below
Block[][] expectedsectionreverseblock = new Block[12][2]; //Make sure this is bigger than the list below
Sensor[] expectedForwardBlockingSensors = new Sensor[12]; //Make sure this is bigger than the list below
Sensor[] expectedReverseBlockingSensors = new Sensor[12]; //Make sure this is bigger than the list below
Sensor[] expectedForwardStoppingSensors = new Sensor[12]; //Make sure this is bigger than the list below
Sensor[] expectedReverseStoppingSensors = new Sensor[12]; //Make sure this is bigger than the list below
int[] expectedsectionblocklistsize = new int[12]; //Make sure this is bigger than the list below
int[] expectedforwardEntryPointList = new int[12]; //Make sure this is bigger than the list below
int[] expectedreverseEntryPointList = new int[12]; //Make sure this is bigger than the list below
// Sensor[] occupiedsensor = new Sensor[12]; //Make sure this is bigger than the list below
// int[] expectedpreviouspaths = new int[12]; //Make sure this is bigger than the list below
// int[] expectednextpaths = new int[12]; //Make sure this is bigger than the list below
// This matches up with the test file, ...
sectionstotest[0] = sectionManager.getSection("NorthWest");
assertNotNull(sectionstotest[0]);
expectedsectionblocklistsize[0] = 1;
expectedsectionentryblock[0] = blockstotest[0];
expectedforwardEntryPointList[0] = 2;
expectedsectionforwardblock[0][0] = blockstotest[10];
expectedsectionforwardblock[0][1] = blockstotest[11];
expectedreverseEntryPointList[0] = 2;
expectedsectionreverseblock[0][0] = blockstotest[1];
expectedsectionreverseblock[0][1] = blockstotest[2];
expectedForwardBlockingSensors[0] = sensorManager.getSensor("ISSDIRF1");
expectedReverseBlockingSensors[0] = sensorManager.getSensor("ISSDIRR1");
expectedForwardStoppingSensors[0] = sensorManager.getSensor("ISSSTOPF1");
expectedReverseStoppingSensors[0] = sensorManager.getSensor("ISSSTOPR1");
sectionstotest[1] = sectionManager.getSection("North");
assertNotNull(sectionstotest[1]);
expectedsectionblocklistsize[1] = 1;
expectedsectionentryblock[1] = blockstotest[1];
expectedforwardEntryPointList[1] = 1;
expectedsectionforwardblock[1][0] = blockstotest[0];
expectedreverseEntryPointList[1] = 1;
expectedsectionreverseblock[1][0] = blockstotest[3];
expectedForwardBlockingSensors[1] = sensorManager.getSensor("ISSDIRF2");
expectedReverseBlockingSensors[1] = sensorManager.getSensor("ISSDIRR2");
expectedForwardStoppingSensors[1] = sensorManager.getSensor("ISSSTOPF2");
expectedReverseStoppingSensors[1] = sensorManager.getSensor("ISSSTOPR2");
sectionstotest[2] = sectionManager.getSection("NorthSiding");
assertNotNull(sectionstotest[2]);
expectedsectionblocklistsize[2] = 1;
expectedsectionentryblock[2] = blockstotest[2];
expectedforwardEntryPointList[2] = 1;
expectedsectionforwardblock[2][0] = blockstotest[0];
expectedreverseEntryPointList[2] = 1;
expectedsectionreverseblock[2][0] = blockstotest[3];
expectedForwardBlockingSensors[2] = sensorManager.getSensor("ISSDIRF3");
expectedReverseBlockingSensors[2] = sensorManager.getSensor("ISSDIRR3");
expectedForwardStoppingSensors[2] = sensorManager.getSensor("ISSSTOPF3");
expectedReverseStoppingSensors[2] = sensorManager.getSensor("ISSSTOPR3");
sectionstotest[3] = sectionManager.getSection("NorthEast");
assertNotNull(sectionstotest[3]);
expectedsectionblocklistsize[3] = 1;
expectedsectionentryblock[3] = blockstotest[3];
expectedforwardEntryPointList[3] = 2;
expectedsectionforwardblock[3][0] = blockstotest[1];
expectedsectionforwardblock[3][1] = blockstotest[2];
expectedreverseEntryPointList[3] = 2;
expectedsectionreverseblock[3][0] = blockstotest[4];
expectedsectionreverseblock[3][1] = blockstotest[5];
expectedForwardBlockingSensors[3] = sensorManager.getSensor("ISSDIRF4");
expectedReverseBlockingSensors[3] = sensorManager.getSensor("ISSDIRR4");
expectedForwardStoppingSensors[3] = sensorManager.getSensor("ISSSTOPF4");
expectedReverseStoppingSensors[3] = sensorManager.getSensor("ISSSTOPR4");
sectionstotest[4] = sectionManager.getSection("East");
assertNotNull(sectionstotest[4]);
expectedsectionblocklistsize[4] = 1;
expectedsectionentryblock[4] = blockstotest[4];
expectedforwardEntryPointList[4] = 1;
expectedsectionforwardblock[4][0] = blockstotest[3];
expectedreverseEntryPointList[4] = 1;
expectedsectionreverseblock[4][0] = blockstotest[6];
expectedForwardBlockingSensors[4] = sensorManager.getSensor("ISSDIRF5");
expectedReverseBlockingSensors[4] = sensorManager.getSensor("ISSDIRR5");
expectedForwardStoppingSensors[4] = sensorManager.getSensor("ISSSTOPF5");
expectedReverseStoppingSensors[4] = sensorManager.getSensor("ISSSTOPR5");
sectionstotest[5] = sectionManager.getSection("EastSiding");
assertNotNull(sectionstotest[5]);
expectedsectionblocklistsize[5] = 1;
expectedsectionentryblock[5] = blockstotest[5];
expectedforwardEntryPointList[5] = 1;
expectedsectionforwardblock[5][0] = blockstotest[3];
expectedreverseEntryPointList[5] = 1;
expectedsectionreverseblock[5][0] = blockstotest[6];
expectedForwardBlockingSensors[5] = sensorManager.getSensor("ISSDIRF6");
expectedReverseBlockingSensors[5] = sensorManager.getSensor("ISSDIRR6");
expectedForwardStoppingSensors[5] = sensorManager.getSensor("ISSSTOPF6");
expectedReverseStoppingSensors[5] = sensorManager.getSensor("ISSSTOPR6");
sectionstotest[6] = sectionManager.getSection("SouthEast");
assertNotNull(sectionstotest[6]);
expectedsectionblocklistsize[6] = 1;
expectedsectionentryblock[6] = blockstotest[6];
expectedforwardEntryPointList[6] = 2;
expectedsectionforwardblock[6][0] = blockstotest[4];
expectedsectionforwardblock[6][1] = blockstotest[5];
expectedreverseEntryPointList[6] = 2;
expectedsectionreverseblock[6][0] = blockstotest[7];
expectedsectionreverseblock[6][1] = blockstotest[8];
expectedForwardBlockingSensors[6] = sensorManager.getSensor("ISSDIRF7");
expectedReverseBlockingSensors[6] = sensorManager.getSensor("ISSDIRR7");
expectedForwardStoppingSensors[6] = sensorManager.getSensor("ISSSTOPF7");
expectedReverseStoppingSensors[6] = sensorManager.getSensor("ISSSTOPR7");
sectionstotest[7] = sectionManager.getSection("South");
assertNotNull(sectionstotest[7]);
expectedsectionblocklistsize[7] = 1;
expectedsectionentryblock[7] = blockstotest[7];
expectedforwardEntryPointList[7] = 1;
expectedsectionforwardblock[7][0] = blockstotest[6];
expectedreverseEntryPointList[7] = 1;
expectedsectionreverseblock[7][0] = blockstotest[9];
expectedForwardBlockingSensors[7] = sensorManager.getSensor("ISSDIRF8");
expectedReverseBlockingSensors[7] = sensorManager.getSensor("ISSDIRR8");
expectedForwardStoppingSensors[7] = sensorManager.getSensor("ISSSTOPF8");
expectedReverseStoppingSensors[7] = sensorManager.getSensor("ISSSTOPR8");
sectionstotest[8] = sectionManager.getSection("SouthSiding");
assertNotNull(sectionstotest[8]);
expectedsectionblocklistsize[8] = 1;
expectedsectionentryblock[8] = blockstotest[8];
expectedforwardEntryPointList[8] = 1;
expectedsectionforwardblock[8][0] = blockstotest[6];
expectedreverseEntryPointList[8] = 1;
expectedsectionreverseblock[8][0] = blockstotest[9];
expectedForwardBlockingSensors[8] = sensorManager.getSensor("ISSDIRF9");
expectedReverseBlockingSensors[8] = sensorManager.getSensor("ISSDIRR9");
expectedForwardStoppingSensors[8] = sensorManager.getSensor("ISSSTOPF9");
expectedReverseStoppingSensors[8] = sensorManager.getSensor("ISSSTOPR9");
sectionstotest[9] = sectionManager.getSection("SouthWest");
assertNotNull(sectionstotest[9]);
expectedsectionblocklistsize[9] = 1;
expectedsectionentryblock[9] = blockstotest[9];
expectedforwardEntryPointList[9] = 2;
expectedsectionforwardblock[9][0] = blockstotest[7];
expectedsectionforwardblock[9][1] = blockstotest[8];
expectedreverseEntryPointList[9] = 2;
expectedsectionreverseblock[9][0] = blockstotest[10];
expectedsectionreverseblock[9][1] = blockstotest[11];
expectedForwardBlockingSensors[9] = sensorManager.getSensor("ISSDIRF10");
expectedReverseBlockingSensors[9] = sensorManager.getSensor("ISSDIRR10");
expectedForwardStoppingSensors[9] = sensorManager.getSensor("ISSSTOPF10");
expectedReverseStoppingSensors[9] = sensorManager.getSensor("ISSSTOPR10");
sectionstotest[10] = sectionManager.getSection("West");
assertNotNull(sectionstotest[10]);
expectedsectionblocklistsize[10] = 1;
expectedsectionentryblock[10] = blockstotest[10];
expectedforwardEntryPointList[10] = 1;
expectedsectionforwardblock[10][0] = blockstotest[9];
expectedreverseEntryPointList[10] = 1;
expectedsectionreverseblock[10][0] = blockstotest[0];
expectedForwardBlockingSensors[10] = sensorManager.getSensor("ISSDIRF11");
expectedReverseBlockingSensors[10] = sensorManager.getSensor("ISSDIRR11");
expectedForwardStoppingSensors[10] = sensorManager.getSensor("ISSSTOPF11");
expectedReverseStoppingSensors[10] = sensorManager.getSensor("ISSSTOPR11");
sectionstotest[11] = sectionManager.getSection("WestSiding");
assertNotNull(sectionstotest[11]);
expectedsectionblocklistsize[11] = 1;
expectedsectionentryblock[11] = blockstotest[11];
expectedforwardEntryPointList[11] = 1;
expectedsectionforwardblock[11][0] = blockstotest[9];
expectedreverseEntryPointList[11] = 1;
expectedsectionreverseblock[11][0] = blockstotest[0];
expectedForwardBlockingSensors[11] = sensorManager.getSensor("ISSDIRF12");
expectedReverseBlockingSensors[11] = sensorManager.getSensor("ISSDIRR12");
expectedForwardStoppingSensors[11] = sensorManager.getSensor("ISSSTOPF12");
expectedReverseStoppingSensors[11] = sensorManager.getSensor("ISSSTOPR12");
for (int testsectionfocus = 0; testsectionfocus < 12; testsectionfocus++) { // Set to one greater than above
// check existence of sections
Section testsection = sectionstotest[testsectionfocus];
List<Block> blockList = testsection.getBlockList();
assertEquals(expectedsectionblocklistsize[testsectionfocus], blockList.size(),
"Section size where Focus was: " + testsectionfocus);
Block entryblock = testsection.getEntryBlock();
assertNotNull(entryblock);
assertEquals( expectedsectionentryblock[testsectionfocus].getSystemName(), entryblock.getSystemName(),
"Section entry block where Focus was: " + testsectionfocus);
List<EntryPoint> forwardEntryPointList = testsection.getForwardEntryPointList();
assertEquals( expectedforwardEntryPointList[testsectionfocus], forwardEntryPointList.size(),
"Section forward size where Focus was: " + testsectionfocus);
for (int e = 0; e < forwardEntryPointList.size(); e++) {
EntryPoint get = forwardEntryPointList.get(e);
assertEquals( expectedsectionentryblock[testsectionfocus].getSystemName(),
get.getBlock().getSystemName(),
"Focus was: " + testsectionfocus + " next forward entry point: " + e);
assertEquals( expectedsectionforwardblock[testsectionfocus][e].getUserName(),
get.getFromBlock().getUserName(),
"Focus was: " + testsectionfocus + " next forward from: " + e);
assertEquals( 4, get.getDirection(),
"Focus was: " + testsectionfocus + " next forward dir: " + e);
}
List<EntryPoint> reverseEntryPointList = testsection.getReverseEntryPointList();
assertEquals( expectedreverseEntryPointList[testsectionfocus], reverseEntryPointList.size(),
"Section forward size where Focus was: " + testsectionfocus);
for (int e = 0; e < reverseEntryPointList.size(); e++) {
EntryPoint get = reverseEntryPointList.get(e);
assertEquals( expectedsectionentryblock[testsectionfocus].getSystemName(),
get.getBlock().getSystemName(),
"Focus was: " + testsectionfocus + " next reverse entry point: " + e);
assertEquals( expectedsectionreverseblock[testsectionfocus][e].getUserName(),
get.getFromBlock().getUserName(),
"Focus was: " + testsectionfocus + " next reverse from: " + e);
assertEquals( 8, get.getDirection(),
"Focus was: " + testsectionfocus + " next reverse dir: " + e);
}
Sensor expectedForwardBlockingSensor = expectedForwardBlockingSensors[testsectionfocus];
Sensor actualForwardBlockingSensor = testsection.getForwardBlockingSensor();
assertNotNull( expectedForwardBlockingSensor, "Focus was: " + testsectionfocus + " expectedForwardBlockingSensor");
assertNotNull( actualForwardBlockingSensor, "Focus was: " + testsectionfocus + " actualForwardBlockingSensor");
assertEquals( expectedForwardBlockingSensor,actualForwardBlockingSensor,
"Focus was: " + testsectionfocus + " ForwardBlockingSensor");
Sensor expectedReverseBlockingSensor = expectedReverseBlockingSensors[testsectionfocus];
Sensor actualReverseBlockingSensor = testsection.getReverseBlockingSensor();
assertNotNull( expectedReverseBlockingSensor, "Focus was: " + testsectionfocus + " expectedReverseBlockingSensor");
assertNotNull( actualReverseBlockingSensor, "Focus was: " + testsectionfocus + " actualReverseBlockingSensor");
assertEquals( expectedReverseBlockingSensor, actualReverseBlockingSensor,
"Focus was: " + testsectionfocus + " ReverseBlockingSensor");
Sensor expectedForwardStoppingSensor = expectedForwardStoppingSensors[testsectionfocus];
Sensor actualForwardStoppingSensor = testsection.getForwardStoppingSensor();
assertNotNull( expectedForwardStoppingSensor, "Focus was: " + testsectionfocus + " expectedForwardStoppingSensor");
assertNotNull( actualForwardStoppingSensor, "Focus was: " + testsectionfocus + " actualForwardStoppingSensor");
assertEquals( expectedForwardStoppingSensor, actualForwardStoppingSensor,
"Focus was: " + testsectionfocus + " ForwardStoppingSensor");
Sensor expectedReverseStoppingSensor = expectedReverseStoppingSensors[testsectionfocus];
Sensor actualReverseStoppingSensor = testsection.getReverseStoppingSensor();
assertNotNull( expectedReverseStoppingSensor, "Focus was: " + testsectionfocus + " expectedReverseStoppingSensor");
assertNotNull( actualReverseStoppingSensor, "Focus was: " + testsectionfocus + " actualReverseStoppingSensor");
assertEquals( expectedReverseStoppingSensor, actualReverseStoppingSensor,
"Focus was: " + testsectionfocus + " ReverseStoppingSensor");
}
}
@BeforeEach
public void setUp(@TempDir java.io.File folder) {
JUnitUtil.setUp();
Assertions.assertDoesNotThrow( () ->
JUnitUtil.resetProfileManager(new jmri.profile.NullProfile(folder)));
}
@AfterEach
public void tearDown() {
JUnitUtil.deregisterBlockManagerShutdownTask();
JUnitUtil.tearDown();
}
}