def test_traverse_breath_first():
    tree = BinarySearchTree()
    tree.add('apples')
    tree.add('cucumbers')
    tree.add('bananas')

    items = list(tree.traverse_breath_first())

    assert items == ['apples', 'cucumbers', 'bananas']
def test_traverse_for_loop_post_order():
    tree = BinarySearchTree()
    tree.add('apples')
    tree.add('cucumbers')
    tree.add('bananas')

    items = []

    for item in tree.traverse_breath_first():
        items.append(item)

    assert items == ['apples', 'cucumbers', 'bananas']
def test_breadth_one():
    fruits = BinarySearchTree()
    fruits.add('bananas')
    fruits.add('apples')
    fruits.add('carrots')
    fruits.add('mango')
    fruits.add('pear')
    fruits.add('cake')
    fruits.add('cookies')
    fruits.add('beer')
    fruits.add('whiskey')
    expected = [
        'bananas', 'apples', 'carrots', 'cake', 'mango', 'beer', 'cookies',
        'pear', 'whiskey'
    ]

    items = []

    for item in fruits.traverse_breath_first():
        items.append(item)
    assert expected == items