Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Linq;
- namespace Lvvwd.Test
- {
- [TestClass]
- public class BowlingCalculatorTest
- {
- BowlingCalculator sut;
- [TestInitialize]
- public void Init()
- { sut = new BowlingCalculator(); }
- //all 0s
- [TestMethod]
- public void Calculate_AllZeroTest()
- {
- sut.Score = new List<int> { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- int result = sut.CalculateScore();
- Assert.AreEqual(result, 0);
- }
- //all 1s
- [TestMethod]
- public void Calculate_AllOnesTest()
- {
- sut.Score = new List<int> { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
- int result = sut.CalculateScore();
- Assert.AreEqual(result, 20);
- }
- //spare 9, 1, 1, 0s
- //all 1s
- [TestMethod]
- public void Calculate_Spare()
- {
- sut.Score = new List<int> { 9, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- int result = sut.CalculateScore();
- Assert.AreEqual(sut.Frames[0], 11);
- Assert.AreEqual(result, 12);
- }
- [TestMethod]
- public void Calculate_Strike()
- {
- sut.Score = new List<int> { 10, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- int result = sut.CalculateScore();
- Assert.AreEqual(result, 14);
- Assert.AreEqual(sut.Frames[0], 12);
- }
- [TestMethod]
- public void Calculate_TenthFrameSpare()
- {
- sut.Score = new List<int> { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 10 };
- int result = sut.CalculateScore();
- Assert.AreEqual(result, 21);
- Assert.AreEqual(sut.Frames[9], 20);
- }
- [TestMethod]
- public void Calculate_TenthFrameStrike()
- {
- sut.Score = new List<int> { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10 };
- int result = sut.CalculateScore();
- Assert.AreEqual(result, 31);
- Assert.AreEqual(sut.Frames[9], 30);
- }
- }
- public class BowlingCalculator
- {
- internal List<int> Score;
- internal int[] Frames = new int[10];
- internal int CalculateScore()
- {
- var index = 0;
- for (int i = 0; i < 10; i++)
- {
- if (Score[index] == 10)
- {
- Frames[i] = Score[index] + Score[index + 1] + Score[index + 2];
- index++;
- }
- else if (Score[index] + Score[index + 1] == 10)
- {
- Frames[i] = Score[index] + Score[index + 1] + Score[index + 2];
- index += 2;
- }
- else
- {
- Frames[i] = Score[index] + Score[index + 1];
- index += 2;
- }
- }
- return Frames.Sum();
- }
- }
- }
Add Comment
Please, Sign In to add comment