def test_persistent(self): #load with numbers numbers = [x for x in range(1, 1000)] random.shuffle(numbers) for number in numbers: self.btree.insert(IntClass(number), IntClass(100 + number)) #serialize and deserialize again treejson = self.btree.to_JSON() self.leaffactory = BTreeFileLeafFactory( os.path.join(self.tempdir, "page"), ".index") self.btree = BTree.from_JSON(treejson, IntClass, IntClass, self.leaffactory) #check for numbers for number in numbers: leaf = self.btree.root.search(IntClass(number)) leaf.ensure_load() self.assertIn(number, [key.integer for key in leaf.keys]) self.assertGreater(len(self.leaffactory.allocated_leaves), 2) #test delete to check if parent correctly set on all nodes and tree works random.shuffle(numbers) for number in numbers: leaf = self.btree.root.search(IntClass(number)) leaf.ensure_load() self.assertIn(number, [ key.integer for key in self.btree.root.search(IntClass(number)).keys ]) self.assertIn(100 + number, [ value.integer for value in self.btree.root.search(IntClass(number)).values ]) self.btree.remove(IntClass(number)) leaf = self.btree.root.search(IntClass(number)) leaf.ensure_load() self.assertNotIn(number, [ key.integer for key in self.btree.root.search(IntClass(number)).keys ]) self.assertNotIn(100 + number, [ value.integer for value in self.btree.root.search(IntClass(number)).values ]) self.leaffactory.cleanup() self.assertEqual(0, len(self.btree.root)) self.assertEqual([], self.btree.root.childs[0].keys) self.assertEqual([], self.btree.root.childs[0].values) self.assertEqual(1, len(self.leaffactory.allocated_leaves))
def test_persistent(self): # load with numbers numbers = [x for x in range(1, 1000)] random.shuffle(numbers) for number in numbers: self.btree.insert(IntClass(number), IntClass(100 + number)) # serialize and deserialize again treejson = self.btree.to_JSON() self.leaffactory = BTreeFileLeafFactory(os.path.join(self.tempdir, "page"), ".index") self.btree = BTree.from_JSON(treejson, IntClass, IntClass, self.leaffactory) # check for numbers for number in numbers: leaf = self.btree.root.search(IntClass(number)) leaf.ensure_load() self.assertIn(number, [key.integer for key in leaf.keys]) self.assertGreater(len(self.leaffactory.allocated_leaves), 2) # test delete to check if parent correctly set on all nodes and tree works random.shuffle(numbers) for number in numbers: leaf = self.btree.root.search(IntClass(number)) leaf.ensure_load() self.assertIn(number, [key.integer for key in self.btree.root.search(IntClass(number)).keys]) self.assertIn(100 + number, [value.integer for value in self.btree.root.search(IntClass(number)).values]) self.btree.remove(IntClass(number)) leaf = self.btree.root.search(IntClass(number)) leaf.ensure_load() self.assertNotIn(number, [key.integer for key in self.btree.root.search(IntClass(number)).keys]) self.assertNotIn(100 + number, [value.integer for value in self.btree.root.search(IntClass(number)).values]) self.leaffactory.cleanup() self.assertEqual(0, len(self.btree.root)) self.assertEqual([], self.btree.root.childs[0].keys) self.assertEqual([], self.btree.root.childs[0].values) self.assertEqual(1, len(self.leaffactory.allocated_leaves))
def setUp(self): self.tempdir = tempfile.mkdtemp() self.leaffactory = BTreeFileLeafFactory(os.path.join(self.tempdir, "page"), ".index") self.btree = BTree(50, IntClass, IntClass, self.leaffactory)
def setUp(self): self.tempdir = tempfile.mkdtemp() self.leaffactory = BTreeFileLeafFactory( os.path.join(self.tempdir, "page"), ".index") self.btree = BTree(50, IntClass, IntClass, self.leaffactory)