void testInsert(void) { printf("Running insert test\n"); Heap heap = setupUnorderedHeap(); makeMaxHeap(heap); deleteFromHeap(heap, 4); insertIntoHeap(heap, newNode(14)); if (!isMaxHeap(heap) || heap->numNodes != 10) { printFailed("Not a max heap after deleting 4 and inserting 14"); return; } deleteFromHeap(heap, 1); insertIntoHeap(heap, newNode(5)); if (!isMaxHeap(heap) || heap->numNodes != 10) { printFailed("Not a max heap after reinserting 4"); return; } printPassed(); }
void testDelete(void) { printf("Running delete test\n"); Heap heap = setupUnorderedHeap(); makeMaxHeap(heap); deleteFromHeap(heap, 4); if (!isMaxHeap(heap) || heap->numNodes != 9) { printFailed("Not a max heap after deleting 4"); } printPassed(); }
/* * isMaxHeap * check whether it is a max-heap * return true if it's a max-heap, false when it's not * and -1, input heap doesn't exist */ int isMaxHeap(heap_t* heap, int pos){ if(!heap){ return -1; } int left = pos * 2; int right = left + 1; if( left > heap->size ) return true; if( heap->element[left] > heap->element[pos]) return false; if( right <= heap-> size ) { if( heap->element[right] > heap->element[pos]) return false; isMaxHeap(heap, right); } isMaxHeap(heap, left); return true; }
//testNum만큼 heapify를 검사하는 함수 void testIter(int testNum) { for( int i = 0; i < testNum; ++i ) { heap_t* testHeap = makeSampleMaxHeap(); _ASSERT( isMaxHeap( testHeap ) ); if( testHeap != nullptr ) { delete testHeap; testHeap = nullptr; } } }
//MaxHeapify된 Heap을 출력하고 MaxHeap이 맞는지 출력하는 함수 void test_heapify() { heap_t* testHeap = makeSampleMaxHeap(); printHeap( testHeap ); char* strIsMaxHeap = isMaxHeap( testHeap ) ? "This is Max Heap." : "This is not Max Heap."; printf( "%s\n" , strIsMaxHeap ); if( testHeap != nullptr ) { delete testHeap; testHeap = nullptr; } }
void testHeapify(heap_t* heap){ puts("\n<BEFORE Heapify>"); printHeap(heap); max_heapify(heap, 1); puts("<AFTER Heapify>"); int result = isMaxHeap(heap, 1); if(result<0) printf("Wrong input.\n"); else if(result) printf("Turned into MAX-HEAP\n"); else printf("NOT MAX-HEAP\n"); printHeap(heap); puts("=================\n"); return; }