public void GetFrameScoreScenario3Game10IsStrikeAllowstwoMoreBalls()
        {
            BowlingKataGame game = new BowlingKataGame();

            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);


            Assert.AreEqual(300, game.GetScores());
            Assert.AreEqual(0, game.GetRemainingBonusBalls());
            Assert.AreEqual(10, game.GetActiveFrameNumber());

            game.RollBall(10);// this ball should be ignored...
            Assert.AreEqual(300, game.GetScores());
            Assert.AreEqual(0, game.GetRemainingBonusBalls());
            Assert.AreEqual(10, game.GetActiveFrameNumber());
        }
        public void GetFrameScoreScenario2BonusPointsAddedtoCorrectFrame()
        {
            BowlingKataGame game = new BowlingKataGame();

            game.RollBall(10);
            game.RollBall(4);
            game.RollBall(6);
            Assert.AreEqual(30, game.GetScores());
        }
        public void OneRollOfBallDoesNotStartNewFrameIfAllPinsNotDownTest()
        {
            BowlingKataGame game = new BowlingKataGame();

            game.RollBall(4);
            int actual   = game.GetActiveFrameNumber();
            int expected = 1;

            Console.WriteLine(actual);
            Assert.AreEqual(expected, actual);
        }
        public void OneRollOfBallStartNewFrameIfAllPinsDownTest()
        {
            // Means if you have rolled only one ball, then the next frame will not start..
            // third roll will be a start of next frame

            BowlingKataGame game = new BowlingKataGame();

            game.RollBall(10);
            int actual   = game.GetActiveFrameNumber();
            int expected = 2;

            Console.WriteLine(actual);
            Assert.AreEqual(expected, actual);
        }
        public void TwoRollOfBallsStartsNewFrameTest()
        {
            // Means if you have rolled two balls, then the next frame will start..
            // third roll will be a start of next frame

            BowlingKataGame game = new BowlingKataGame();

            game.RollBall(4);
            game.RollBall(3);
            int actual   = game.GetActiveFrameNumber();
            int expected = 2;

            Console.WriteLine(actual);
            Assert.AreEqual(expected, actual);
        }
        public void GetFrameScoreScenario1()
        {
            BowlingKataGame game = new BowlingKataGame();

            game.RollBall(6);
            game.RollBall(4);

            Assert.AreEqual(10, game.GetScorebyFrame(1));

            game.RollBall(7);
            Assert.AreEqual(17, game.GetScorebyFrame(1));
            game.RollBall(1);
            Assert.AreEqual(17, game.GetScorebyFrame(1));
            Assert.AreEqual(8, game.GetScorebyFrame(2));
        }
        public void StrikeGivesYouTwoBonusBalls()
        {
            BowlingKataGame game = new BowlingKataGame();

            game.RollBall(10);

            int actualFrameNumber   = game.GetActiveFrameNumber();
            int expectedFrameNumber = 2;

            int actualBonusBalls   = game.GetRemainingBonusBalls();
            int expectedBonusBalls = 2;

            Console.WriteLine("Actual Frame" + actualFrameNumber);
            Console.WriteLine("Actual BonusBalls" + actualBonusBalls);
            Assert.AreEqual(expectedFrameNumber, actualFrameNumber);
            Assert.AreEqual(expectedBonusBalls, actualBonusBalls);
        }
        public void GetScorseWhenAStrike()
        {
            BowlingKataGame game = new BowlingKataGame();

            game.RollBall(10);

            int actualFrameNumber   = game.GetActiveFrameNumber();
            int expectedFrameNumber = 2;

            int actualBonusBalls   = game.GetRemainingBonusBalls();
            int expectedBonusBalls = 2;

            Console.WriteLine("Actual Frame" + actualFrameNumber);
            Console.WriteLine("Actual BonusBalls" + actualBonusBalls);
            Assert.AreEqual(expectedFrameNumber, actualFrameNumber);
            Assert.AreEqual(expectedBonusBalls, actualBonusBalls);
            int actualScore   = game.GetScores();
            int expectedScore = 10;

            Assert.AreEqual(expectedScore, actualScore);
        }
        public void GetFrameScoreScenario3Game10IsStrikeAllowsOneMoreBalls()
        {
            BowlingKataGame game = new BowlingKataGame();

            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(10);
            game.RollBall(2); //9
            game.RollBall(8); //9
            game.RollBall(2);
            game.RollBall(8);
            game.RollBall(10);

            game.PrintScores();

            // Assert.AreEqual(278, game.GetScores());
            Assert.AreEqual(0, game.GetRemainingBonusBalls());
            Assert.AreEqual(10, game.GetActiveFrameNumber());
        }