static void deque_test_enqueue_dequeue(deque_t q, void (*in)(deque_t, element_t), element_t (*out)(deque_t), int rand_n, double rand_d) { int i; double* d; SHOW_FUNC_INFO(in, out); srand(time(0)); for (i = 0; i < 10; ++i) { d = (double*)malloc(sizeof(*d)); *d = rand() % rand_n * rand_d; in(q, d); fprintf(stdout, "[%02d] deque enqueue element : %lf\n", i, *d); } fprintf(stdout, "deque size is : %d ===>\n", deque_size(q)); d = deque_peek_front(q); fprintf(stdout, "\tfront element of deque : %lf\n", *d); d = deque_peek_rear(q); fprintf(stdout, "\trear element of deque: %lf\n", *d); while (!deque_empty(q)) { d = out(q); fprintf(stdout, "deque dequeue element : %lf\n", *d); free(d); } }
void simple_test( void){ deque dq; double a; int i, status; fprintf( stdout, "Testing deque_allocate: " ); dq = deque_alloc(); if( dq != NULL ){ fprintf( stdout, "success!\n"); }else{ fprintf( stdout, "failed!\n"); } fprintf( stdout, "Testing deque_empty: "); if( deque_empty( dq) ){ fprintf( stdout, "success!\n"); }else{ fprintf( stdout, "failed!\n"); } a = 2.5; fprintf( stdout, "Testing deque_push_back, value=%1.2g: ", a); if( deque_push_back( dq, a ) == DEQUE_SUCCESS ){ fprintf( stdout, "success!\n"); }else{ fprintf( stdout, "failed!\n"); } a = 3.14159; fprintf( stdout, "Testing deque_peek_back: "); if( deque_peek_back( dq, &a) == DEQUE_SUCCESS ){ fprintf( stdout, "success!, value=%1.2g\n", a); }else{ fprintf( stdout, "failed, value=%1.2g\n", a); } fprintf( stdout, "Testing deque_size: "); fprintf( stdout, "size=%d\n", deque_size( dq)); fprintf( stdout, "Testing deque_pop_back: "); a = 3.14159; if( deque_pop_back( dq, &a) == DEQUE_SUCCESS ){ fprintf( stdout, "success!, value=%1.2g\n", a); }else{ fprintf( stdout, "failed!, value=%1.2g\n", a); } a = 3.14159; fprintf( stdout, "Testing deque_pop_back on empty deque: "); if( deque_pop_back( dq, &a) != DEQUE_EMPTY ){ fprintf( stdout, "failed!, value=%1.2g\n", a); }else{ fprintf( stdout, "success!,\n"); fprintf( stdout, " caught empty deque, value=%1.2g\n", a); } a = 2.5; fprintf( stdout, "Testing deque_push_front, value=%1.2g: ", a); if( deque_push_front( dq, a ) == DEQUE_SUCCESS ){ fprintf( stdout, "success!\n"); }else{ fprintf( stdout, "failed!\n"); } a = 3.14159; fprintf( stdout, "Testing deque_peek_front: "); if( deque_peek_front( dq, &a) == DEQUE_SUCCESS ){ fprintf( stdout, "success!, value=%1.2g\n", a); }else{ fprintf( stdout, "failed, value=%1.2g\n", a); } fprintf( stdout, "Testing deque_size: "); fprintf( stdout, "size=%d\n", deque_size( dq)); fprintf( stdout, "Testing deque_pop_front: "); a = 3.14159; if( deque_pop_front( dq, &a) == DEQUE_SUCCESS ){ fprintf( stdout, "success!, value=%1.2g\n", a); }else{ fprintf( stdout, "failed!, value=%1.2g\n", a); } a = 3.14159; fprintf( stdout, "Testing deque_pop_front on empty deque: "); if( deque_pop_front( dq, &a) != DEQUE_EMPTY ){ fprintf( stdout, "failed!, value=%1.2g\n", a); }else{ fprintf( stdout, "success!,\n"); fprintf( stdout, " caught empty deque, value=%1.2g\n", a); } fprintf( stdout, "Testing deque_get_item: "); for( i=0; i<5; i++ ){ a = (double) i + 0.545; if( deque_push_back( dq, a) != DEQUE_SUCCESS ){ fprintf( stderr, "deque push back failed!\n" ); deque_free( dq); return; } a = (-1. - (double) i) + 0.545; if( deque_push_front( dq, a) != DEQUE_SUCCESS ){ fprintf( stderr, "deque push front failed!\n" ); deque_free( dq); return; } } for( i=0; i<10; i++){ status = deque_get_item( dq, i, &a); if( status != DEQUE_SUCCESS || a != (-5. + (double) i) + 0.545 ){ fprintf( stderr, "deque get_item failed!\n" ); deque_free( dq); return; } } a = 3.14159; status = deque_get_item( dq, 11, &a); if( status != DEQUE_OUT_OF_BOUNDS || a != 3.14159 ){ fprintf( stderr, "deque get_item out of bounds failed!\n"); deque_free( dq); } fprintf( stdout, "success!\n"); deque_free( dq); }