public void ReplacePoint_should_remove_animal_from_start_position_in_field_and_place_to_destination() { //Arrange _field.Object.Animals[0, 1] = new Antilope(); _field.Object.Animals[1, 0] = null; //Act _systemUnderTest.ReplacePoint(_start, _destination); //Assert _field.VerifyGet(x => x.Animals, Times.AtLeastOnce); Assert.IsNull(_field.Object.Animals[0, 1]); Assert.IsInstanceOfType(_field.Object.Animals[1, 0], typeof(Antilope)); }
public void MoveAnimals(AnimalType type) { MovedAnimals = new List <Point>(); for (int i = 0; i < _field.Heigth; i++) { for (int j = 0; j < _field.Width; j++) { IAnimal animal = _field.Animals[i, j]; if ((animal != null) && (animal.Type == type)) { Point oldPosition = new Point(j, i); Point newPosition; Point nearestHerbivore = _animalFinder.SelectNearestAnimalByType(oldPosition, AnimalType.Herbivore); Point nearestCarnivore = _animalFinder.SelectNearestAnimalByType(oldPosition, AnimalType.Carnivore);; if (animal.Type == AnimalType.Carnivore) { newPosition = _positionHandler.GetNewPositionByBehavior(animal, nearestHerbivore, oldPosition, MovingType.Pursuit); if (((_field.Animals[newPosition.Y, newPosition.X] != null) && (_field.Animals[newPosition.Y, newPosition.X].Type == AnimalType.Herbivore))) { _healthHandler.IncreaseHealth(animal, 10); } } else { newPosition = _positionHandler.GetNewPositionByBehavior(animal, nearestCarnivore, oldPosition, MovingType.Runaway); } if (!MovedAnimals.Contains(oldPosition)) { _pointReplacer.ReplacePoint(oldPosition, newPosition); MovedAnimals.Add(newPosition); } } } } }