public void Unique1010MazeTest()
            {
                var mazeSolver = new MazeSolvers.BacktrackingAlgorithm();

                var mazes    = create1010();
                var solnMaze = new GenericStruct.Maze();

                solnMaze = mazeSolver.FindShortestPath(mazes);
                Assert.AreEqual(mazes.PathLength, solnMaze.PathLength);
            }
            public void Unsolvable22Maze()
            {
                var mazeSolver = new MazeSolvers.BacktrackingAlgorithm();

                //test for the unsolvable matrix
                var maze     = create22Unsolvable();
                var solnMaze = mazeSolver.FindShortestPath(maze);

                Assert.AreEqual(null, solnMaze);
            }
            public void Multiple44SolutionTest()
            {
                var mazeSolver = new MazeSolvers.BacktrackingAlgorithm();

                var mazes    = create44With2Soln();
                var solnMaze = new GenericStruct.Maze();

                solnMaze = mazeSolver.FindShortestPath(mazes[0]);
                var answer = mazes[1];

                Assert.AreEqual(answer.PathLength, solnMaze.PathLength);
                Assert.IsTrue(RJM.Personal.Method.AreEqualIntArrays(solnMaze.Layout, answer.Layout));
            }
            public void IsValidMoveTest()
            {
                MazeSolvers.BacktrackingAlgorithm ba = new MazeSolvers.BacktrackingAlgorithm();
                PrivateObject pri = new PrivateObject(ba);

                object[] args     = new object[] { 2, 2, 1, 1 };
                bool     response = (bool)pri.Invoke("isValidMove", args);

                Assert.IsTrue(response);

                args     = new object[] { 2, 2, 3, 1, };
                response = (bool)pri.Invoke("isValidMove", args);
                Assert.IsFalse(response);
            }
            public void Multiple44SolutionsTest()
            {
                var mazeSolver = new MazeSolvers.BacktrackingAlgorithm();

                var mazes    = create44With2Soln();
                var solnMaze = mazeSolver.FindAllSolutions(mazes[0]);
                var answer1  = mazes[1];
                var answer2  = mazes[2];

                Assert.AreEqual(answer1.PathLength, solnMaze[0].PathLength);
                Assert.IsTrue(RJM.Personal.Method.AreEqualIntArrays(answer1.Layout, solnMaze[0].Layout));

                Assert.AreEqual(answer2.PathLength, solnMaze[1].PathLength);
                Assert.IsTrue(RJM.Personal.Method.AreEqualIntArrays(answer2.Layout, solnMaze[1].Layout));
            }
            public void Unique33MazeTest()
            {
                var mazeSolver = new MazeSolvers.BacktrackingAlgorithm();

                //test for the 3x3 uniquely solvable matrix
                var mazes    = create33Solvable();
                var solnMaze = new GenericStruct.Maze();

                solnMaze = mazeSolver.FindShortestPath(mazes[0]);
                var answer = mazes[1];

                //answer.Layout = new int[,] { { 1, 1, 1 }, { 0, 0, 1 }, { 0, 0, 1 } };
                //answer.PathLength = 4;
                Assert.AreEqual(answer.PathLength, solnMaze.PathLength);
                Assert.IsTrue(RJM.Personal.Method.AreEqualIntArrays(solnMaze.Layout, answer.Layout));
            }