class TestBPlusTree(TestCase):
    def setUp(self) -> None:
        self.bplustree = BPlusTree()
        self.random_list = random.sample(range(1, 100), 20)
        for i in self.random_list:
            self.bplustree[i] = 'test' + str(i)
        random.shuffle(self.random_list)

    def test_query(self):
        for i in self.random_list:
            self.assertEqual(self.bplustree.query(i), 'test' + str(i))

    def test_change(self):
        self.assertTrue(self.bplustree.change(self.random_list[0], 'try'))
        self.assertEqual(self.bplustree.query(self.random_list[0]), 'try')

    def test_insert(self):
        self.bplustree.show()
        i = random.randint(1, 100)
        print('Insert ' + str(i))
        self.bplustree[i] = 'test' + str(i)
        self.bplustree.show()

    def test_delete(self):
        print(self.random_list)
        for i in self.random_list:
            print('Delete ' + str(i))
            self.bplustree.delete(i)
            self.bplustree.show()
def demo():
    bplustree = BPlusTree()
    print('read file ./partfile.txt')
    keys = []
    with open("partfile.txt", 'rb') as reader:
        bplustree.readfile(reader)

    with open("partfile.txt", 'r') as reader:
        for line in reader:
            s = line.split(maxsplit=1)
            keys += [s[0]]

    for i in range(len(keys)):
        bplustree.delete(keys[i])
        if i % 1000 == 0:
            print('Delete ' + keys[i] + ' item')
Example #3
0
tree.insert('zi', b'35')
tree.insert('zj', b'36')
tree.insert('zk', b'37')
tree.display()

# In[5]:

for key, value in tree.items():
    print(key, value)

# ### 2. Delete: key를 Tree에서 삭제
# * 삭제 과정에서 redistribute, merge 수행을 확인할 수 있다.

# In[6]:

tree.delete('j')  #redistribute leaf
tree.delete('n')  #delete entry
tree.delete('m')  #merge leaf & merge parent

# In[7]:

tree.delete('zg')
tree.display()

# In[8]:

tree.delete('zk')
tree.display()

# In[9]: