def test_enqueue_dog():
    shelter1 = AnimalShelter('shelter1')
    dog1 = Dog('dog1')
    dog2 = Dog('dog2')
    shelter1.enqueue(dog1)
    shelter1.enqueue(dog2)
    assert shelter1
def test_dequeue_dog():
    shelter1 = AnimalShelter('shelter1')
    dog1 = Dog('dog1')
    dog2 = Dog('dog2')
    shelter1.enqueue(dog1)
    shelter1.enqueue(dog2)
    assert shelter1.dequeue('dog').name == 'dog1'
def test_enqueue_dequeue_dog_multiple():
    as3 = AnimalShelter("Save-a-Pet")
    dog3 = Dog("Stone Cold Steve Pawstin")
    dog4 = Dog("A dog with no name")
    as3.enqueue(dog3)
    as3.enqueue(dog4)
    assert as3.dequeue("dog").name == "Stone Cold Steve Pawstin"
    assert as3.dog_queue.peek().name == "A dog with no name"
def test_dequeue_from_shelter_another_animal():
    '''
    testing dequeue is handel returning another animal
    '''
    shelter = AnimalShelter()
    cat1 = Cat('smoor')
    dog1 = Dog('toto')
    cat2 = Cat('tota')
    dog2 = Dog('smer')
    shelter.dequeue('hamster')
    assert shelter.dequeue('hamster') == None
def test_enqueue_cats_and_dogs():
    shelter2 = AnimalShelter('shelter2')
    dog1 = Dog('dog1')
    cat1 = Cat('cat1')
    dog2 = Dog('dog2')
    cat2 = Cat('cat2')
    shelter2.enqueue(dog1)
    shelter2.enqueue(cat1)
    shelter2.enqueue(dog2)
    shelter2.enqueue(cat2)
    assert shelter2
def test_dequeue_from_shelter_dog_or_cat():
    '''
    testing dequeue is handel remove and return dogs or cats objects
    '''
    shelter = AnimalShelter()
    cat1 = Cat('smoor')
    dog1 = Dog('toto')
    cat2 = Cat('tota')
    dog2 = Dog('smer')
    shelter.enqueue(cat1)
    shelter.enqueue(dog1)
    shelter.enqueue(cat2)
    shelter.enqueue(dog2)
    assert isinstance(shelter.dequeue('dog'), Dog)
    assert shelter.dequeue('cat') != None
    assert isinstance(shelter.dequeue('cat'), Cat)
    assert isinstance(shelter.dequeue('dog'), Dog)
def test_adding_to_shelter_multi_dogs_and_cats():
    '''
    testing enqueue is working fine with adding multi dogs and cats opjects
    '''
    shelter = AnimalShelter()
    cat1 = Cat('smoor')
    cat2 = Cat('tota')
    dog1 = Dog('toto')
    dog2 = Dog('smer')
    assert shelter.enqueue(
        cat1) != "You can't add other animal than dogs or cats"
    assert shelter.enqueue(
        cat2) != "You can't add other animal than dogs or cats"
    assert shelter.enqueue(
        dog1) != "You can't add other animal than dogs or cats"
    assert shelter.enqueue(
        dog2) != "You can't add other animal than dogs or cats"
def test_stretch_goal_oldest_animal():
    as7 = AnimalShelter("Wags and Walks")
    dog8 = Dog("Anthony Walkin's")
    cat7 = Cat("Meowster Stallone")
    as7.enqueue(dog8)
    as7.enqueue(cat7)
    assert as7.dequeue().name == "Anthony Walkin's"
    assert as7.dequeue().name == "Meowster Stallone"
def test_all_functions():
    as6 = AnimalShelter("Paws without Borders")
    dog5 = Dog("Tony Bark")
    dog6 = Dog("Steve Woofjers")
    dog7 = Dog("Natasha Roman-arf-a")
    cat4 = Cat("Clint Bartoffthecouch")
    cat5 = Cat("Mouse Banner")
    cat6 = Cat("Cat Danvers")
    as6.enqueue(dog5)
    as6.enqueue(cat4)
    as6.enqueue(dog6)
    as6.enqueue(cat5)
    as6.enqueue(dog7)
    as6.enqueue(cat6)
    assert as6.dequeue("cat") == cat4
    assert as6.dequeue("cat") == cat5
    assert as6.dequeue("dog") == dog5
    assert as6.dequeue("dog") == dog6
    assert as6.dequeue("cat") == cat6
    assert as6.dequeue("dog") == dog7
def test_enqueue_dequeue_dog():
    as2 = AnimalShelter("RedRover")
    dog2 = Dog("Sherlock Hounds")
    as2.enqueue(dog2)
    as2.dequeue("dog").name == "Sherlock Hounds"
def test_enqueue_dog():
    as1 = AnimalShelter("PAWS")
    dog1 = Dog("Rowdy Roddy Pawper")
    assert as1.enqueue(dog1) == "success"