public void TestKnownMazes() { List <string> unprocessedFiles = new List <string>(); foreach (string filepath in Directory.EnumerateFiles(FileSystemConstants.KNOWN_SOLUTION_MAZES_FOLDER)) { string filename = Path.GetFileName(filepath); string nameWithoutExtension = filename.Substring(0, filename.IndexOf('.')); int expectedResult; if (int.TryParse(nameWithoutExtension, out expectedResult)) { MazeValue[,] maze = MazeParser.Parse(filepath); solver.solve(ref maze); int result = CheckMaze(maze); Assert.AreEqual(expectedResult, result); } else { unprocessedFiles.Add(filename); } } if (unprocessedFiles.Count > 0) { Console.WriteLine("The following files were not processed"); foreach (string filename in unprocessedFiles) { Console.WriteLine("\t" + filename); } Assert.Fail(); } }
public void TestGenerateInvalidImagePath() { Random rngesus = new Random(); string outputFile = Path.Combine(FileSystemConstants.OUTPUT_FOLDER, "tmp_invalid_path.bmp"); File.Create(outputFile).Close(); int width = 10; MazeValue[,] maze = new MazeValue[width, width]; for (int i = 0; i < width; i++) { for (int j = 0; j < width; j++) { maze[i, j] = MazeValue.Wall; } } // Make sure the GenerateFile function returns false if file already exists Assert.IsFalse(MazeParser.GenerateFile(maze, outputFile)); // Make sure the file has not changed (is empty) Assert.IsTrue(File.ReadAllBytes(outputFile).Length == 0); try { Bitmap image = new Bitmap(outputFile); Assert.Fail(); } catch (ArgumentException) { // Pass } }
public void TestGenerateEmptyImage() { Random rngesus = new Random(); MazeValue[,] maze = new MazeValue[0, 0]; string outputFile = Path.Combine(FileSystemConstants.OUTPUT_FOLDER, "tmp_empty.bmp"); Assert.IsFalse(MazeParser.GenerateFile(maze, outputFile)); }
public void TestUnsolveableMazes() { foreach (string filename in Directory.EnumerateFiles(FileSystemConstants.UNSOLVEABLE_MAZES_FOLDER)) { MazeValue[,] maze = MazeParser.Parse(filename); MazeValue[,] values = DeepCopy(maze); Assert.IsFalse(solver.solve(ref maze)); Assert.IsTrue(CheckEqual(values, maze)); } }
public void TestRandomlyGeneratedLargeMaze() { for (int i = 0; i < NUM_RANDOM_TESTS; i++) { ImageSize size = ImageSize.Large; generator = new MazeGenerator.MazeGenerator(size); MazeValue[,] maze = MazeParser.Parse(generator.Image); solver.solve(ref maze); } }
public void TestLargeMazes() { foreach (string filename in Directory.EnumerateFiles(FileSystemConstants.LARGE_MAZES_FOLDER)) { MazeValue[,] maze = MazeParser.Parse(filename); MazeValue[,] values = DeepCopy(maze); Assert.IsTrue(solver.solve(ref maze)); CheckMaze(maze); } }
private void CreateAndTestRandomlyGeneratedImage(string fileExtension, bool useFuzzy = false) { int NUM_TESTS = 10; Random rngesus = new Random(); Array mazeValues = Enum.GetValues(typeof(MazeValue)); for (int test_num = 0; test_num < NUM_TESTS; test_num++) { int width = rngesus.Next(75, 100); int height = rngesus.Next(75, 100); string outputFile = Path.Combine(FileSystemConstants.OUTPUT_FOLDER, "tmp_" + test_num + fileExtension); // Create maze MazeValue[,] maze = new MazeValue[width, height]; for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { maze[i, j] = (MazeValue)rngesus.Next(0, mazeValues.Length); } } Assert.IsTrue(MazeParser.GenerateFile(maze, outputFile)); // Use the fuzzy parser on jpeg images MazeValue[,] mazeFromFile; if (!useFuzzy) { mazeFromFile = MazeParser.Parse(outputFile, false); Assert.IsTrue(CheckMazeEquality(maze, mazeFromFile)); } else { // Note: Even the fuzzy parser can't deal with the jpeg resulting image due to lossy compression //mazeFromFile = MazeParser.FuzzyParse(output_file, false); } } }