Exemple #1
0
def test_delete():
    beap = VerifiedBeap()
    beap.arr = BEAP_DATA.copy()
    beap.height = 6

    res = []
    while beap.arr:
        res.append(beap.arr[0])
        beap.delete(0, 0)
        beap.check_invariants()

    assert res == sorted(res, reverse=True)
Exemple #2
0
def test_insert_remove_random():
    beap = VerifiedBeap()
    items = []
    res = []

    RANGE = 100
    for i in range(RANGE):
        v = random.randrange(RANGE * 2)
        items.append(v)
        beap.insert(v)
        beap.check_invariants()

    while items:
        idx = random.randrange(len(items))
        v = items.pop(idx)
        beap.remove(v)
        beap.check_invariants()

    assert len(beap.arr) == 0
Exemple #3
0
def test_insert():
    beap = VerifiedBeap()
    data = sorted(BEAP_DATA)
    for v in data:
        beap.insert(v)
        beap.check_invariants()
    # Doesn't work and doesn't have to work, as there're many different
    # partial orderings compatible with beap.
    #assert beap.arr == BEAP_DATA

    beap2 = VerifiedBeap()
    data = sorted(BEAP_DATA, reverse=True)
    for v in data:
        beap2.insert(v)
        beap2.check_invariants()

    for i in range(101):
        res1 = bool(beap.search(i))
        res2 = bool(beap2.search(i))
        assert res1 == res2
Exemple #4
0
def test_invariants():
    beap = VerifiedBeap()
    beap.arr = BEAP_DATA.copy()
    beap.height = 6
    beap.check_invariants()

    beap.arr[0], beap.arr[1] = beap.arr[1], beap.arr[0]
    try:
        beap.check_invariants()
        failed = True
    except AssertionError:
        failed = False
    assert not failed, "Invariant checks don't work"

    beap.arr = BEAP_DATA.copy()
    beap.arr[0], beap.arr[len(beap.arr) - 1] = beap.arr[len(beap.arr) - 1], beap.arr[0]
    try:
        beap.check_invariants()
        failed = True
    except AssertionError:
        failed = False
    assert not failed, "Invariant checks don't work"
Exemple #5
0
def test_insert_trace_few():
    beap = VerifiedBeap()

    beap.insert(1)
    assert beap.height == 0
    assert beap.arr == [1]
    beap.check_invariants()

    beap.insert(2)
    assert beap.height == 1
    assert beap.arr == [2, 1]
    beap.check_invariants()

    beap.insert(3)
    assert beap.height == 1
    assert beap.arr == [3, 1, 2]
    beap.check_invariants()

    beap.insert(4)
    assert beap.height == 2
    assert beap.arr == [4, 3, 2, 1]
    beap.check_invariants()

    beap.insert(5)
    assert beap.height == 2
    assert beap.arr == [5, 3, 4, 1, 2]
    beap.check_invariants()

    beap.insert(6)
    assert beap.height == 2
    assert beap.arr == [6, 3, 5, 1, 2, 4]
    beap.check_invariants()

    beap.insert(7)
    assert beap.height == 3
    assert beap.arr == [7, 6, 5, 3, 2, 4, 1]
    beap.check_invariants()