def test_dequeue_three():
    shelter = Queue()

    shelter.enqueue({'type': 'dog', 'name': 'fido'})
    shelter.enqueue({'type': 'cat', 'name': 'mittens'})
    shelter.enqueue({'type': 'dog', 'name': 'bud'})
    # import pdb; pdb.set_trace()
    assert shelter.dequeue('cat') == 'mittens'
    assert shelter.dequeue('dog') == 'fido'
    assert shelter.dequeue('dog') == 'bud'
def test_dequeue_multiple():
    q = Queue()
    q.enqueue("one")
    q.enqueue("two")
    q.enqueue("three")
    q.enqueue("four")
    q.dequeue()
    actual = q.front.val
    expected = "two"
    assert actual == expected
def test_dequeue_one():
    shelter = Queue()

    shelter.enqueue({'type': 'dog', 'name': 'fido'})
    shelter.enqueue({'type': 'cat', 'name': 'mittens'})
    shelter.enqueue({'type': 'dog', 'name': 'bud'})

    assert shelter.dequeue('cat') == 'mittens'
def test_peek():
    q = Queue()
    q.enqueue("one")
    q.enqueue("two")
    q.enqueue("three")
    q.dequeue()
    q.dequeue()
    actual = q.peek()
    expected = "three"
    assert actual == expected
def test_enqueue_three():
    shelter = Queue()

    shelter.enqueue({'type': 'dog', 'name': 'fido'})
    shelter.enqueue({'type': 'cat', 'name': 'mittens'})
    shelter.enqueue({'type': 'dog', 'name': 'bud'})

    assert shelter.tail.value['name'] == 'bud'
def test_dequeue_missing_cat():
    shelter = Queue()
    shelter.enqueue("dog")
    shelter.enqueue("dog")
    shelter.enqueue("dog")
    shelter.enqueue("dog")
    actual = shelter.dequeue("cat")
    expected = "Null"
    assert actual == expected
def test_dequeue_invalid_preference():
    shelter = Queue()
    shelter.enqueue("dog")
    shelter.enqueue("dog")
    shelter.enqueue("dog")
    shelter.enqueue("dog")
    actual = shelter.dequeue("pig")
    expected = "Null"
    assert actual == expected
def test_dequeue():
    pass
    q = Queue()
    q.enqueue("dog")
    q.dequeue()
    actual = q.is_empty
    expected = True
def test_enqueue_multiple_cat_first():
    shelter = Queue()
    shelter.enqueue("cat")
    shelter.enqueue("dog")
    shelter.enqueue("dog")
    shelter.enqueue("cat")
    actual = shelter.front.animal_type
    expected = "cat"
    assert actual == expected
def test_enqueue_once():
    shelter = Queue()
    shelter.enqueue("dog")
    actual = shelter.front.animal_type
    expected = "dog"
    assert actual == expected
def test_dequeue_from_empty():
    shelter = Queue()
    actual = shelter.dequeue("cat")
    expected = "No animals available"
    assert actual == expected
def test_empty_shelter():
    shelter = Queue()
    actual = shelter.front
    expected = None
    assert actual == expected
def test_is_empty_is_false():
    q = Queue()
    q.enqueue("test")
    actual = q.is_empty()
    expected = False
    assert actual == expected
def test_is_empty_is_true():
    q = Queue()
    actual = q.is_empty()
    expected = True
    assert actual == expected
def test_enqueue():
    q = Queue()
    q.enqueue("sharp pointy teeth")
    actual = q.front.val
    expected = "sharp pointy teeth"
    assert actual == expected
def test_enqueue_one():
    shelter = Queue()

    shelter.enqueue({'type': 'dog', 'name': 'fido'})

    assert shelter.tail.value['type'] == 'dog'