Example #1
0
 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))
Example #2
0
 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())
Example #3
0
 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)
Example #4
0
    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())