Beispiel #1
0
def test_rotation_more_RedBlackTree():
    db = connect("test.dbdb")
    db.set("kobe", "stillyoung")
    db.set("pavlos", "aged")
    db.set("rahul", "aged")
    db.commit()
    db.close()
    newdb = connect("test.dbdb")
    assert newdb.get("pavlos") == "aged"
    newdb.close()
    os.remove('test.dbdb')
Beispiel #2
0
def test_commit_RedBlackTree():
    db = connect("test.dbdb")
    db.set("rahul", "aged")
    db.set("pavlos", "aged")
    db.set("kobe", "stillyoung")
    db.close()
    db = connect("test.dbdb")
    with raises(KeyError):
        db.get("pavlos")
    db.close()
    os.remove('test.dbdb')
Beispiel #3
0
def test_basic():
    db = connect("test.dbdb")
    db.set(2, "aged")
    db.set(1, "gd")
    db.set(4, "stillyoung")
    db.set(5, "stillyoung")
    db.set(9, "stillyoung")
    db.set(3, "stillyoung")
    db.set(6, "stillyoung")
    db.set(7, "stillyoung")
    db.commit()
    db.close()
    newdb = connect("test.dbdb")
    assert newdb.get(2) == "aged"
    newdb.close()
    os.remove('test.dbdb')
Beispiel #4
0
def test_store_ValueRef():
    ref = ValueRef()
    db = connect('test.dbdb')
    storage = db._storage
    ref._referent = '007'
    ref.store(storage)
    assert ref.get(storage) == '007'
    os.remove('test.dbdb')
Beispiel #5
0
def test_follow_RedBlackTree():
    db = connect('test.dbdb')
    storage = db._storage
    rbtree = RedBlackTree(storage)
    rbtree.set('1', '2')
    rbtree.set('2', '3')
    root = rbtree._follow(rbtree._tree_ref)
    assert root.key == '1'
    os.remove('test.dbdb')
Beispiel #6
0
def test_insert_RedBlackTree():
    db = connect('test.dbdb')
    storage = db._storage
    rbtree = RedBlackTree(storage)
    root = rbtree._follow(rbtree._tree_ref)
    value_ref = ValueRef('2')
    rbtree._tree_ref = rbtree._insert(root, '1', value_ref)
    assert rbtree._tree_ref._referent.key == '1'
    os.remove('test.dbdb')
Beispiel #7
0
def test_get_set_RedBlackTree():
    db = connect('test.dbdb')
    storage = db._storage
    rbtree = RedBlackTree(storage)
    rbtree.set('1', 'aaa')
    rbtree.set('2', 'bbb')
    rbtree.set('3', 'ccc')
    assert rbtree.get('3') == 'ccc'
    os.remove('test.dbdb')
Beispiel #8
0
def test_store_refs_RedBlackNode():
    ref = ValueRef()
    db = connect('test.dbdb')
    storage = db._storage
    ref._referent = '000'
    node = RedBlackNode(ValueRef(), '1', ref, ValueRef(), ValueRef())
    node.store_refs(storage)
    assert node.value_ref.get(storage) == '000'
    os.remove('test.dbdb')
Beispiel #9
0
def test_referent_to_bytes_RedBlackNodeRef():
    ref = RedBlackNodeRef()
    db = connect('test.dbdb')
    storage = db._storage
    referent = RedBlackNode(ValueRef(), '1', ValueRef(), ValueRef(),
                            ValueRef())
    bytes = ref.referent_to_bytes(referent)
    node = ref.bytes_to_referent(bytes)
    assert node.key == '1'
    os.remove('test.dbdb')
Beispiel #10
0
def test__find_max_RedBlackTree():
    db = connect('test.dbdb')
    storage = db._storage
    rbtree = RedBlackTree(storage)
    rbtree.set('1', 2)
    rbtree.set('2', 3)
    rbtree.set('3', 4)
    root = rbtree._follow(rbtree._tree_ref)
    rbtree._find_max(root).key == '3'
    os.remove('test.dbdb')
Beispiel #11
0
def test_prepare_to_store_RedBlackNodeRef():
    ref = RedBlackNodeRef()
    db = connect('test.dbdb')
    storage = db._storage
    ref._referent = RedBlackNode(ValueRef(), '1', ValueRef(), ValueRef(),
                                 ValueRef())
    ref.prepare_to_store(storage)
    node = ref.get(storage)
    assert type(node) == RedBlackNode
    assert node.key == '1'
    os.remove('test.dbdb')
Beispiel #12
0
def test_red_black_tree():
    db = connect('test.dbdb')
    storage = db._storage
    rbtree = RedBlackTree(storage)
    rbtree.set(13, 'aaa')
    rbtree.set(8, 'bbb')
    rbtree.set(17, 'ccc')
    rbtree.set(1, 'ddd')
    rbtree.set(11, 'eee')
    rbtree.set(6, 'fff')
    rbtree.set(15, 'ggg')
    rbtree.set(25, 'hhh')
    rbtree.set(22, 'iii')
    rbtree.set(27, 'jjj')
    root = rbtree._follow(rbtree._tree_ref)
    leftNode = root._follow(root.left_ref)
    rightNode = root._follow(root.right_ref)
    leftleftNode = leftNode._follow(leftNode.left_ref)
    leftrightNode = leftNode._follow(leftNode.right_ref)
    rightleftNode = rightNode._follow(rightNode.left_ref)
    rightrightNode = rightNode._follow(rightNode.right_ref)
    leftleftrightNode = leftleftNode._follow(leftleftNode.right_ref)
    rightrightleftNode = rightrightNode._follow(rightrightNode.left_ref)
    rightrightrightNode = rightrightNode._follow(rightrightNode.right_ref)

    q = Queue()
    q.put(root)
    q.put(leftNode)
    q.put(rightNode)
    q.put(leftleftNode)
    q.put(leftrightNode)
    q.put(rightleftNode)
    q.put(rightrightNode)
    q.put(leftleftrightNode)
    q.put(rightrightleftNode)
    q.put(rightrightrightNode)

    #level = 1
    assert q.empty() == False
    node1 = q.get()
    assert node1.key == 13
    assert node1._follow(node1.color_ref) == "black"
    # level = 2
    node2 = q.get()
    assert node2.key == 8
    assert node2._follow(node2.color_ref) == "red"
    node3 = q.get()
    assert node3.key == 17
    assert node3._follow(node3.color_ref) == "red"
    # level = 3
    node4 = q.get()
    assert node4.key == 1
    assert node4._follow(node4.color_ref) == "black"
    node5 = q.get()
    assert node5.key == 11
    assert node5._follow(node5.color_ref) == "black"
    node6 = q.get()
    assert node6.key == 15
    assert node6._follow(node6.color_ref) == "black"
    node7 = q.get()
    assert node7.key == 25
    assert node7._follow(node7.color_ref) == "black"
    # level = 4
    node8 = q.get()
    assert node8.key == 6
    assert node8._follow(node8.color_ref) == "red"
    node9 = q.get()
    assert node9.key == 22
    assert node9._follow(node9.color_ref) == "red"
    node10 = q.get()
    assert node10.key == 27
    assert node10._follow(node10.color_ref) == "red"

    os.remove('test.dbdb')
Beispiel #13
0
def test_init_RedBlackTree():
    db = connect('test.dbdb')
    storage = db._storage
    tree = RedBlackTree(storage)
    assert type(tree) == RedBlackTree
    os.remove('test.dbdb')