public void AnimalShelterTest() { AnimalShelter s = new AnimalShelter(); s.Enqueue(newDog("toto")); s.Enqueue(newDog("barney")); s.Enqueue(newCat("boris")); s.Enqueue(newCat("hans")); var a = s.DequeueAny(); Assert.AreEqual(a.Name, "toto"); a = s.DequeueCat(); Assert.AreEqual(a.Name, "boris"); a = s.DequeueAny(); Assert.AreEqual(a.Name, "barney"); Assert.ThrowsException <InvalidOperationException>(() => s.DequeueDog()); a = s.DequeueAny(); Assert.AreEqual(a.Name, "hans"); Assert.ThrowsException <InvalidOperationException>(() => s.DequeueAny()); }
private static void DequeueAndValidateDogs(AnimalShelter shelter, params int[] ids) { foreach (var id in ids) { Assert.AreEqual(id, shelter.DequeueDog().Id); } }
public void AnimalShelterTest2() { var shelter = new AnimalShelter(); shelter.Enqueue(new Dog(4)); shelter.Enqueue(new Cat(3)); shelter.Enqueue(new Cat(6)); shelter.Enqueue(new Cat(5)); shelter.Enqueue(new Dog(5)); shelter.Enqueue(new Cat(8)); Assert.AreEqual(5, shelter.DequeueDog().Age); Assert.AreEqual(4, shelter.DequeueDog().Age); shelter.Enqueue(new Dog(8)); shelter.Enqueue(new Dog(9)); shelter.Enqueue(new Cat(5)); Assert.AreEqual(8, shelter.DequeueCat().Age); Assert.AreEqual(6, shelter.DequeueCat().Age); }
public void InvalidInputTest() { var shelter = new AnimalShelter(); // Dequeuing doesn't work when there are no animals TestHelpers.AssertExceptionThrown(() => shelter.DequeueAny(), typeof(InvalidOperationException)); TestHelpers.AssertExceptionThrown(() => shelter.DequeueCat(), typeof(InvalidOperationException)); TestHelpers.AssertExceptionThrown(() => shelter.DequeueDog(), typeof(InvalidOperationException)); // Dequeuing doesn't work when there are only animals of the other type EnqueueDogs(shelter, 1); TestHelpers.AssertExceptionThrown(() => shelter.DequeueCat(), typeof(InvalidOperationException)); DequeueAndValidateDogs(shelter, 1); EnqueueCats(shelter, 2); TestHelpers.AssertExceptionThrown(() => shelter.DequeueDog(), typeof(InvalidOperationException)); DequeueAndValidateCats(shelter, 2); // Enqueuing doesn't work for unknown animals var elephant = new Elephant(3); TestHelpers.AssertExceptionThrown(() => shelter.Enqueue(elephant), typeof(InvalidOperationException)); }
public void TestAnimalShelterMethods() { // Arrange AnimalShelter emptyShelter = new AnimalShelter(); AnimalShelter noCatsShelter = new AnimalShelter(); AnimalShelter noDogsShelter = new AnimalShelter(); AnimalShelter shelter = new AnimalShelter(); Dog d1 = new Dog(); Cat c1 = new Cat(); Cat c2 = new Cat(); Dog d2 = new Dog(); Dog d3 = new Dog(); Cat c3 = new Cat(); // Act Animal emptyShelterDequeueAnyResult = emptyShelter.DequeueAny(); noCatsShelter.Enqueue(new Dog()); Cat noCatsShelterDequeueCatResult = noCatsShelter.DequeueCat(); noDogsShelter.Enqueue(new Cat()); Dog noDogsShelterDequeueDogResult = noDogsShelter.DequeueDog(); shelter.Enqueue(d1); shelter.Enqueue(c1); shelter.Enqueue(c2); shelter.Enqueue(d2); shelter.Enqueue(d3); shelter.Enqueue(c3); shelter.DequeueCat(); shelter.DequeueAny(); shelter.DequeueDog(); // Assert Assert.IsNull(emptyShelterDequeueAnyResult); Assert.IsNull(noCatsShelterDequeueCatResult); Assert.IsNull(noDogsShelterDequeueDogResult); Animal currAnimal = shelter.NextAnimal; Assert.AreEqual(c2, currAnimal); currAnimal = currAnimal.NextAnimal; Assert.AreEqual(d3, currAnimal); currAnimal = currAnimal.NextAnimal; Assert.AreEqual(c3, currAnimal); currAnimal = currAnimal.NextAnimal; Assert.IsNull(currAnimal); Dog currDog = shelter.NextDog; Assert.AreEqual(d3, currDog); currDog = currDog.NextDog; Assert.IsNull(currDog); Cat currCat = shelter.NextCat; Assert.AreEqual(c2, currCat); currCat = currCat.NextCat; Assert.AreEqual(c3, currCat); currCat = currCat.NextCat; Assert.IsNull(currCat); }