/* t4sort.c (c)Copyright Sequiter Software Inc., 1990-1993. All rights reserved. */ /* Tests sorting. */ #include "d4all.h" #ifdef __TURBOC__ #pragma hdrstop #endif #include "t4test.h" CODE4 cb; DATA4 *data; FIELD4 *field ; TAG4 *tag ; SORT4 sort ; static int test_sort( D4DISPLAY *display, long num_sort ) { char sort_val[7] ; long sort_record_no, i_rec ; char *other_ptr, *data_ptr ; int rc ; /* sort4init() must be called before sort4put(). */ /* The sort data length is one; there is no extra data */ if ( sort4init( &sort, &cb, 6, 0 ) != 0 ) t4severe( t4err_sort, "01" ) ; d4display_str( display, " Putting Item: ", 1 ) ; for ( i_rec = 1; i_rec <= num_sort; i_rec++ ) { if ( d4display_quit( display ) ) return 1 ; if ( i_rec % 2000 == 0 || i_rec == num_sort ) { display->x = (int) 0 ; d4display_str( display, " Putting Item: ", 0 ) ; d4display_num( display, i_rec, 0 ) ; } c4ltoa45( i_rec, sort_val, 6 ) ; sort_val[6] = '\0' ; if ( sort4put( &sort, i_rec, sort_val, "" ) != 0 ) t4severe( t4err_sort, "02" ) ; } /* Specify that there will be no more calls to sort4put() */ d4display_str( display, " Initializing for gets . . . ", 1 ) ; if ( sort4get_init( &sort ) < 0 ) t4severe( t4err_sort, "03" ) ; for ( i_rec = 1; i_rec <= num_sort; i_rec++ ) { if ( d4display_quit( display ) ) return 1 ; if ( i_rec % 2000 == 0 || i_rec == num_sort ) { display->x = (int) 0 ; d4display_str( display, " Getting Item: ", 0 ) ; d4display_num( display, i_rec, 0 ) ; } rc = sort4get( &sort, &sort_record_no, (void **) &data_ptr, (void **) &other_ptr ) ; if ( rc < 0 ) t4severe( t4err_sort, "04" ) ; c4ltoa45( i_rec, sort_val, 6 ) ; if ( memcmp( data_ptr, sort_val, 6) != 0 ) t4severe( t4err_sort, "05" ) ; if ( sort_record_no != i_rec ) t4severe( t4err_sort, "06" ) ; } rc = sort4get( &sort, &sort_record_no, (void **) &data_ptr, (void **) &other_ptr ) ; if ( rc < 0 ) t4severe( t4err_sort, "07" ) ; if ( d4close_all( &cb ) != 0 ) t4severe( t4err_close, "08" ) ; return 0 ; } static int test_with_mem_check( D4DISPLAY *display, long num_sort ) { d4init( &cb ) ; cb.hWnd = (unsigned) display->hWnd ; #ifdef S4DLL cb.hInst = (unsigned) display->hInst ; #endif if ( test_sort( display, num_sort ) ) return 1 ; #ifdef S4DEBUG mem4check_memory() ; #endif mem4reset() ; #ifdef S4DEBUG #ifndef S4DLL if ( mem4free_check(100) != 0 ) t4severe( t4err_memory, "09" ) ; #endif #endif return 0 ; } int S4FUNCTION t4test( D4DISPLAY *display ) { long num_sort = 20000L ; #ifndef S4NO_PARMS num_sort = atol( d4parsestring_nparm( &display->parse_str ) ) ; if ( num_sort <= 0 ) num_sort = 70000L ; #endif d4display_str( display, "T4SORT Test ", 1 ) ; d4display_str( display, " ", 1 ) ; d4display_str( display, "Number to Sort: ", 1 ) ; d4display_num( display, (long) num_sort, 0 ) ; d4display_str( display, "", 1 ) ; if ( test_with_mem_check( display, num_sort ) ) t4severe( t4err_general, "10" ) ; display->y += 2 ; d4display_str( display, "T4SORT: SUCCESS", 1 ) ; d4display_str( display, "", 1) ; return 1 ; }