public void should_ScoreAFramesBonusPoints_When_ASpare()
        {
            var frames      = GetAllSpareFrames();
            var bonusScorer = new BonusScorer();
            var result      = bonusScorer.Score(frames);

            Assert.That(result[0].FrameBowlsTotal(), Is.EqualTo(10));
            Assert.That(result[0].BonusPoints, Is.EqualTo(5));
            Assert.That(result[7].FrameBowlsTotal(), Is.EqualTo(10));
            Assert.That(result[7].BonusPoints, Is.EqualTo(5));
            Assert.That(result[8].FrameBowlsTotal(), Is.EqualTo(10));
            Assert.That(result[8].BonusPoints, Is.EqualTo(5));
            Assert.That(result[9].FrameBowlsTotal(), Is.EqualTo(10));
            Assert.That(result[9].BonusPoints, Is.EqualTo(5));
        }
        public void should_ScoreAFramesBonusPoints_When_NoStrikesOrSpares()
        {
            var frames      = GetNoSparesOrStrikes();
            var bonusScorer = new BonusScorer();
            var result      = bonusScorer.Score(frames);

            Assert.That(result[0].FrameBowlsTotal(), Is.EqualTo(1));
            Assert.That(result[0].BonusPoints, Is.EqualTo(0));
            Assert.That(result[0].FrameScore, Is.EqualTo(1));
            Assert.That(result[7].FrameBowlsTotal(), Is.EqualTo(8));
            Assert.That(result[7].BonusPoints, Is.EqualTo(0));
            Assert.That(result[7].FrameScore, Is.EqualTo(8));
            Assert.That(result[8].FrameBowlsTotal(), Is.EqualTo(9));
            Assert.That(result[8].BonusPoints, Is.EqualTo(0));
            Assert.That(result[8].FrameScore, Is.EqualTo(9));
            Assert.That(result[9].FrameBowlsTotal(), Is.EqualTo(9));
            Assert.That(result[9].BonusPoints, Is.EqualTo(0));
            Assert.That(result[9].FrameScore, Is.EqualTo(9));
        }
        public void should_ScoreAFramesBonusPoints_When_AllStrikeButOnlyOneBonusFrame()
        {
            var frames      = GetAllStrikeFrames1Bonus();
            var bonusScorer = new BonusScorer();
            var result      = bonusScorer.Score(frames);

            Assert.That(result[0].FrameBowlsTotal(), Is.EqualTo(10));
            Assert.That(result[0].BonusPoints, Is.EqualTo(20));
            Assert.That(result[0].FrameScore, Is.EqualTo(30));
            Assert.That(result[7].FrameBowlsTotal(), Is.EqualTo(10));
            Assert.That(result[7].BonusPoints, Is.EqualTo(20));
            Assert.That(result[7].FrameScore, Is.EqualTo(30));
            Assert.That(result[8].FrameBowlsTotal(), Is.EqualTo(10));
            Assert.That(result[8].BonusPoints, Is.EqualTo(13));
            Assert.That(result[8].FrameScore, Is.EqualTo(23));
            Assert.That(result[9].FrameBowlsTotal(), Is.EqualTo(10));
            Assert.That(result[9].BonusPoints, Is.EqualTo(8));
            Assert.That(result[9].FrameScore, Is.EqualTo(18));
        }
        public void should_ScoreAFramesBonusPoints_When_EveryOtherIsStrike()
        {
            var frames      = GetEveryOtherStrikes();
            var bonusScorer = new BonusScorer();
            var result      = bonusScorer.Score(frames);

            Assert.That(result[0].FrameBowlsTotal(), Is.EqualTo(10));
            Assert.That(result[0].BonusPoints, Is.EqualTo(5));
            Assert.That(result[0].FrameScore, Is.EqualTo(15));
            Assert.That(result[1].FrameBowlsTotal(), Is.EqualTo(5));
            Assert.That(result[1].BonusPoints, Is.EqualTo(0));
            Assert.That(result[1].FrameScore, Is.EqualTo(5));
            Assert.That(result[7].FrameBowlsTotal(), Is.EqualTo(5));
            Assert.That(result[7].BonusPoints, Is.EqualTo(0));
            Assert.That(result[7].FrameScore, Is.EqualTo(5));
            Assert.That(result[8].FrameBowlsTotal(), Is.EqualTo(10));
            Assert.That(result[8].BonusPoints, Is.EqualTo(5));
            Assert.That(result[8].FrameScore, Is.EqualTo(15));
            Assert.That(result[9].FrameBowlsTotal(), Is.EqualTo(5));
            Assert.That(result[9].BonusPoints, Is.EqualTo(0));
            Assert.That(result[9].FrameScore, Is.EqualTo(5));
        }