public void ScoresSpare_IsSpare() { // Arrange var newFrame = new TenthFrame(0, _acceptableMarks, "3", "/"); //Act // Assert Assert.IsTrue(newFrame.IsSpare); }
public void ScoresStrike_IsStrike() { // Arrange var newFrame = new TenthFrame(0, _acceptableMarks, "x"); //Act // Assert Assert.IsTrue(newFrame.IsStrike); }
public void ScoresTwoStrikes_ThenOpen_ScoresCorrectly() { // Arrange var newFrame = new TenthFrame(0, _acceptableMarks, "x", "x", "5"); //Act var score = newFrame.ScoreFrame(); // Assert Assert.AreEqual(25, score); }
public void ScoresStrike_ThenSpare_ScoresCorrectly() { // Arrange var newFrame = new TenthFrame(0, _acceptableMarks, "x", "3", "/"); //Act var score = newFrame.ScoreFrame(); // Assert Assert.AreEqual(20, score); }
public void ScoresThreeStrikes_ScoresCorrectly() { // Arrange var newFrame = new TenthFrame(0, _acceptableMarks, "x", "x", "x"); //Act var score = newFrame.ScoreFrame(); // Assert Assert.AreEqual(30, score); }
public void ScoresOpenFrame_ReturnsCorrectValue() { // Arrange var newFrame = new TenthFrame(0, _acceptableMarks, "7", "1"); //Act var score = newFrame.ScoreFrame(); // Assert Assert.AreEqual(8, score); }
public void ScoresTwoGutters_Returns0() { // Arrange var newFrame = new TenthFrame(0, _acceptableMarks, "0", "0"); //Act var score = newFrame.ScoreFrame(); // Assert Assert.AreEqual(0, score); }
public void TenthFrame_MaxRollsCountReached_CanRollIsFalse() { //Arrange var frame = new TenthFrame(); frame.AddRoll(10); //Act frame.AddRoll(3); frame.AddRoll(3); //Assert Assert.False(frame.CanRoll); }
public void TenthFrame_Rolls_CorrectScoreReturned() { //Arrange var tenthFrame = new TenthFrame(); //Act tenthFrame.AddRoll(10); tenthFrame.AddRoll(10); tenthFrame.AddRoll(10); //Assert Assert.Equal(30, tenthFrame.Score); Assert.Equal(10, tenthFrame.Number); }
public void ThridMarkShouldNotExist_ThrowsException() { // Arrange Exception expectedException = null; //Act try { var newFrame = new TenthFrame(0, _acceptableMarks, "1", "7", "1"); } catch (ArgumentException ex) { expectedException = ex; } // Assert Assert.IsNotNull(expectedException); }
public void TenthFrame_Spare_OneExtraRollAllowed() { //Arrange var frame = new TenthFrame(); frame.AddRoll(4); frame.AddRoll(6); //Act frame.AddRoll(3); Action act = () => frame.AddRoll(5); //Assert var expectedMessage = "No more rolls can be added"; act.Should().Throw <RollOutOfRangeException>() .And .Message.Should().ContainEquivalentOf(expectedMessage); }
public void SecondMark_ShouldNotBeStrike_ThrowsException() { // Arrange Exception expectedException = null; //Act try { var newFrame = new TenthFrame(0, _acceptableMarks, "1", "X"); } catch (ArgumentException ex) { expectedException = ex; } // Assert Assert.IsNotNull(expectedException); Assert.IsTrue(expectedException.Message == "Second mark in tenth frame should not be strike"); }
private static void GetFormattedFrames(IList <Frame> frames, TenthFrame lastFrame) { foreach (var frame in frames) { FormatFrame(frame); } FormatFrame(lastFrame); //strikes if (lastFrame.ThirdScore.ToLower() == "x" || lastFrame.FirstScore == "10") { lastFrame.FirstScoreNumber = 10; lastFrame.Status = ScoreType.Strike; } else { lastFrame.FirstScoreNumber = Convert.ToInt16(lastFrame.FirstScore); lastFrame.Status = ScoreType.OpenFrame; } }
public void ScoresSpare_ThenSpare_ThrowsException() { // Arrange Exception expectedException = null; var newFrame = new TenthFrame(0, _acceptableMarks, "7", "/", "/"); //Act try { var score = newFrame.ScoreFrame(); } catch (ApplicationException ex) { expectedException = ex; } // Assert Assert.IsNotNull(expectedException); }
public static void CalculateScore(IList <Frame> frames, TenthFrame lastFrame) { GetFormattedFrames(frames, lastFrame); for (int i = 0; i < frames.Count; i++) { var nextFrameIndex = i + 1; switch (frames[i].Status) { case ScoreType.Strike: frames[i].Total = 10; if (nextFrameIndex < frames.Count) { frames[i].Total += frames[i + 1].FirstScoreNumber; frames[i].Total += frames[i + 1].SecondScoreNumber; } break; case ScoreType.Spare: frames[i].Total = 10; if (nextFrameIndex < frames.Count) { frames[i].Total += frames[i + 1].FirstScoreNumber; } break; case ScoreType.OpenFrame: frames[i].Total = frames[i]?.FirstScoreNumber + frames[i]?.SecondScoreNumber; break; default: frames[i].Total = 0; break; } if (i != 0) { frames[i].Total += frames[i - 1].Total; } } }