Exemple #1
0
        public void TestExecuteCommandGuessedMessageWithoutCheats()
        {
            BullsAndCowsGame_Accessor game = SetSecretNumberDigits(1, 2, 3, 4);
            StringBuilder             sb   = new StringBuilder();
            StringWriter writer            = new StringWriter(sb);

            Console.SetOut(writer);
            StringReader reader = new StringReader("Anton");

            Console.SetIn(reader);
            Scoreboard scoreboard = new Scoreboard();

            game.ExecuteCommand(scoreboard, "1234");
            writer.Close();
            reader.Close();

            string expected = "Congratulations! You guessed the secret number in 1 attempt." +
                              Environment.NewLine +
                              "Please enter your name for the top scoreboard: " +
                              "Scoreboard:" + Environment.NewLine +
                              "1. Anton --> 1 guess" + Environment.NewLine;
            string actual = sb.ToString();

            Assert.AreEqual <string>(expected, actual,
                                     EXECUTING_COMMAND_ERROR_MSG);
        }
Exemple #2
0
        public void TestFindBullsAndCowsCountForInputWithSpacesBetweenDigits()
        {
            BullsAndCowsGame_Accessor game =
                SetSecretNumberDigits(0, 0, 0, 0);
            string userNumber = "1 2 3 5";

            Result actual = game.FindBullsAndCowsCount(userNumber);
        }
Exemple #3
0
        public void TestFindBullsAndCowsCountFor3DigitsAnd1Letter()
        {
            BullsAndCowsGame_Accessor game =
                SetSecretNumberDigits(0, 0, 0, 0);
            string userNumber = "123a";

            Result actual = game.FindBullsAndCowsCount(userNumber);
        }
Exemple #4
0
        public void TestGetPluralOrSingularOfWordPlural()
        {
            BullsAndCowsGame_Accessor game = new BullsAndCowsGame_Accessor();

            string expected = "cheats";
            string actual   = game.GetPluralOrSingularOfWord(2, "cheat");

            Assert.AreEqual <string>(expected, actual,
                                     "There was a problem in getting a plural of the word!");
        }
Exemple #5
0
        public void TestFindBullsAndCowsCountFor1BullByEqualDigits()
        {
            BullsAndCowsGame_Accessor game =
                SetSecretNumberDigits(0, 0, 0, 0);
            string userNumber = "0143";

            Result expected = new Result(1, 0);
            Result actual   = game.FindBullsAndCowsCount(userNumber);

            Assert.AreEqual <Result>(expected, actual,
                                     INCORRECT_COUNT_OF_BULLS_AND_COWS_MSG);
        }
Exemple #6
0
        private BullsAndCowsGame_Accessor SetSecretNumberDigits(
            int first, int second, int third, int fourth)
        {
            BullsAndCowsGame_Accessor game =
                new BullsAndCowsGame_Accessor();

            game.NumberForGuessDigits[0] = first;
            game.NumberForGuessDigits[1] = second;
            game.NumberForGuessDigits[2] = third;
            game.NumberForGuessDigits[3] = fourth;

            return(game);
        }
Exemple #7
0
        public void TestGetStartValuesGuessesCount()
        {
            BullsAndCowsGame_Accessor game = new BullsAndCowsGame_Accessor();

            game.FindBullsAndCowsCount("9999");
            game.GetStartValues();

            int expected = 0;
            int actual   = game.GuessesCount;

            Assert.AreEqual <int>(expected, actual,
                                  "GetStartValues didn't intialize the guess count properly!");
        }
Exemple #8
0
        public void TestGetCheatCountAfter3CallingsOfHelp()
        {
            BullsAndCowsGame_Accessor game =
                SetSecretNumberDigits(1, 2, 3, 4);

            game.Cheats = 3;

            int    expectedCheatsCount = 4;
            string actualCheatNumber   = game.GetCheat();
            int    actualCheatsCount   = game.Cheats;

            Assert.AreEqual <int>(actualCheatsCount, expectedCheatsCount,
                                  INCORRECT_CHEATS_COUNT_MSG);
        }
Exemple #9
0
        public void TestGetStartValuesCheatNumber()
        {
            BullsAndCowsGame_Accessor game = new BullsAndCowsGame_Accessor();

            game.GenerateRandomDigits();
            game.GetCheat();
            game.GetStartValues();

            char[] expected = { 'X', 'X', 'X', 'X' };
            char[] actual   = game.CheatNumber;

            CollectionAssert.AreEqual(expected, actual,
                                      "GetStartValues didn't intialize the help cheat array properly!");
        }
Exemple #10
0
        public void TestExecuteCommandRestartCorrect()
        {
            BullsAndCowsGame_Accessor game = SetSecretNumberDigits(1, 2, 3, 4);

            game.FindBullsAndCowsCount("0000");
            game.ExecuteCommand(null, "0000");
            game.ExecuteCommand(null, "restart");

            int expected = 0;
            int actual   = game.GuessesCount;

            Assert.AreEqual <int>(expected, actual,
                                  EXECUTING_COMMAND_ERROR_MSG);
        }
Exemple #11
0
        public void TestGetStartValuesCount()
        {
            BullsAndCowsGame_Accessor game =
                new BullsAndCowsGame_Accessor();

            game.GenerateRandomDigits();
            game.GetCheat();
            game.GetStartValues();

            int expected = 0;
            int actual   = game.Cheats;

            Assert.AreEqual <int>(expected, actual,
                                  "GetStartValues didn't make used cheats number 0.");
        }
Exemple #12
0
        public void TestReadUserCommandGuessNumber()
        {
            BullsAndCowsGame_Accessor game = new BullsAndCowsGame_Accessor();
            StringReader reader            = new StringReader(" 2356 ");

            Console.SetIn(reader);

            string expected = "2356";
            string actual   = BullsAndCowsGame_Accessor.ReadUserCommand();

            reader.Close();

            Assert.AreEqual <string>(expected, actual,
                                     READING_COMMMAND_ERROR_MSG);
        }
Exemple #13
0
        public void TestExecuteCommandWrongNumber()
        {
            BullsAndCowsGame_Accessor game = SetSecretNumberDigits(1, 2, 3, 4);
            StringBuilder             sb   = new StringBuilder();
            StringWriter writer            = new StringWriter(sb);

            Console.SetOut(writer);
            game.ExecuteCommand(null, "4321");
            writer.Close();

            string expected = "Wrong number! Bulls: 0, Cows: 4" + Environment.NewLine;
            string actual   = sb.ToString();

            Assert.AreEqual <string>(expected, actual,
                                     EXECUTING_COMMAND_ERROR_MSG);
        }
Exemple #14
0
        public void TestGetCheat10CallingsOfHelp()
        {
            BullsAndCowsGame_Accessor game =
                SetSecretNumberDigits(1, 2, 3, 4);

            string expected = "1234";
            string actual   = String.Empty;

            for (int i = 0; i < 10; i++)
            {
                actual = game.GetCheat();
            }

            Assert.AreEqual <string>(expected, actual,
                                     INCORRECT_CHEAT_NUMBER_MSG);
        }
Exemple #15
0
        public void TestGetCheat10CallingsOfHelpCheatsCountShouldBe4()
        {
            BullsAndCowsGame_Accessor game =
                SetSecretNumberDigits(1, 2, 3, 4);

            int    expectedCheatsCount = 4;
            string actualCheatNumber   = String.Empty;

            for (int i = 0; i < 10; i++)
            {
                actualCheatNumber = game.GetCheat();
            }
            int actualCheatsCount = game.Cheats;

            Assert.AreEqual <int>(actualCheatsCount, expectedCheatsCount,
                                  INCORRECT_CHEATS_COUNT_MSG);
        }
Exemple #16
0
        public void TestGetCheatIsOnlyOneDigitRevealedAtTime()
        {
            BullsAndCowsGame_Accessor game =
                SetSecretNumberDigits(1, 2, 3, 4);

            string actualCheatNumber = String.Empty;

            for (int i = 3; i >= 0; i--)
            {
                int expectedUnrevealedCount = i;
                actualCheatNumber = game.GetCheat();
                int currentUnrevealedCount =
                    CountUnrevealedDigits(game.CheatNumber);

                Assert.AreEqual <int>(currentUnrevealedCount, expectedUnrevealedCount,
                                      INCORRECT_CHEATS_COUNT_MSG);
            }
        }
Exemple #17
0
        public void TestWelcomeMessage()
        {
            BullsAndCowsGame_Accessor game = new BullsAndCowsGame_Accessor();
            StringBuilder             sb   = new StringBuilder();
            StringWriter writer            = new StringWriter(sb);

            Console.SetOut(writer);
            game.DisplayWelcomeMessage();
            writer.Close();

            string expected = Environment.NewLine + "Welcome to “Bulls and Cows” game." +
                              "Please try to guess my secret 4-digit number." + Environment.NewLine +
                              "Use 'top' to view the top scoreboard, 'restart' to start a new game and 'help'" +
                              " to cheat and 'exit' to quit the game." + Environment.NewLine;
            string actual = sb.ToString();

            Assert.AreEqual <string>(expected, actual,
                                     "The welcme message was incorrect!");
        }
Exemple #18
0
        public void TestExecuteCommandHelp()
        {
            BullsAndCowsGame_Accessor game = SetSecretNumberDigits(1, 2, 3, 4);
            StringBuilder             sb   = new StringBuilder();
            StringWriter writer            = new StringWriter(sb);

            Console.SetOut(writer);
            game.CheatNumber = new char[4] {
                'X', '2', '3', '4'
            };
            game.ExecuteCommand(null, "help");
            writer.Close();

            string expected = "The number looks like 1234." + Environment.NewLine;
            string actual   = sb.ToString();

            Assert.AreEqual <string>(expected, actual,
                                     EXECUTING_COMMAND_ERROR_MSG);
        }
Exemple #19
0
        public void TestExecuteCommandTop()
        {
            BullsAndCowsGame_Accessor game = SetSecretNumberDigits(1, 2, 3, 4);
            StringBuilder             sb   = new StringBuilder();
            StringWriter writer            = new StringWriter(sb);

            Console.SetOut(writer);
            Scoreboard scoreboard = new Scoreboard();

            scoreboard.AddNewResult(new PlayerInfo("Tisho", 1));
            game.ExecuteCommand(scoreboard, "top");
            writer.Close();

            string expected = "Scoreboard:" + Environment.NewLine +
                              "1. Tisho --> 1 guess" + Environment.NewLine;
            string actual = sb.ToString();

            Assert.AreEqual <string>(expected, actual,
                                     EXECUTING_COMMAND_ERROR_MSG);
        }
Exemple #20
0
        public void TestGenerateRandomDigits()
        {
            BullsAndCowsGame_Accessor game =
                new BullsAndCowsGame_Accessor();

            game.GenerateRandomDigits();

            int repeatedSameNumbersCount = 0;
            int previousFirstDigit       = 0;
            int previousSecondDigit      = 0;
            int previousThirdDigit       = 0;
            int previousFourthDigit      = 0;

            for (int i = 0; i < 100; i++)
            {
                game.GenerateRandomDigits();
                int  currentFirstDigit              = game.NumberForGuessDigits[0];
                int  currentSecondDigit             = game.NumberForGuessDigits[1];
                int  currentThirdtDigit             = game.NumberForGuessDigits[2];
                int  currentFourthDigit             = game.NumberForGuessDigits[3];
                bool isCurrentEqualToPreviousNumber =
                    currentFirstDigit == previousFirstDigit &&
                    currentSecondDigit == previousSecondDigit &&
                    currentThirdtDigit == previousThirdDigit &&
                    currentFourthDigit == previousFourthDigit;
                if (isCurrentEqualToPreviousNumber)
                {
                    repeatedSameNumbersCount++;
                }
                previousFirstDigit  = currentFirstDigit;
                previousSecondDigit = currentSecondDigit;
                previousThirdDigit  = currentThirdtDigit;
                previousFourthDigit = currentFourthDigit;
            }

            if (repeatedSameNumbersCount > 5)
            {
                Assert.Fail("Too many equal numbers are generated!");
            }
        }
Exemple #21
0
        public void TestPlay()
        {
            BullsAndCowsGame          game     = new BullsAndCowsGame();
            BullsAndCowsGame_Accessor accessor = new BullsAndCowsGame_Accessor();
            StringBuilder             sb       = new StringBuilder();
            StringWriter writer = new StringWriter(sb);

            Console.SetOut(writer);
            StringReader reader = new StringReader("exit");

            Console.SetIn(reader);
            game.Play();
            writer.Close();
            reader.Close();

            string expected = Environment.NewLine + accessor.WelcomeMsg +
                              Environment.NewLine + "Enter your guess or command: " +
                              "Good bye!" + Environment.NewLine;
            string actual = sb.ToString();

            Assert.AreEqual <string>(expected, actual,
                                     EXECUTING_COMMAND_ERROR_MSG);
        }
Exemple #22
0
        public void TestExecuteCommandGuessedMessageWithCheats()
        {
            BullsAndCowsGame_Accessor game = SetSecretNumberDigits(1, 2, 3, 4);
            StringBuilder             sb   = new StringBuilder();
            StringWriter writer            = new StringWriter(sb);

            Console.SetOut(writer);

            Scoreboard scoreboard = new Scoreboard();

            game.GetCheat();
            game.ExecuteCommand(scoreboard, "1234");
            writer.Close();

            string expected = "Congratulations! You guessed the secret number in 1 attempt and 1 cheat." +
                              Environment.NewLine + "You are not allowed to enter the top scoreboard." +
                              Environment.NewLine +
                              "Top scoreboard is empty." + Environment.NewLine;
            string actual = sb.ToString();

            Assert.AreEqual <string>(expected, actual,
                                     EXECUTING_COMMAND_ERROR_MSG);
        }