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);
        }