public void CanScoreAPerfectGame()
        {
            var game = new BowlingGame();

            var frame = CreateFrame(new int[] { 10 });

            game.AddFrame(frame);
            game.AddFrame(frame);
            game.AddFrame(frame);
            game.AddFrame(frame);
            game.AddFrame(frame);
            game.AddFrame(frame);
            game.AddFrame(frame);
            game.AddFrame(frame);
            game.AddFrame(frame);

            frame = CreateFrame(new int[] { 10, 10, 10 });
            game.AddFrame(frame);

            var expected = 10 + (10 + 10) + 10 + (10 + 10) + 10 + (10 + 10) +
                           10 + (10 + 10) + 10 + (10 + 10) + 10 + (10 + 10) +
                           10 + (10 + 10) + 10 + (10 + 10) + 10 + (10 + 10) +
                           10 + 10 + 10;
            var actual = game.ScoreGame();

            Assert.Equal(expected, actual);
        }
        public void CanAddFrameToGame()
        {
            var game  = new BowlingGame();
            var frame = CreateFrame(new int[1]);

            game.AddFrame(frame);
            Assert.Single(game.Frames);
        }
        private BowlingGame CreateGame(List <int[]> arrayOfPins)
        {
            var game = new BowlingGame();

            foreach (var pins in arrayOfPins)
            {
                game.AddFrame(CreateFrame(pins));
            }
            return(game);
        }