public void CanReturnNullWhenTryingToDequeueFromEmptyQueue()
        {
            // Arrange
            AnimalNode <string>    preference    = new AnimalNode <string>("cat");
            AnimalShelter <string> animalShelter = new AnimalShelter <string>();

            // Act
            AnimalNode <string> dequeuedAnimal = animalShelter.DequeueAnimal(preference);

            // Assert
            Assert.Null(dequeuedAnimal);
        }
        public void CanReturnPreferredAnimal()
        {
            // Arrange
            AnimalNode <string>    catPreference = new AnimalNode <string>("cat");
            AnimalShelter <string> animalShelter = new AnimalShelter <string>(catPreference);

            // Act
            AnimalNode <string> dequeuedAnimal = animalShelter.DequeueAnimal(catPreference);

            // Assert
            Assert.Equal("cat", dequeuedAnimal.Value);
        }
        public void CanReturnNullIfNeitherDogNorCatPassedInAsPreferredAnimal()
        {
            // Arrange
            AnimalNode <string>    badPreference   = new AnimalNode <string>("bird");
            AnimalNode <string>    legitPreference = new AnimalNode <string>("cat");
            AnimalShelter <string> animalShelter   = new AnimalShelter <string>();

            animalShelter.EnqueueAnimal(legitPreference);

            // Act
            AnimalNode <string> dequeuedAnimal = animalShelter.DequeueAnimal(badPreference);

            // Assert
            Assert.Null(dequeuedAnimal);
        }