Exemplo n.º 1
0
 public static void ReportDeviationsFromExpectedResults(TankMovementResolver resolver, MoveStatus[] expectedMoveStatuses)
 {
     for (int i = 0; i < 4; i++)
     {
         MoveRequest  request    = resolver.Requests[i];
         ConsoleColor oldFGColor = System.Console.ForegroundColor;
         try
         {
             if (request.Status == expectedMoveStatuses[i])
             {
                 System.Console.ForegroundColor = ConsoleColor.Green;
                 System.Console.WriteLine("    Tank {0} move = {1} (as expected).", i, request.Status);
             }
             else
             {
                 System.Console.ForegroundColor = ConsoleColor.Red;
                 System.Console.WriteLine("    Tank {0} move. Expected: {1}. Actual: {2}.", i, expectedMoveStatuses[i], request.Status);
             }
         }
         finally
         {
             System.Console.ForegroundColor = oldFGColor;
         }
     }
 }
Exemplo n.º 2
0
        public static TankMovementResolver Resolve(ref bool[,] isAWall, Unit[] tanks,
                                                   Bullet[] bullets = null, GameRuleConfiguration ruleConfig = null)
        {
            if (ruleConfig == null)
            {
                ruleConfig = new GameRuleConfiguration();
            }
            TankMovementResolver resolver = new TankMovementResolver(isAWall, tanks, bullets, ruleConfig);

            resolver.ResolveMoves();
            return(resolver);
        }
Exemplo n.º 3
0
        public static void DisplayBoardResolveAndCheckExpectations(string imageFileName, ref bool[,] isAWall, MoveStatus[] expectedMoveStatuses,
                                                                   Unit[] tanks, Bullet[] bullets = null, Base[] bases = null, GameRuleConfiguration ruleConfig = null, string imageFolderPath = null)
        {
            ImageGenerator imgGen = new ImageGenerator
            {
                Magnification         = 5,
                IsBackgroundChequered = false
            };

            try
            {
                string indentation = new string(' ', isAWall.GetLength(1) / 2 - 2);
                System.Console.WriteLine("{0}BOARD BEFORE:", indentation);
                System.Console.WriteLine();

                DisplayBoard(ref isAWall, tanks, bullets);
                if (!String.IsNullOrEmpty(imageFolderPath))
                {
                    string imagePath  = Path.Combine(imageFolderPath, String.Format("{0}_BEFORE.bmp", imageFileName));
                    Bitmap boardImage = imgGen.GenerateBoardImage(ref isAWall, ref tanks, ref bullets, ref bases);
                    boardImage.Save(imagePath, ImageFormat.Bmp);
                }

                if (PromptToRunTest())
                {
                    TankMovementResolver resolver = Resolve(ref isAWall, tanks, bullets, ruleConfig);
                    ReportDeviationsFromExpectedResults(resolver, expectedMoveStatuses);
                    ReportResolutionDuration(resolver);

                    System.Console.WriteLine();
                    System.Console.WriteLine("{0}BOARD AFTER:", indentation);
                    System.Console.WriteLine();

                    resolver.ApplyMoves();
                    DisplayBoard(ref isAWall, tanks, bullets, foregroundColor: ConsoleColor.Yellow);

                    if (!String.IsNullOrEmpty(imageFolderPath))
                    {
                        string imagePath  = Path.Combine(imageFolderPath, String.Format("{0}_AFTER.bmp", imageFileName));
                        Bitmap boardImage = imgGen.GenerateBoardImage(ref isAWall, ref tanks, ref bullets, ref bases);
                        boardImage.Save(imagePath, ImageFormat.Bmp);
                    }

                    PromptToRunNextTest();
                }
            }
            catch (Exception exc)
            {
                ConsoleColor oldFGColor = System.Console.ForegroundColor;
                System.Console.ForegroundColor = ConsoleColor.Red;
                try
                {
                    // TODO: We should write to the error stream instead.
                    System.Console.WriteLine("An error occurred while running the tests: ");
                    System.Console.WriteLine(exc);
                }
                finally
                {
                    System.Console.ForegroundColor = oldFGColor;
                }
            }
        }
Exemplo n.º 4
0
 public static void ReportResolutionDuration(TankMovementResolver resolver)
 {
     System.Console.WriteLine();
     System.Console.WriteLine("Duration of resolver algorithm: {0}", resolver.ResolutionDuration);
 }