which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@976 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			341 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			341 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /* t4memo.c (c)Copyright Sequiter Software Inc., 1990-1993. All rights reserved. */
 | |
| 
 | |
| #include  "d4all.h"
 | |
| #ifdef __TURBOC__
 | |
| #pragma hdrstop
 | |
| #endif
 | |
| 
 | |
| #include  "t4test.h"
 | |
| 
 | |
| static FIELD4INFO test_fields[] =
 | |
| {
 | |
| {"MEMO_DAT", 'M', 10,0},
 | |
| { 0,  0, 0, 0 },
 | |
| } ;
 | |
| 
 | |
| #define   RW_SIZE  12000
 | |
| 
 | |
| CODE4 cb;
 | |
| DATA4 *t4memo;
 | |
| FIELD4 *mfield;
 | |
| char rec_two[] = "New Data" ;
 | |
| 
 | |
| static int do_test( D4DISPLAY *disp , unsigned block_size )
 | |
| {
 | |
|   char *write_data ;
 | |
|   int i ;
 | |
|   unsigned len ;
 | |
|   long binary_out[260] ;
 | |
|   char buf[20] ;
 | |
| 
 | |
| #ifndef S4UNIX
 | |
| #ifdef S4MDX
 | |
|   int rc;
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
|   cb.hWnd = (unsigned) disp->hWnd ;
 | |
| #ifdef S4DLL
 | |
|   cb.hInst = (unsigned) disp->hInst ;
 | |
| #endif
 | |
| 
 | |
|   d4display_str( disp,  "  Memo Test: ", 1 ) ;
 | |
| 
 | |
|   write_data = (char *)u4alloc( RW_SIZE ) ;
 | |
|   if ( write_data == 0 )
 | |
|     t4severe( t4err_memory, "01" ) ;
 | |
| 
 | |
|   cb.safety = 0 ;
 | |
|   cb.mem_size_block = block_size ;
 | |
| 
 | |
|   t4memo = d4create( &cb, "T4MEMO", test_fields, 0 ) ;
 | |
|   if ( t4memo == 0 )
 | |
|     t4severe( t4err_data, "02" ) ;
 | |
| 
 | |
|   d4opt_start( &cb ) ;
 | |
| 
 | |
|   mfield = d4field( t4memo, "MEMO_DAT" ) ;
 | |
| 
 | |
|   for ( i = 0 ; i < 260 ; i++ )
 | |
| #ifdef N4OTHER
 | |
|     binary_out[i] = 65 ;
 | |
| #else
 | |
|   binary_out[i] = (long) 256-i ;
 | |
| #endif
 | |
| 
 | |
|   d4display_str( disp,  "        Doing Initial Memo Testing . . .", 1 ) ;
 | |
|   d4display_str( disp,  "             Block size : ", 1 ) ;
 | |
|   d4display_num( disp,  (long) block_size, 0 ) ;
 | |
| 
 | |
|   if ( d4append_start( t4memo, 0 ) != 0 )
 | |
|     t4severe( t4err_append, "03" ) ;
 | |
|   f4memo_assign_n( mfield, (char *) binary_out, sizeof(binary_out) ) ;
 | |
|   if ( d4append( t4memo ) != 0 )
 | |
|     t4severe( t4err_append, "04" ) ;
 | |
| 
 | |
|   if ( d4append_start( t4memo, 0 ) != 0 )
 | |
|     t4severe( t4err_append, "05" ) ;
 | |
|   f4memo_assign( mfield, rec_two ) ;
 | |
|   if ( d4append( t4memo ) != 0 )
 | |
|     t4severe( t4err_append, "06" ) ;
 | |
| 
 | |
| #ifndef S4UNIX
 | |
| #ifdef S4MDX
 | |
|   if ( f4memo_check( &t4memo->memo_file ) != 0 )
 | |
|     t4severe( t4err_check, "07" ) ;
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
|   if ( d4go( t4memo, 1L ) != 0 )
 | |
|     t4severe( t4err_go, "08" ) ;
 | |
| 
 | |
|   len = f4memo_len(mfield) ;
 | |
|   if ( len != sizeof(binary_out) || len != f4memo_len(mfield) )
 | |
|     t4severe( t4err_memo, "09" ) ;
 | |
| 
 | |
|   if ( memcmp( (char *) f4memo_ptr(mfield), (char *) binary_out, len ) != 0 )
 | |
|     t4severe( t4err_memo, "10" ) ;
 | |
| 
 | |
|   if ( d4go(t4memo, 2L) != 0 )
 | |
|     t4severe( t4err_go, "11" ) ;
 | |
|   if ( f4memo_len( mfield ) != (unsigned) strlen(rec_two) )
 | |
|     t4severe( t4err_memo, "12" ) ;
 | |
| 
 | |
|   if ( strcmp( f4memo_str( mfield ), rec_two ) != 0 )
 | |
|     t4severe( t4err_memo, "13" ) ;
 | |
| 
 | |
|   if ( d4zap(t4memo, 1L, 2L) < 0 )
 | |
|     t4severe( t4err_zap, "14" ) ;
 | |
| 
 | |
| #ifndef S4UNIX
 | |
|   if ( d4memo_compress(t4memo) != 0 )
 | |
|     t4severe( t4err_memo, "15" ) ;
 | |
| #endif
 | |
| 
 | |
|   d4display_str( disp,  "        Appending 200 records with memo entries . . .", 1 ) ;
 | |
|   for ( i = 1; i< 200; i++ )
 | |
|   {
 | |
|     if ( d4display_quit( disp ) )
 | |
|       return 1 ;
 | |
| 
 | |
|     if ( d4append_blank( t4memo ) != 0 )
 | |
|       t4severe( t4err_append, "16" ) ;
 | |
| 
 | |
|     c4ltoa45( (long) i, buf, i/20 + 2 ) ;
 | |
|     f4memo_assign_n( mfield, buf, i/20 + 2 ) ;
 | |
|   }
 | |
| 
 | |
|   d4display_str( disp,  "        Checking Assignments and New Records . . .", 1 ) ;
 | |
| 
 | |
| #ifndef S4UNIX
 | |
| #ifdef S4MDX
 | |
|   if ( f4memo_check( &t4memo->memo_file ) != 0 )
 | |
|     t4severe( t4err_check, "17" ) ;
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
|   for ( i = 1; i< 200; i++ )
 | |
|   {
 | |
|     if ( d4display_quit( disp ) )
 | |
|       return 1 ;
 | |
| 
 | |
|     if ( d4go( t4memo, (long)i ) != 0 )
 | |
|       t4severe( t4err_go, "18" ) ;
 | |
|     c4ltoa45( (long) i, buf, i/20 + 2 ) ;
 | |
| 
 | |
|     if ( memcmp( buf, f4memo_ptr(mfield), i/20+2 ) != 0 )
 | |
|       t4severe( t4err_memo, "19" ) ;
 | |
|   }
 | |
| 
 | |
| #ifndef S4UNIX
 | |
| #ifdef S4MDX
 | |
|   if ( f4memo_check( &t4memo->memo_file ) != 0 )
 | |
|     t4severe( t4err_check, "20" ) ;
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
|   d4display_str( disp,  "        Deleting and Recalling . . .", 1 ) ;
 | |
| 
 | |
|   for ( i = 1; i< 200; i += 2 )
 | |
|   {
 | |
|     if ( d4display_quit( disp ) )
 | |
|       return 1 ;
 | |
| 
 | |
|     if ( d4go( t4memo, (long)i ) != 0 )
 | |
|       t4severe( t4err_go, "21" ) ;
 | |
|     d4delete( t4memo ) ;
 | |
|   }
 | |
| 
 | |
|   for ( i = 101; i< 200; i+= 2 )
 | |
|   {
 | |
|     if ( d4display_quit( disp ) )
 | |
|       return 1 ;
 | |
| 
 | |
|     if ( d4go( t4memo, (long)i ) != 0 )
 | |
|       t4severe( t4err_go, "22" ) ;
 | |
|     d4recall( t4memo ) ;
 | |
|   }
 | |
| 
 | |
|   d4display_str( disp,  "        Packing . . .", 1 ) ;
 | |
|   d4display_wait( disp ) ;
 | |
|   if ( d4pack( t4memo ) != 0 )
 | |
|     t4severe( t4err_pack, "23" ) ;
 | |
| 
 | |
| #ifndef S4UNIX
 | |
|   if ( d4memo_compress(t4memo) != 0 )
 | |
|     t4severe( t4err_memo, "24" ) ;
 | |
| #endif
 | |
| 
 | |
|   if ( d4reccount( t4memo) != 149 )
 | |
|     t4severe( t4err_count, "25" ) ;
 | |
| 
 | |
|   d4display_str( disp,  "        Checking after Packing . . .", 1 ) ;
 | |
| 
 | |
| #ifndef S4UNIX
 | |
| #ifdef S4MDX
 | |
|   rc = f4memo_check( &t4memo->memo_file ) ;
 | |
|   d4display_start() ;
 | |
|   if ( rc != 0 )
 | |
|     t4severe( t4err_check, "26" ) ;
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
|   if ( d4close( t4memo ) != 0 )
 | |
|     t4severe( t4err_close, "27" ) ;
 | |
| 
 | |
|   d4display_str( disp,  "        Creating new memo file. . .", 1 ) ;
 | |
|   t4memo = d4create( &cb, "T4MEMO", test_fields, 0 ) ;
 | |
|   mfield = d4field( t4memo, "MEMO_DAT" ) ;
 | |
|   if ( t4memo == 0 || mfield == 0 )
 | |
|     t4severe( t4err_memo, "28" ) ;
 | |
|   e4exit_test(&cb) ;
 | |
| 
 | |
|   if ( f4memo_len ( mfield ) != 0 )
 | |
|     t4severe( t4err_memo, "29" ) ;
 | |
| 
 | |
|   memset( write_data, (int) '1', RW_SIZE ) ;
 | |
| 
 | |
|   d4display_str( disp,  "        Appending Large Records. . .", 1 ) ;
 | |
| 
 | |
|   if ( d4append_start( t4memo, 0 ) != 0 )
 | |
|     t4severe( t4err_append, "30" ) ;
 | |
|   f4memo_assign_n( mfield, write_data, RW_SIZE ) ;
 | |
|   if ( d4append( t4memo ) != 0 )
 | |
|     t4severe( t4err_append, "31" ) ;
 | |
|   d4display_str( disp,  "        Appending Record. . .", 1 ) ;
 | |
|   disp->x = 0 ;
 | |
| 
 | |
|   for ( i=2; i <= 50; i++ )
 | |
|   {
 | |
|     if ( d4display_quit( disp ) )
 | |
|       return 1 ;
 | |
|     d4display_str( disp,  "        Appending Record. . .", 0 ) ;
 | |
|     d4display_num( disp,  (long) i, 0 ) ;
 | |
|     disp->x = 0 ;
 | |
|     if ( d4append_start( t4memo, 1 ) != 0 )
 | |
|       t4severe( t4err_append, "32" ) ;
 | |
|     if ( d4append( t4memo ) != 0 )
 | |
|       t4severe( t4err_append, "33" ) ;
 | |
|   }
 | |
| 
 | |
|   d4display_str( disp,  "        Checking Record. . .", 1 ) ;
 | |
|   disp->x = 0;
 | |
| 
 | |
|   for ( i=1; i <= 50; i++ )
 | |
|   {
 | |
|     if ( d4display_quit( disp ) )
 | |
|       return 1 ;
 | |
|     d4display_str( disp,  "   Checking Record. . .", 0 ) ;
 | |
|     d4display_num( disp,  (long) i, 0 ) ;
 | |
|     if ( d4go( t4memo, (long)i ) != 0 )
 | |
|       t4severe( t4err_go, "34" ) ;
 | |
|     if ( memcmp( f4memo_ptr(mfield), write_data, RW_SIZE) != 0 ) 
 | |
|       t4severe( t4err_memo, "35" ) ;
 | |
| 
 | |
|     d4display_str( disp,  "   Replacing Record. . .", 0 ) ;
 | |
|     d4display_num( disp,  (long) i, 0 ) ;
 | |
|     disp->x = 0 ;
 | |
|     f4memo_assign( mfield, "Test" ) ;
 | |
|   }
 | |
| 
 | |
|   d4display_str( disp,  "        Checking Record (2nd Loop). . .", 1 ) ;
 | |
|   disp->x = 0 ;
 | |
| 
 | |
|   for ( i=1; i <= 50; i++ )
 | |
|   {
 | |
|     if ( d4display_quit( disp ) )
 | |
|       return 1 ;
 | |
|     d4display_str( disp,  "        Checking Record (2nd Loop). . .", 0 ) ;
 | |
|     d4display_num( disp,  (long) i, 0 ) ;
 | |
|     disp->x = 0 ;
 | |
|     if ( d4go( t4memo, (long) i ) != 0 )
 | |
|       t4severe( t4err_go, "36" ) ;
 | |
|     if ( strcmp( f4memo_str( mfield ), "Test") != 0 ) 
 | |
|       t4severe( t4err_memo, "37" ) ;
 | |
|   }
 | |
| 
 | |
|   d4display_str( disp,  "        Checking memo file internal integrity . . .", 1 ) ;
 | |
|   d4display_wait( disp ) ;
 | |
| 
 | |
| #ifndef S4UNIX
 | |
| #ifdef S4MDX
 | |
|   rc = f4memo_check( &t4memo->memo_file ) ;
 | |
|   d4display_start() ;
 | |
|   if ( rc != 0 )
 | |
|     t4severe( t4err_check, "38" ) ;
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
|   if ( d4close_all( &cb ) < 0 )
 | |
|     t4severe( t4err_close, "39" ) ;
 | |
| 
 | |
|   u4free( write_data ) ;
 | |
|   return 0 ;
 | |
| }
 | |
| 
 | |
| 
 | |
| static int  test_with_mem_check( D4DISPLAY *disp )
 | |
| {
 | |
|   d4init( &cb ) ;
 | |
| 
 | |
|   if ( do_test( disp, 1024 ) )
 | |
|     return 1 ;
 | |
|   if ( do_test( disp, 16384 ) )
 | |
|     return 1 ;
 | |
| 
 | |
| #ifndef S4TEST_KEEP_FILES
 | |
|   u4remove( "T4MEMO.dbf" ) ;
 | |
| #ifdef S4FOX
 | |
|   u4remove( "T4MEMO.fpt" ) ;
 | |
| #else
 | |
|   u4remove( "T4MEMO.dbt" ) ;
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
|   d4init_undo( &cb ) ;
 | |
|   mem4reset() ;
 | |
| 
 | |
| #ifdef S4DEBUG
 | |
|   mem4check_memory() ;
 | |
| 
 | |
| #ifndef S4DLL
 | |
|   if ( mem4free_check( 100 ) != 0 )
 | |
|     t4severe( t4err_memory, "40" ) ;
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| 
 | |
|   return 0 ;
 | |
| }
 | |
| 
 | |
| int S4FUNCTION t4test( D4DISPLAY *disp )
 | |
| {                           
 | |
|   if ( test_with_mem_check( disp ) )
 | |
|     return 1 ;
 | |
| 
 | |
|   disp->y += 2 ;
 | |
|   d4display_str( disp, "T4MEMO:   SUCCESS", 1) ;
 | |
|   d4display_str( disp, "", 1) ;
 | |
|   return 1 ;
 | |
| }
 |