public void ConquerTheUniverseSecs_WhenTimeLimitOnlyAllowsForConqueringSomePlanets_OnlyConquersSomePlanets() { // Arrange var travelTime = 20; var clonizeRate = 0.6; var pcColonize = .3; var timeLimit = planets[0].Area * pcColonize * clonizeRate; timeLimit += planets[1].Area * pcColonize * clonizeRate; timeLimit += travelTime * 60 * 2; var subject = new ColonizationService(travelServiceMock.Object, travelTime, clonizeRate, pcColonize); // Act var result = subject.ConquerTheUniverseSecs(fixture.Create <Position>(), planets, timeLimit).ToList(); // Assert Assert.AreEqual(2, result.Count()); travelServiceMock.Verify(t => t.FindNearestObject(It.IsAny <Position>(), It.IsAny <IList <Planet> >()), Times.Exactly(3)); }
public void ConquerTheUniverseSecs_WhenInvoked_MustUsePositionOfDestinationAsStartPosForNextIteration() { // Arrange var travelTime = 20; var clonizeRate = 0.6; var pcColonize = .3; var timeLimit = planets[0].Area * pcColonize * clonizeRate; timeLimit += planets[1].Area * pcColonize * clonizeRate; timeLimit += travelTime * 60 * 2; var startPos = fixture.Create <Position>(); var pos1 = planets[0].Position; var pos2 = planets[1].Position; var subject = new ColonizationService(travelServiceMock.Object, travelTime, clonizeRate, pcColonize); // Act var result = subject.ConquerTheUniverseSecs(startPos, planets, timeLimit).ToList(); // Assert travelServiceMock.Verify(t => t.FindNearestObject(startPos, It.IsAny <IList <Planet> >()), Times.Once); travelServiceMock.Verify(t => t.FindNearestObject(pos1, It.IsAny <IList <Planet> >()), Times.Once); travelServiceMock.Verify(t => t.FindNearestObject(pos2, It.IsAny <IList <Planet> >()), Times.Once); }