public void FightsGnomesCorrectly() { // Arrange var gnomeCreator = MockRepository.GenerateMock <IGnomeCreator>(); var gnomeMovement = MockRepository.GenerateMock <IGnomeMovement>(); var gnomeHandler = MockRepository.GenerateMock <IGnomeHandler>(); var gnome1 = new Gnome(1, 1, 2, gnomeMovement); var gnome2 = new Gnome(1, 2, 4, gnomeMovement); var gnome3 = new Gnome(1, 3, 6, gnomeMovement); var gnome4 = new Gnome(1, 4, 2, gnomeMovement); var gnomes = new List <IGnome> { gnome1, gnome2, gnome3, gnome4 }; gnomeCreator.Stub(x => x.GenerateGnomes(1, 3)).Return(gnomes); var logger = MockRepository.GenerateMock <ILogger>(); var gnomeFighting = new GnomeFighting(gnomeHandler, logger); // Act gnomeFighting.FightGnomesOfDifferentType(gnomes, new BoardPosition()); // Assert gnomeHandler.AssertWasCalled(x => x.KillGnome(gnome1), options => options.Repeat.Once()); gnomeHandler.AssertWasCalled(x => x.KillGnome(gnome2), options => options.Repeat.Once()); gnomeHandler.AssertWasCalled(x => x.KillGnome(gnome4), options => options.Repeat.Once()); gnomeHandler.AssertWasNotCalled(x => x.KillGnome(gnome3)); logger.AssertWasCalled(x => x.LogLine(Arg <string> .Is.Anything), options => options.Repeat.Times(3)); }
public void CombinesGnomesCorrectly() { // Arrange var gnomeCreator = MockRepository.GenerateMock <IGnomeCreator>(); var gnomeMovement = MockRepository.GenerateMock <IGnomeMovement>(); var gnomeHandler = MockRepository.GenerateMock <IGnomeHandler>(); var gnomes = new List <Gnome> { new Gnome(1, 1, 2, gnomeMovement), new Gnome(2, 1, 4, gnomeMovement), new Gnome(3, 1, 6, gnomeMovement), new Gnome(1, 2, 2, gnomeMovement), }; gnomeCreator.Stub(x => x.GenerateGnomes(1, 3)).Return(gnomes); var logger = MockRepository.GenerateMock <ILogger>(); var gnomeFighting = new GnomeFighting(gnomeHandler, logger); // Act var combinedGnomes = gnomeFighting.CombineGnomesOfSameGroup(gnomes, new BoardPosition()); // Assert Assert.AreEqual(2, combinedGnomes.Count); Assert.AreEqual(1, combinedGnomes.Count(x => x.GnomeGroup == 1 && x.GnomeStrength == 12)); Assert.AreEqual(1, combinedGnomes.Count(x => x.GnomeGroup == 2 && x.GnomeStrength == 2)); logger.AssertWasCalled(x => x.LogLine(Arg <string> .Is.Anything), options => options.Repeat.Twice()); gnomeHandler.AssertWasCalled(x => x.KillGnome(gnomes[1]), options => options.Repeat.Once()); gnomeHandler.AssertWasCalled(x => x.KillGnome(gnomes[2]), options => options.Repeat.Once()); gnomeHandler.AssertWasNotCalled(x => x.KillGnome(gnomes[0])); gnomeHandler.AssertWasNotCalled(x => x.KillGnome(gnomes[3])); }