public void GetScoreShouldShouldReturnMultipleScoreCategoryObjects() { sut = new Scoresheet(MockedFactory.Object); List <int> faceValues1 = new List <int>() { 1, 1, 1, 1, 1 }; CategoryScore expected1 = BuildCategoryScore(ScoreCategory.Aces, m_defaultScore, faceValues1); List <int> faceValues2 = new List <int>() { 2, 2, 2, 2, 2 }; CategoryScore expected2 = BuildCategoryScore(ScoreCategory.Twos, m_defaultScore, faceValues2); IPlayer player = MockedPlayerFactory.Object; sut.RegisterScore(player, ScoreCategory.Aces, faceValues1); sut.RegisterScore(player, ScoreCategory.Twos, faceValues2); CategoryScore actual1 = sut.GetScore(player, ScoreCategory.Aces); CategoryScore actual2 = sut.GetScore(player, ScoreCategory.Twos); Assert.True(CategoryScoresEqual(expected1, actual1) && CategoryScoresEqual(expected2, actual2)); }
public void GetScoreShouldShouldReturnAScoreCategoryObject() { /* * We realize that we are "testing" another class here that we have not mocked. * The reason for this is that we cannot in a clean way mock an internal class being returned. * We could mock the sut and change the return type, but then we're no longer testing the sut. * We could add a factory creating CategoryScores, but then how do we test that factory? * Then the factory itself will need a factory, and that factory will need its own factory, and you see where this is going. * We also believe that the class CategoryScore is rather trivial (e.g. it has no methods) which helps justify this approach. */ sut = new Scoresheet(MockedFactory.Object); List <int> faceValues = new List <int>() { 1, 1, 1, 1, 1 }; CategoryScore expected = BuildCategoryScore(ScoreCategory.Aces, m_defaultScore, faceValues); IPlayer player = MockedPlayerFactory.Object; sut.RegisterScore(player, ScoreCategory.Aces, faceValues); CategoryScore actual = sut.GetScore(player, ScoreCategory.Aces); Assert.True(CategoryScoresEqual(expected, actual)); }
public void RegisterScoreShouldThrowWhenNotGivenAPlayer() { sut = new Scoresheet(MockedFactory.Object); Assert.Throws <ArgumentNullException>(delegate() { sut.RegisterScore(null, ScoreCategory.Aces, new List <int> { 1, 1, 1, 1, 1 }); }); }