def test_insere(self): arr_test = [1, -8, -11, -14] arr_heap_esperado = [ [None, -12, -9, -6, -4, -3, -5, -2, -1, 1], [None, -12, -9, -6, -8, -3, -5, -2, -1, -4], [None, -12, -11, -6, -9, -3, -5, -2, -1, -4], [None, -14, -12, -6, -9, -3, -5, -2, -1, -4], ] #testa inserção no heap vazio for val_inserir in arr_test: objHeap = MinHeap() objHeap.insere(val_inserir) self.assertListEqual( [None, val_inserir], objHeap.arr_heap, f"Inserção incorreta ao inserir o valor {val_inserir} no heap {[None,12,9,6,4,3,5,2,1]}, esperado: {[None,val_inserir]} obtido: {objHeap.arr_heap}" ) for i, val_inserir in enumerate(arr_test): objHeap = MinHeap() objHeap.arr_heap = [None, -12, -9, -6, -4, -3, -5, -2, -1] objHeap.insere(val_inserir) self.assertListEqual( arr_heap_esperado[i], objHeap.arr_heap, f"Inserção incorreta ao inserir o valor {val_inserir} no heap {[None,12,9,6,4,3,5,2,1]}, esperado: {arr_heap_esperado[i]} obtido: {objHeap.arr_heap}" )
def test_refaz(self): #refaz um heap simples de 3 nodos obj_heap = MinHeap() #heap que nao precisa alteração obj_heap.arr_heap = [None, -12, -9, -6] obj_heap.refaz(1) self.assertListEqual( obj_heap.arr_heap, [None, -12, -9, -6], f"A operação refaz não foi realizada corretamente. Lista de entrada: {[None,12,9,6]}" ) #heap pequeno, faz uma alteração a esquerda obj_heap.arr_heap = [None, -12, -15, -6] obj_heap.refaz(1) self.assertListEqual( obj_heap.arr_heap, [None, -15, -12, -6], f"A operação refaz não foi realizada corretamente. Lista de entrada: {[None,12,15,6]}" ) #heap pequeno, faz uma alteração a direita obj_heap.arr_heap = [None, -12, -9, -15] obj_heap.refaz(1) self.assertListEqual( obj_heap.arr_heap, [None, -15, -9, -12], f"A operação refaz não foi realizada corretamente. Lista de entrada: {[None,12,9,15]}" ) #heap grande, a partir do filho a esquerda faz uma alteração a direita e depois a esquerda obj_heap.arr_heap = [None, -12, -2, -6, -4, -5, 3, 0, -1, 1, -3, 2] obj_heap.refaz(2) self.assertListEqual( obj_heap.arr_heap, [None, -12, -5, -6, -4, -3, 3, 0, -1, 1, -2, 2], f"A operação refaz não foi realizada corretamente. Resultado esperado: {[None,12,5,6,4,3,-3,0,1,-1, 2, -2]} resultado obtido: {obj_heap.arr_heap}. Lista de entrada: {[None,12,2,6,4,5,-3,0,1,-1, 3, -2]}" ) #heap grande, a partir do filho a esquerda faz uma alteração a esquerda e depois a direita print("-------------") obj_heap.arr_heap = [None, -12, -2, -4, -6, -5, 3, 0, 1, -3, -3, 2] obj_heap.refaz(2) self.assertListEqual( obj_heap.arr_heap, [None, -12, -6, -4, -3, -5, 3, 0, 1, -2, -3, 2], f"A operação refaz não foi realizada corretamente. Resultado esperado: {[None,12,6,4,3,5,-3,0,-1,2, 3, -2]} resultado obtido: {obj_heap.arr_heap}. Lista de entrada: {[None,12,2,4,6,5,-3,0,-1,3, 3, -2]}" )
def test_retira_min(self): obj_heap = MinHeap() obj_heap.arr_heap = [None, -12, -9, -4, -7, -5, 3, 0, 1, -2, -3, 2] min_val = obj_heap.retira_min() self.assertEqual( min_val, -12, f"Não foi retirado o menor valor (-12) e sim {min_val} ") self.assertListEqual( obj_heap.arr_heap, [None, -9, -7, -4, -2, -5, 3, 0, 1, 2, -3], f"A operação test_retira_min não finalizou com o Heap esperado. ") obj_heap.arr_heap = [None, -12] min_val = obj_heap.retira_min() self.assertEqual( min_val, -12, f"Não foi retirado o menor valor (-12) e sim {min_val} ") self.assertListEqual( obj_heap.arr_heap, [None], f"A operação test_retira_min não finalizou com o Heap esperado. ")