コード例 #1
0
    def test_find_min_returns_the_minimum_data(self):
        minimum = 0
        heap = MinHeap()
        heap.insert(42)
        heap.insert(minimum)
        heap.insert(1)

        self.assertEqual(heap.find_min(), minimum)
コード例 #2
0
    def test_size_decrements_on_extract_min(self):
        heap = MinHeap()
        heap.insert(1)
        heap.insert(2)

        self.assertEqual(heap.size, 2)

        heap.extract_min()
        self.assertEqual(heap.size, 1)

        heap.extract_min()
        self.assertEqual(heap.size, 0)
コード例 #3
0
    def test_size_increments_on_insertion(self):
        heap = MinHeap()
        self.assertEqual(heap.size, 0)

        heap.insert(12)
        self.assertEqual(heap.size, 1)

        heap.insert(42)
        self.assertEqual(heap.size, 2)
コード例 #4
0
    def test_insert_preserves_heap_order(self):
        heap = MinHeap()
        heap.insert(4)  # 4
        heap.insert(5)  # 4 5
        heap.insert(3)  # 3 5 4
        heap.insert(2)  # 2 3 4 5

        self.assertEqual(heap._store[1], 2)
        self.assertEqual(heap._store[2], 3)
        self.assertEqual(heap._store[3], 4)
        self.assertEqual(heap._store[4], 5)
コード例 #5
0
 def test_insert_appends_data(self):
     data = 3
     heap = MinHeap()
     heap.insert(data)
     self.assertEqual(heap._store[1], data)
コード例 #6
0
    def test_extract_min_maintains_the_heap_order(self):
        heap = MinHeap()
        heap.insert(1)
        heap.insert(2)
        heap.insert(3)
        heap.insert(4)
        heap.insert(5)

        self.assertEqual(heap.extract_min(), 1)
        self.assertEqual(heap.find_min(), 2)

        self.assertEqual(heap.extract_min(), 2)
        self.assertEqual(heap.find_min(), 3)
コード例 #7
0
 def test_extract_min_raises_IndexError_when_heap_is_empty(self):
     with self.assertRaises(IndexError):
         MinHeap().extract_min()