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); }
[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>(); }
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}"); }