public void PetAnimal_ShouldBeMaxHappiness_WhenPettedAt100Happiness() { Animal animal = new Animal() { AnimalTypeId = 1, Happiness = 100, Hunger = 40, Id = 1, LastChecked = DateTime.Now, Name = "Molly", UserId = 1 }; AnimalTypeDTO animalType = new AnimalTypeDTO() { AnimalTypeName = "Dog", HappinessDeductionRate = 3, HungerIncreaseRate = 2, Id = 1 }; animal = animalStateManager.PetAnimal(animal, animalType); Assert.AreEqual(100, animal.Happiness); }
public void CalculateAnimalSate_ShouldReturnMaxValues_WhenCalledWithLowestPossibleDateTime() { Animal animal = new Animal() { AnimalTypeId = 1, Happiness = 50, Hunger = 50, Id = 1, LastChecked = DateTime.MinValue, Name = "Molly", UserId = 1 }; AnimalTypeDTO animalType = new AnimalTypeDTO() { AnimalTypeName = "Dog", HappinessDeductionRate = 3, HungerIncreaseRate = 2, Id = 1 }; Animal returnAnimal = animalStateManager.CalculateAnimalState(animal, animalType); Assert.AreEqual(100, returnAnimal.Hunger); Assert.AreEqual(0, returnAnimal.Happiness); }
public void FeedAnimal_ShouldBeMinimumHunger_WhenFedWhenFull() { Animal animal = new Animal() { AnimalTypeId = 1, Happiness = 100, Hunger = 0, Id = 1, LastChecked = DateTime.Now, Name = "Molly", UserId = 1 }; AnimalTypeDTO animalType = new AnimalTypeDTO() { AnimalTypeName = "Dog", HappinessDeductionRate = 3, HungerIncreaseRate = 2, Id = 1 }; animal = animalStateManager.FeedAnimal(animal, animalType); Assert.AreEqual(0, animal.Hunger); }
public AnimalTypeDTO GetAnimalTypeById(int id) { AnimalType animalType = animalTypeRepository.GetAnimalTypeById(id); AnimalTypeDTO returnValue = Mapper.Map <AnimalTypeDTO>(animalType); return(returnValue); }
public void CalculateAnimalState_ShouldChangeHappinessAndHunger_WhenCalled() { Animal animal = new Animal() { AnimalTypeId = 1, Happiness = 50, Hunger = 50, Id = 1, LastChecked = DateTime.Now.AddMinutes(-5), Name = "Albie", UserId = 1 }; AnimalTypeDTO animalType = new AnimalTypeDTO() { AnimalTypeName = "Dog", HappinessDeductionRate = 3, HungerIncreaseRate = 2, Id = 1 }; Animal returnAnimal = animalStateManager.CalculateAnimalState(animal, animalType); Assert.AreEqual(60, returnAnimal.Hunger); Assert.AreEqual(35, returnAnimal.Happiness); }
public IEnumerable <AnimalDTO> GetAnimalsByUserId(int id) { //Create new reference in heap List <Animal> animals = animalRepository.GetAnimalsFromUser(id).ToList(); List <Animal> updatedAnimals = new List <Animal>(); foreach (var animal in animals) { AnimalTypeDTO animalType = animalTypeManager.GetAnimalTypeById(animal.AnimalTypeId); //Calculate the new animal state values Animal tempAnimal; tempAnimal = animalStateManager.CalculateAnimalState(animal, animalType); //Update the animal in the database tempAnimal = animalRepository.UpdateAnimal(tempAnimal); updatedAnimals.Add(tempAnimal); } IEnumerable <AnimalDTO> returnValue = Mapper.Map <IEnumerable <AnimalDTO> >(updatedAnimals); return(returnValue); }
public void CalculateAnimalSate_ShouldReturnMaxValues_WhenCalledOutsideMaxRange() { Animal animal = new Animal() { AnimalTypeId = 1, Happiness = 50, Hunger = 50, Id = 1, LastChecked = DateTime.Now.AddMinutes(-500000), Name = "Milo", UserId = 1 }; AnimalTypeDTO animalType = new AnimalTypeDTO() { AnimalTypeName = "Dog", HappinessDeductionRate = 3, HungerIncreaseRate = 2, Id = 1 }; Animal returnAnimal = animalStateManager.CalculateAnimalState(animal, animalType); Assert.AreEqual(100, returnAnimal.Hunger); Assert.AreEqual(0, returnAnimal.Happiness); }
public Animal FeedAnimal(Animal animal, AnimalTypeDTO animalType) { //This could be expanded drastically to incorporate Animal Food objects that decrease food more depending upon their type. animal.Hunger -= 20; return(CalculateAnimalState(animal, animalType)); }
public Animal PetAnimal(Animal animal, AnimalTypeDTO animalType) { //This could be expanded drastically to incorporate Animal Happiness objects that increase happiness more depending upon their type. animal.Happiness += 20; return(CalculateAnimalState(animal, animalType)); }
public Animal CalculateAnimalState(Animal animal, AnimalTypeDTO animalType) { //Find the length of time since the last request TimeSpan timeSpan = DateTime.Now - animal.LastChecked; //Find total minutes between last request. //This calculate method is simple so will use Ints int minutes = Convert.ToInt32(timeSpan.TotalMinutes); //Ensure time has passed. if (minutes > 0) { try { //Check for overflow... Someone could play this game once and then play it in 100 years animal.Hunger = checked (animal.Hunger + (minutes * animalType.HungerIncreaseRate)); } catch (OverflowException) { animal.Hunger = 100; } try { animal.Happiness = checked (animal.Happiness - (minutes * animalType.HappinessDeductionRate)); } catch (OverflowException) { animal.Happiness = 0; } animal.LastChecked = DateTime.Now; } //Check if values have gone below correct range if (animal.Hunger > 100) { animal.Hunger = 100; } else if (animal.Hunger < 0) { animal.Hunger = 0; } if (animal.Happiness > 100) { animal.Happiness = 100; } else if (animal.Happiness < 0) { animal.Happiness = 0; } return(animal); }
public void GetAnimalTypeById_ShouldReturnUser_WhenCalledWithValidId() { var result = animalTypeController.GetById(1); var response = result as OkObjectResult; Assert.IsNotNull(response); Assert.AreEqual(200, response.StatusCode); AnimalTypeDTO animalTypeDTO = response.Value as AnimalTypeDTO; Assert.AreEqual(mockAnimalTypes[0].Id, animalTypeDTO.Id); }
public void AddAnimalType(AnimalTypeDTO animalType) { if (animalType.Id == Guid.Empty) { animalType.Id = Guid.NewGuid(); } else { Instance.EditAnimalType(animalType); } RunCommand(() => Instance.AnimalTypes.Add(AutoMapperImpl.Mapper.Map <AnimalType>(animalType))); }
public AnimalDTO PetAnimal(int userId, int id) { Animal animal = animalRepository.GetAnimalById(id); if (userId != animal.UserId) { throw new ResourceNotOwnedException(); } //Find the animalType associated with the animal AnimalTypeDTO animalType = animalTypeManager.GetAnimalTypeById(animal.AnimalTypeId); animal = animalStateManager.PetAnimal(animal, animalType); animal = animalRepository.UpdateAnimal(animal); AnimalDTO returnValue = Mapper.Map <AnimalDTO>(animal); return(returnValue); }
public IActionResult GetById(int id) { AnimalTypeDTO animalType = null; try { animalType = animalTypeManager.GetAnimalTypeById(id); } //Manager will throw exceptions to manage responses catch (InvalidOperationException) { return(NotFound($"{id} was not found")); } catch (Exception) { return(StatusCode(500)); } return(Ok(animalType)); }
public void AddAnimalType(AnimalTypeDTO animalType) { DatabaseService.Instance.AddAnimalType(animalType); }
public void RemoveAnimalType(AnimalTypeDTO animalType) { throw new NotImplementedException(); }
public void RemoveAnimalType(AnimalTypeDTO animalType) { DatabaseService.Instance.RemoveAnimalType(animalType); }
public void EditAnimalType(AnimalTypeDTO animalType) { DatabaseService.Instance.EditAnimalType(animalType); }