private static void TestCodePattern(string testObject, int version, string pattern) { SWA_Ariadne_Model_MazeDimensionsAccessor dimensionsObj = SWA_Ariadne_Model_MazeDimensionsAccessor.Instance(version); SWA_Ariadne_Model_MazeCodeAccessor codeObj = SWA_Ariadne_Model_MazeCodeAccessor.Instance(version); Regex rx = new Regex(pattern); Random r = new Random(); int minSize = dimensionsObj.MinSize; int maxXSize = dimensionsObj.MaxXSize; int maxYSize = dimensionsObj.MaxYSize; for (int nTests = 0; nTests < 100; nTests++) { int xSize = r.Next(minSize, maxXSize + 1); int ySize = r.Next(minSize, maxYSize + 1); Maze maze = new Maze(xSize, ySize, version); maze.CreateMaze(); string codeValue = codeObj.Code(maze); Match m = rx.Match(codeValue); Assert.IsTrue(m.Success, testObject + " does not match expected pattern: " + pattern); } }
private static void TestDecodeIdentity(string testObject, int version) { SWA_Ariadne_Model_MazeDimensionsAccessor dimensionsObj = SWA_Ariadne_Model_MazeDimensionsAccessor.Instance(version); SWA_Ariadne_Model_MazeCodeAccessor codeObj = SWA_Ariadne_Model_MazeCodeAccessor.Instance(version); Random r = new Random(); for (int nTests = 0; nTests < 100; nTests++) { int xSize = r.Next(dimensionsObj.MinSize, dimensionsObj.MaxXSize + 1); int ySize = r.Next(dimensionsObj.MinSize, dimensionsObj.MaxYSize + 1); Maze maze = new Maze(xSize, ySize, version); maze.CreateMaze(); SWA_Ariadne_Model_MazeAccessor accessor = new SWA_Ariadne_Model_MazeAccessor(maze); int seed = accessor.seed; WallPosition direction = accessor.direction; int xStart = accessor.xStart; int yStart = accessor.yStart; int xEnd = accessor.xEnd; int yEnd = accessor.yEnd; string code = maze.Code; int seedActual, xSizeActual, ySizeActual; codeObj.Decode(code , out seedActual , out xSizeActual, out ySizeActual ); bool ok = true; ok &= (seed == seedActual); ok &= (xSize == xSizeActual); ok &= (ySize == ySizeActual); if (!ok) { ok = false; } Assert.AreEqual(seed, seedActual, testObject + ": seed was not set correctly."); Assert.AreEqual(xSize, xSizeActual, testObject + ": xSize was not set correctly."); Assert.AreEqual(ySize, ySizeActual, testObject + ": ySize was not set correctly."); } }
public void MD_MaxSizeTest_01() { string testObject = "MazeDimensions.MaxXSize and MazeDimensions.MaxYSize (version 0)"; int version = 0; SWA_Ariadne_Model_MazeDimensionsAccessor dimensionsObj = SWA_Ariadne_Model_MazeDimensionsAccessor.Instance(version); SWA_Ariadne_Model_MazeCodeAccessor codeObj = SWA_Ariadne_Model_MazeCodeAccessor.Instance(version); // simulate the multiplications executed in Maze.Code: double f1 = codeObj.SeedLimit; double f2 = dimensionsObj.MaxXSize - dimensionsObj.MinSize + 1; double f3 = dimensionsObj.MaxYSize - dimensionsObj.MinSize + 1; double f4 = dimensionsObj.MaxBorderDistance + 1; double f5 = dimensionsObj.MaxBorderDistance + 1; double f6 = dimensionsObj.MaxXSize + 1; double f7 = dimensionsObj.MaxXSize + 1; double f8 = (int)WallPosition.WP_NUM; double maxCodeValue = (f1 * f2 * f3 * f4 * f5 * f6 * f7 * f8) - 1; TestMaxCodeValue(testObject, maxCodeValue, codeObj.CodeLength, codeObj.CodeDigitRange); }