Example #1
0
        public void ParseLine_ShouldParseInputCorrectly()
        {
            var input = "X|7/|9-|X|-8|8/|-6|--|X|X||81";

            var parser = new BowlingLineParser();

            var line = parser.ParseLine(input);

            var expectedFrames = new List <Frame>
            {
                Frame.CreateStrike(),
                Frame.CreateSpare(Ball.Create(7)),
                Frame.Create(Ball.Create(9), Ball.Create(0)),
                Frame.CreateStrike(),
                Frame.Create(Ball.Create(0), Ball.Create(8)),
                Frame.CreateSpare(Ball.Create(8)),
                Frame.Create(Ball.Create(0), Ball.Create(6)),
                Frame.Create(Ball.Create(0), Ball.Create(0)),
                Frame.CreateStrike(),
                Frame.CreateStrike()
            };

            var expectedBonusBalls = new List <Ball>
            {
                Ball.Create(8),
                Ball.Create(1)
            };

            var expectedLine = new Line(expectedFrames, expectedBonusBalls);

            line.ShouldBeEquivalentTo(expectedLine);
        }
        public void ParseLine_ShouldParseInputCorrectly()
        {
            var input = "X|7/|9-|X|-8|8/|-6|--|X|X||81";

            var parser = new BowlingLineParser();

            var line = parser.ParseLine(input);

            var expectedFrames = new List<Frame>
            {
                Frame.CreateStrike(),
                Frame.CreateSpare(Ball.Create(7)),
                Frame.Create(Ball.Create(9), Ball.Create(0)),
                Frame.CreateStrike(),
                Frame.Create(Ball.Create(0), Ball.Create(8)),
                Frame.CreateSpare(Ball.Create(8)),
                Frame.Create(Ball.Create(0), Ball.Create(6)),
                Frame.Create(Ball.Create(0), Ball.Create(0)),
                Frame.CreateStrike(),
                Frame.CreateStrike()
            };

            var expectedBonusBalls = new List<Ball>
            {
                Ball.Create(8),
                Ball.Create(1)
            };

            var expectedLine = new Line(expectedFrames, expectedBonusBalls);

            line.ShouldBeEquivalentTo(expectedLine);
        }
Example #3
0
        [TestCase("X|X|X|X|X|X|X|X|X|X|X||XX")] // 11 frames
        public void ParseLine_ShouldThrowExceptionWhenInputIsNotValid(
            string input)
        {
            var parser = new BowlingLineParser();

            Action call = () => parser.ParseLine(input);

            call.ShouldThrow <ParseException>();
        }
        [TestCase("X|X|X|X|X|X|X|X|X|X|X||XX")] // 11 frames
        public void ParseLine_ShouldThrowExceptionWhenInputIsNotValid(
            string input)
        {
            var parser = new BowlingLineParser();

            Action call = () => parser.ParseLine(input);

            call.ShouldThrow<ParseException>();
        }
Example #5
0
        public void CalculateTotalScore_ShouldCalculateScoreCorrectly(
            string lineStringSpecification,
            int expectedScore)
        {
            var parser = new BowlingLineParser();

            var line = parser.ParseLine(lineStringSpecification);

            line
            .CalculateTotalScore()
            .Should()
            .Be(expectedScore, $"because total score of line {lineStringSpecification} should be {expectedScore}");
        }