/// <summary>
        /// Stats the game, gets user input and using a switch statement selects the
        /// apropriate menu
        /// </summary>
        public void StartGame()
        {
            Console.WriteLine(StartText);

            BullsAndCowsNumber secretNumber = new BullsAndCowsNumber();
            this.helpUsedCount = 0;
            this.atemptsCount = 0;

            do
            {
                Console.WriteLine("Enter your guess or command: ");
                string inputLine = Console.ReadLine().Trim().ToLower();

                switch (inputLine)
                {
                    case "help":
                        string digitsRevealed = secretNumber.RevealRandomDigit(ref this.helpUsedCount);
                        Console.WriteLine(digitsRevealed);
                        break;
                    case "top":
                        Console.WriteLine(this.scoreBoard);
                        break;
                    case "restart":
                        Console.Clear();
                        this.StartGame();
                        break;
                    case "exit":
                        this.isGameRunning = false;
                        Console.WriteLine("Good bye!");
                        break;
                    default:
                        this.ManageUserGuess(inputLine, secretNumber);
                        break;
                }
            }
            while (this.isGameRunning);
        }
        public void TestMaxHelpsUsed()
        {
            BullsAndCowsNumber secretNumber = new BullsAndCowsNumber();
            int usedHelps = secretNumber.DigitsNumber;

            string expected = secretNumber.RevealRandomDigit(ref usedHelps);

            Assert.AreEqual(expected, "You cannot use more help.\r\nGame Over.");
        }
        public void TestHelpDigitsOutputOnlyDigits()
        {
            BullsAndCowsNumber secretNumber = new BullsAndCowsNumber();
            int usedHelps = 0;
            int secretDigits = secretNumber.SecretDigits;

            for (int index = 0; index < secretNumber.DigitsNumber - 1; index++)
            {
                secretNumber.RevealRandomDigit(ref usedHelps);
            }
            string expected = secretNumber.RevealRandomDigit(ref usedHelps);

            Assert.AreEqual(expected, string.Format("The numbers look like {0}", secretDigits));
        }
        public void TestHelpDigitsOutput()
        {
            BullsAndCowsNumber secretNumber = new BullsAndCowsNumber();
            int usedHelps = 0;
            int firstSectetDigit = secretNumber.SecretDigits / 1000;

            string expected = secretNumber.RevealRandomDigit(ref usedHelps);

            Assert.AreEqual(expected, string.Format("The numbers look like {0}XXX", firstSectetDigit));
        }