public void DEC_AddUncertainSquareTest_01() { Maze maze = new Maze("BPQG.WLVB.UWPM"); maze.CreateMaze(); // 14 x 10 - 2,0 .. 11,7 DeadEndChecker target = new DeadEndChecker(maze); SWA_Ariadne_Model_DeadEndCheckerAccessor accessor = new SWA_Ariadne_Model_DeadEndCheckerAccessor(target); SWA_Ariadne_Model_DeadEndChecker_MazeSquareExtensionAccessor sqe; Random r = new Random(0); for (int i = 0; i < 400; i++) { int x = r.Next(maze.XSize); int y = r.Next(maze.YSize);; sqe = accessor.mazeExtension[x, y]; try { accessor.AddUncertainSquare(sqe, -1); } catch (Exception) { Assert.Fail("AddUncertainSquare() threw an exception"); } } }
private static List <MazeSquare> Move(DeadEndChecker target, ref MazeSquare sq, WallPosition direction, int expectedDeadSquaresCount) { sq = sq.NeighborSquare(direction); List <MazeSquare> deadSquares = target.Visit(sq); Assert.AreEqual(expectedDeadSquaresCount, deadSquares.Count, "Number of dead squares doesn't match."); return(deadSquares); }
public void DEC_VisitTest_06_14() { Maze maze = new Maze(10, 10); SWA_Ariadne_Model_MazeAccessor mazeAccessor = new SWA_Ariadne_Model_MazeAccessor(maze); maze.CreateMaze(); // 10 x 10 mazeAccessor.xStart = 4; mazeAccessor.yStart = 9; mazeAccessor.xEnd = mazeAccessor.yEnd = 0; DeadEndChecker target = new DeadEndChecker(maze); List <MazeSquare> deadSquares; MazeSquare sq = maze.StartSquare; // 4,9 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 5,9 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 6,9 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 7,9 deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 7,8 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 8,8 deadSquares = Move(target, ref sq, WallPosition.WP_E, 2); // 9,8 ! deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 9,7 deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 9,6 deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 9,5 deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 9,4 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 8,4 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 7,4 ! deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 7,5 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 7,6 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 6,6 ! deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 6,5 deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 6,4 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 5,4 ! deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 5,3 deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 5,2 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 4,2 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 3,2 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 3,3 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 3,4 deadSquares = Move(target, ref sq, WallPosition.WP_E, 1); // 4,4 ! deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 4,5 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 4,6 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 3,6 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 3,7 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 2,7 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 2,8 Assert.AreEqual(2, sq.XPos, "current square at wrong X position"); Assert.AreEqual(8, sq.YPos, "current square at wrong Y position"); deadSquares = Move(target, ref sq, WallPosition.WP_S, 14); // 2,9 ! }
public void DEC_VisitTest_01_2() { Maze maze = new Maze("BPQG.WLVB.UWPM"); maze.CreateMaze(); // 14 x 10 - 2,0 .. 11,7 DeadEndChecker target = new DeadEndChecker(maze); List <MazeSquare> deadSquares; MazeSquare sq = maze.StartSquare; // 2,0 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 2,1 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 1,1 deadSquares = Move(target, ref sq, WallPosition.WP_W, 2); // 0,1 }
public void DEC_VisitTest_10_64() { Maze maze = new Maze("BPQG.WLVB.UWPM"); maze.CreateMaze(); // 14 x 10 - 2,0 .. 11,7 DeadEndChecker target = new DeadEndChecker(maze); List <MazeSquare> deadSquares; MazeSquare sq = maze.StartSquare; // 2,0 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 3,0 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 4,0 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 4,1 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 4,2 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 5,2 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 6,2 deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 6,1 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 5,1 deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 5,0 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 6,0 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 7,0 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 7,1 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 8,1 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 8,2 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 8,3 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 8,4 deadSquares = Move(target, ref sq, WallPosition.WP_W, 0); // 7,4 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 7,5 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 7,6 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 7,7 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 7,8 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 8,8 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 9,8 deadSquares = Move(target, ref sq, WallPosition.WP_N, 0); // 9,7 deadSquares = Move(target, ref sq, WallPosition.WP_E, 0); // 10,7 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 10,8 deadSquares = Move(target, ref sq, WallPosition.WP_S, 64); // 10,9 }
public void DEC_VisitTest_03_20() { Maze maze = new Maze("BPQG.WLVB.UWPM"); maze.CreateMaze(); // 14 x 10 - 2,0 .. 11,7 DeadEndChecker target = new DeadEndChecker(maze); List <MazeSquare> deadSquares; MazeSquare sq = maze.StartSquare; // 2,0 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 2,1 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 2,2 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 2,3 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 2,4 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 2,5 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 2,6 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 2,7 deadSquares = Move(target, ref sq, WallPosition.WP_S, 0); // 2,8 deadSquares = Move(target, ref sq, WallPosition.WP_S, 20); // 2,9 }
public void MakeEfficient() { // An efficient MazeSolver has a DeadEndChecker. deadEndChecker = new DeadEndChecker(maze); }