def test_push(self): count = self.SIZE head = count - 1 h = None for i in range(count): h = heap.push(h, i) self.assertTrue(heap.is_consistent(h)) self.assertEqual(node.count(h), count) self.assertEqual(node.value(h), head)
def test_sort(self): sample_list = [random.randint(1, 100000) for i in range(self.SIZE)] h = None for i in sample_list: h = heap.push(h, i) sorted_list = sorted(sample_list, reverse=True) for i in sorted_list: h, val = heap.pop(h) self.assertEqual(val, i) self.assertIsNone(h)
def test_complete_branch_aware_adding(self): h = None h = heap.push(h, 1) self.assertTrue(heap.is_complete(h)) self.assertTrue(heap.is_consistent(h)) h = heap.push(h, 2) self.assertFalse(heap.is_complete(h)) self.assertTrue(heap.is_complete(node.left(h))) self.assertIsNone(node.right(h)) self.assertTrue(heap.is_consistent(h)) h = heap.push(h, 3) self.assertTrue(heap.is_complete(h)) self.assertTrue(heap.is_consistent(h)) h = heap.push(h, 5) self.assertFalse(heap.is_complete(h)) self.assertFalse(heap.is_complete(node.left(h))) self.assertTrue(heap.is_complete(node.right(h))) self.assertTrue(heap.is_consistent(h))
def test_pop(self): h = None for i in range(self.SIZE): h = heap.push(h, i) self.assertTrue(heap.is_consistent(h)) for i in reversed(range(self.SIZE)): h, val = heap.pop(h) self.assertEqual(val, i) self.assertTrue(heap.is_consistent(h)) self.assertIsNone(h)
def test_is_complete(self): h = None self.assertTrue(heap.is_complete(h)) for i in range(11): if i in [0, 1, 3, 7]: self.assertTrue(heap.is_complete(h)) else: self.assertFalse(heap.is_complete(h)) h = heap.push(h, i) self.assertFalse(heap.is_complete(h))
def test_enter_smaller_value(self): h = heap.push(None, 5) h = heap.push(h, 3) self.assertEqual(node.count(h), 2)
def test_enter_larger_value(self): h = heap.push(None, 3) h = heap.push(h, 5) self.assertEqual(node.count(h), 2)