package jmri.configurexml; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; import jmri.*; import jmri.implementation.AbstractSensor; import jmri.util.JUnitUtil; import org.junit.jupiter.api.*; /** * Tests for BlockManagerXml. *
* Just tests Elements, not actual files. Based upon a stub by Bob Jacobsen
* Copyright 2008
*
* @author Bob Coleman Copyright 2012
*/
public class BlockManagerXmlTest {
@Test
public void testLoadCurrent() throws JmriException {
JUnitUtil.resetInstanceManager();
JUnitUtil.initConfigureManager();
JUnitUtil.initInternalTurnoutManager();
JUnitUtil.initInternalLightManager();
JUnitUtil.initInternalSensorManager();
JUnitUtil.initMemoryManager();
JUnitUtil.initLayoutBlockManager();
// load file
assertTrue(InstanceManager.getDefault(ConfigureManager.class)
.load(new java.io.File("java/test/jmri/configurexml/load/BlockManagerXmlTest.xml")));
// check existence of blocks
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB1"));
assertNull(InstanceManager.getDefault(BlockManager.class).getBlock("no block"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB2"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB3"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB4"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB5"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB6"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB7"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB8"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB9"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB10"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB11"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("IB12"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blocknorthwest"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blocknorth"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blocknorthsiding"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blocknortheast"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blockeast"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blockeastsiding"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blocksoutheast"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blocksouth"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blocksouthsiding"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blocksouthwest"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blockwest"));
assertNotNull(InstanceManager.getDefault(BlockManager.class).getBlock("blockwestsiding"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB1"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB2"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB3"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB4"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB5"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB6"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB7"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB8"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB9"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB10"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB11"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("ILB12"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blocknorthwest"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blocknorth"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blocknorthsiding"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blocknortheast"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blockeast"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blockeastsiding"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blocksoutheast"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blocksouth"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blocksouthsiding"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blocksouthwest"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blockwest"));
// assertNotNull(InstanceManager.getDefault(LayoutBlockManager.class).getLayoutBlock("blockwestsiding"));
// check existence of turmouts
assertNotNull(InstanceManager.turnoutManagerInstance().getTurnout("IT1"));
assertNull(InstanceManager.turnoutManagerInstance().getTurnout("no turnout"));
assertNotNull(InstanceManager.turnoutManagerInstance().getTurnout("IT2"));
assertNotNull(InstanceManager.turnoutManagerInstance().getTurnout("IT3"));
assertNotNull(InstanceManager.turnoutManagerInstance().getTurnout("IT4"));
assertNotNull(InstanceManager.turnoutManagerInstance().getTurnout("IT5"));
assertNotNull(InstanceManager.turnoutManagerInstance().getTurnout("IT6"));
assertNotNull(InstanceManager.turnoutManagerInstance().getTurnout("IT7"));
assertNotNull(InstanceManager.turnoutManagerInstance().getTurnout("IT8"));
// check existence of memories
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0001"));
assertNull(InstanceManager.memoryManagerInstance().getMemory("no memory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0002"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0003"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0004"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0005"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0006"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0007"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0008"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0009"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0010"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0011"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("IM:AUTO:0012"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blocknorthwestmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blocknorthmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blocknorthsidingmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blocknortheastmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blockeastmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blockeastsidingmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blocksoutheastmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blocksouthmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blocksouthsidingmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blocksouthwestmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blockwestmemory"));
assertNotNull(InstanceManager.memoryManagerInstance().getMemory("blockwestsidingmemory"));
// check existence of sensors
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO1"));
assertNull(InstanceManager.sensorManagerInstance().getSensor("no sensor"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO2"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO3"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO4"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO5"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO6"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO7"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO8"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO9"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO10"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO11"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("ISBO12"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blocknorthwestoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blocknorthoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blocknorthsidingoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blocknortheastoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blockeastoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blockeastsidingoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blocksoutheastoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blocksouthoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blocksouthsidingoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blocksouthwestoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blockwestoccupied"));
assertNotNull(InstanceManager.sensorManagerInstance().getSensor("blockwestsidingoccupied"));
// check existence of paths between blocks
Block[] blockstotest;
Sensor[] occupiedsensor;
int[] expectedpreviouspaths;
int[] expectednextpaths;
blockstotest = new Block[12]; //Make sure this is bigger than the list below
occupiedsensor = new Sensor[12]; //Make sure this is bigger than the list below
expectedpreviouspaths = new int[12]; //Make sure this is bigger than the list below
expectednextpaths = new int[12]; //Make sure this is bigger than the list below
Boolean[] passprevioustest;
Boolean[] passnexttest;
passprevioustest = new Boolean[4]; //Make sure this is bigger than needed
passnexttest = new Boolean[4]; //Make sure this is bigger than needed
Block[][] previousblock;
previousblock = new Block[12][4]; //Make sure this is bigger than the list below
Block[][] nextblock;
nextblock = new Block[12][4]; //Make sure this is bigger than the list below
// This matches up with the test file, ...
blockstotest[0] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blocknorthwest");
assertNotNull(blockstotest[0]);
occupiedsensor[0] = InstanceManager.sensorManagerInstance().getSensor("blocknorthwestoccupied");
assertNotNull(occupiedsensor[0]);
blockstotest[1] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blocknorth");
assertNotNull(blockstotest[1]);
occupiedsensor[1] = InstanceManager.sensorManagerInstance().getSensor("blocknorthoccupied");
assertNotNull(occupiedsensor[1]);
blockstotest[2] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blocknorthsiding");
assertNotNull(blockstotest[2]);
occupiedsensor[2] = InstanceManager.sensorManagerInstance().getSensor("blocknorthsidingoccupied");
assertNotNull(occupiedsensor[2]);
blockstotest[3] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blocknortheast");
assertNotNull(blockstotest[3]);
occupiedsensor[3] = InstanceManager.sensorManagerInstance().getSensor("blocknortheastoccupied");
assertNotNull(occupiedsensor[3]);
blockstotest[4] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blockeast");
assertNotNull(blockstotest[4]);
occupiedsensor[4] = InstanceManager.sensorManagerInstance().getSensor("blockeastoccupied");
assertNotNull(occupiedsensor[4]);
blockstotest[5] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blockeastsiding");
assertNotNull(blockstotest[5]);
occupiedsensor[5] = InstanceManager.sensorManagerInstance().getSensor("blockeastsidingoccupied");
assertNotNull(occupiedsensor[5]);
blockstotest[6] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blocksoutheast");
assertNotNull(blockstotest[6]);
occupiedsensor[6] = InstanceManager.sensorManagerInstance().getSensor("blocksoutheastoccupied");
assertNotNull(occupiedsensor[6]);
blockstotest[7] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blocksouth");
assertNotNull(blockstotest[7]);
occupiedsensor[7] = InstanceManager.sensorManagerInstance().getSensor("blocksouthoccupied");
assertNotNull(occupiedsensor[7]);
blockstotest[8] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blocksouthsiding");
assertNotNull(blockstotest[8]);
occupiedsensor[8] = InstanceManager.sensorManagerInstance().getSensor("blocksouthsidingoccupied");
assertNotNull(occupiedsensor[8]);
blockstotest[9] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blocksouthwest");
assertNotNull(blockstotest[9]);
occupiedsensor[9] = InstanceManager.sensorManagerInstance().getSensor("blocksouthwestoccupied");
assertNotNull(occupiedsensor[9]);
blockstotest[10] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blockwest");
assertNotNull(blockstotest[10]);
occupiedsensor[10] = InstanceManager.sensorManagerInstance().getSensor("blockwestoccupied");
assertNotNull(occupiedsensor[10]);
blockstotest[11] = InstanceManager.getDefault(jmri.BlockManager.class).getBlock("blockwestsiding");
assertNotNull(blockstotest[11]);
occupiedsensor[11] = InstanceManager.sensorManagerInstance().getSensor("blockwestsidingoccupied");
assertNotNull(occupiedsensor[11]);
// The references are circular so the definitons are split up, ...
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 = InstanceManager.memoryManagerInstance().getMemory("blocknorthmemory");
assertNotNull(expectedtestmemory);
expectedtestmemory.setValue("Memory test: " + testblockfocus);
assertNotNull(expectedtestmemory);
// TODO: BOB C: Memory Test
// Memory actualtestmemory = (Memory) focusBlock.getValue();
// Assert.assertNotNull(actualtestmemory);
// Assert.assertEquals("Memory where Focus was: " + testblockfocus, expectedtestmemory, actualtestmemory);
Sensor fbSensor = focusBlock.getSensor();
assertNotNull(fbSensor);
assertEquals( occupiedsensor[testblockfocus].getSystemName(),
fbSensor.getSystemName(), "Sensor where Focus was: " + testblockfocus);
List