def test_iter(self): heap = Heap(lambda a, b: a <= b) sequence = [5, 9, 3, 4, 6, 2, 0, 8, 7, 1] heap.extend(sequence) dump = [x for x in heap] self.assertEqual(len(sequence), len(dump)) self.assertEqual(0, dump[0]) self.assertEqual(set(sequence), set(dump))
def test_clear(self): heap = Heap(lambda a, b: a <= b) sequence = [5, 9, 3, 4, 6, 2, 0, 8, 7, 1] heap.extend(sequence) self.assertFalse(heap.is_empty()) heap.clear() self.assertTrue(heap.is_empty()) self.assertRaises(IndexError, heap.peek) self.assertRaises(IndexError, heap.extract) heap.insert(9) self.assertEqual(1, len(heap)) self.assertEqual(9, heap.peek()) self.assertEqual(9, heap.extract()) self.assertTrue(heap.is_empty())
def test_extend(self): heap = Heap(lambda a, b: a <= b) sequence = [5, 9, 3, 4, 6, 2, 0, 8, 7, 1] copy = [x for x in sequence] heap.extend(sequence) self.assertEqual(10, len(heap)) heap.extend(sequence) self.assertEqual(20, len(heap)) for i in range(10): self.assertEqual(i, heap.peek()) self.assertEqual(i, heap.extract()) self.assertEqual(20 - 2 * i - 1, len(heap)) self.assertEqual(i, heap.peek()) self.assertEqual(i, heap.extract()) self.assertEqual(20 - 2 * i - 2, len(heap)) self.assertEqual(copy, sequence)
def test_replace(self): heap = Heap(lambda a, b: a < b) sequence = [5, 9, 3, 4, 6, 2, 0, 8, 7, 1] self.assertRaises(IndexError, heap.peek) self.assertEqual(4, heap.replace(4)) self.assertRaises(IndexError, heap.peek) heap.extend(sequence) for result, item in zip(range(5), range(5, 10)): self.assertEqual(result, heap.replace(item)) for item in range(5): self.assertEqual(item, heap.replace(item)) self.assertEqual(5, heap.extract()) heap = Heap(lambda a, b: a > b) sequence = [5, 9, 3, 4, 6, 2, 0, 8, 7, 1] self.assertRaises(IndexError, heap.peek) self.assertEqual(4, heap.replace(4)) self.assertRaises(IndexError, heap.peek) heap.extend(sequence) for item, result in zip(reversed(range(5)), reversed(range(5, 10))): self.assertEqual(result, heap.replace(item)) for item in range(5, 10): self.assertEqual(item, heap.replace(item)) self.assertEqual(4, heap.extract())