hausers@0: #include hausers@0: #include hausers@0: #include hausers@0: hausers@0: hausers@0: #include "CUnit/Basic.h" hausers@0: #include "PriorityQueue.h" hausers@0: hausers@0: #ifndef DEBUG hausers@0: #define DEBUG hausers@0: #endif hausers@0: hausers@0: static PrioQueueStruc *Q; hausers@0: static char *first,*second,*third; hausers@0: hausers@0: int init_suite (void) { Me@3: if (NULL == (Q= makePrioQ())) return -1; hausers@0: else return 0; hausers@0: } hausers@0: hausers@0: int clean_suite (void) { hausers@0: return 0; hausers@0: } hausers@0: hausers@0: void testInsertAElement (void) { hausers@0: hausers@0: first= malloc(3*sizeof(char)); hausers@0: first= "foo"; hausers@0: hausers@0: printf("SIZE = %d | ",Q->size); hausers@0: printf("MAXSIZE = %d | ",Q->maxSize); hausers@0: CU_ASSERT(true == insertPrioQ(first,0,Q)); hausers@0: printPrioQ(Q); hausers@0: printf("SIZE = %d | ",Q->size); hausers@0: printf("MAXSIZE = %d | ",Q->maxSize); hausers@0: } hausers@0: hausers@0: void testInsertOneElement (void) { hausers@0: hausers@0: first= malloc(3*sizeof(char)); hausers@0: first= "ten"; hausers@0: hausers@0: CU_ASSERT(true == insertPrioQ(first,10,Q)); hausers@0: printPrioQ(Q); hausers@0: } hausers@0: hausers@0: void testPopOneElement (void) { hausers@0: popPrioQ(Q); hausers@0: } hausers@0: hausers@0: void testInsertSorted (void) { hausers@0: second= malloc(4*sizeof(char)); hausers@0: second= "five"; hausers@0: hausers@0: CU_ASSERT(true == insertPrioQ(second,5,Q)); hausers@0: printPrioQ(Q); hausers@0: } hausers@0: hausers@0: void testInsertAndHeapify (void) { hausers@0: third= malloc(6*sizeof(char)); hausers@0: third= "twenty"; hausers@0: hausers@0: CU_ASSERT(true == insertPrioQ(third,20,Q)); hausers@0: printPrioQ(Q); hausers@0: } hausers@0: hausers@0: void testGetFirstElement (void) { hausers@0: void* elem; hausers@0: hausers@0: elem= getFirstPrioQ(Q); hausers@0: CU_ASSERT(elem == third); hausers@0: printPrioQ(Q); hausers@0: } hausers@0: hausers@0: void testSwap (void) { hausers@0: swap(Q,0,2); hausers@0: printPrioQ(Q); hausers@0: swap(Q,2,0); hausers@0: printPrioQ(Q); hausers@0: } hausers@0: hausers@0: void testPop (void) { hausers@0: void *elem; hausers@0: hausers@0: elem= popPrioQ(Q); hausers@0: CU_ASSERT(elem == third); hausers@0: printPrioQ(Q); hausers@0: printf("size = %d",Q->size); hausers@0: elem= popPrioQ(Q); hausers@0: CU_ASSERT(elem == first); hausers@0: printPrioQ(Q); hausers@0: printf("size = %d",Q->size); hausers@0: elem= popPrioQ(Q); hausers@0: CU_ASSERT(elem == second); hausers@0: printPrioQ(Q); hausers@0: printf("size = %d",Q->size); hausers@0: } hausers@0: hausers@0: void testPopEmptyQueue (void) { hausers@0: void *elem; hausers@0: CU_ASSERT (NULL == (elem= popPrioQ(Q))); hausers@0: } hausers@0: hausers@0: void testEnlargeQueue (void) { hausers@0: int i; hausers@0: char *elem; hausers@0: for (i= 0; i<1163; i++) { hausers@0: elem= malloc(5*sizeof(char)); hausers@0: sprintf(elem,"%d",i); hausers@0: CU_ASSERT(true == insertPrioQ(elem,i,Q)); hausers@0: } hausers@0: } hausers@0: hausers@0: hausers@0: void testPopEnlargedQueue (void) { hausers@0: int i; hausers@0: char *elem; hausers@0: for (i= 1162; i>= 0; i--) { hausers@0: elem= popPrioQ(Q); hausers@0: CU_ASSERT(i == atoi(elem)); hausers@0: } hausers@0: CU_ASSERT(NULL == popPrioQ(Q)); hausers@0: } hausers@0: hausers@0: int main () { hausers@0: CU_pSuite pSuite= NULL; hausers@0: hausers@0: if (CUE_SUCCESS != CU_initialize_registry()) return CU_get_error(); hausers@0: hausers@0: pSuite= CU_add_suite("Simple Test Suite",init_suite, clean_suite); hausers@0: if (NULL == pSuite) { hausers@0: CU_cleanup_registry(); hausers@0: return CU_get_error(); hausers@0: } hausers@0: hausers@0: if (NULL == CU_add_test(pSuite,"test of insert first element",testInsertOneElement) || hausers@0: NULL == CU_add_test(pSuite,"test of insert sorted",testInsertSorted) || hausers@0: NULL == CU_add_test(pSuite,"test of insert and heapify",testInsertAndHeapify) || hausers@0: NULL == CU_add_test(pSuite,"test of swap",testSwap) || hausers@0: NULL == CU_add_test(pSuite,"test of get top element",testGetFirstElement) || hausers@0: NULL == CU_add_test(pSuite,"test of pop elements",testPop) || hausers@0: NULL == CU_add_test(pSuite,"test of pop an empty queue",testPopEmptyQueue) || hausers@0: NULL == CU_add_test(pSuite,"test of again a element",testInsertAElement) || hausers@0: NULL == CU_add_test(pSuite,"test of remove the element",testPopOneElement) || hausers@0: NULL == CU_add_test(pSuite,"test of enlarge queue",testEnlargeQueue) || hausers@0: NULL == CU_add_test(pSuite,"test of pop enlarged queue",testPopEnlargedQueue)) { hausers@0: hausers@0: hausers@0: hausers@0: CU_cleanup_registry(); hausers@0: return CU_get_error(); hausers@0: } hausers@0: hausers@0: hausers@0: CU_basic_set_mode(CU_BRM_VERBOSE); hausers@0: CU_basic_run_tests(); hausers@0: CU_cleanup_registry(); hausers@0: return CU_get_error(); hausers@0: }