def test_after_single_push_extract_max_removes_and_returns_value(self):
     heap = MaxHeap()
     heap.insert(0)
     assert heap.size() == 1
     assert not heap.is_empty()
     assert heap.extract_max() == 0
     assert heap.size() == 0
     assert heap.is_empty()
 def test_after_single_push_delete_max_removes_the_value(self):
     heap = MaxHeap()
     heap.insert(0)
     assert heap.size() == 1
     assert not heap.is_empty()
     heap.delete_max()
     assert heap.size() == 0
     assert heap.is_empty()
    def test_two_pushes_and_two_extract_max_correct_values_empty_at_end(self):
        heap = MaxHeap()
        heap.insert(0)
        heap.insert(1)

        assert heap.size() == 2
        assert not heap.is_empty()
        assert heap.extract_max() == 1
        assert heap.size() == 1
        assert not heap.is_empty()
        assert heap.extract_max() == 0
        assert heap.size() == 0
        assert heap.is_empty()
 def test_heap_is_not_empty_after_insert(self):
     heap = MaxHeap()
     heap.insert(0)
     assert not heap.is_empty()
 def test_empty_heap_is_empty(self):
     heap = MaxHeap()
     assert heap.is_empty()