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
		
			
				
	
	
		
			234 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			234 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /* t4index.c (c)Copyright Sequiter Software Inc., 1990-1993 All rights reserved.
 | |
| 
 | |
|    1.  Checks to make sure dBASE Function 'RECNO()' is working while indexing.
 | |
|    */
 | |
| 
 | |
| #include "d4all.h"
 | |
| #ifdef __TURBOC__
 | |
| #pragma hdrstop
 | |
| #endif
 | |
| 
 | |
| #include "t4test.h"
 | |
| 
 | |
| #ifndef S4WINDOWS
 | |
| #ifndef S4OS2
 | |
| #ifndef S4UNIX
 | |
| #include <dos.h>
 | |
| #endif
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| #ifndef S4INDEX_OFF
 | |
| 
 | |
| static FIELD4INFO test_fields[] =
 | |
| {
 | |
| { "C", 'C', 100, 0 },
 | |
| { "C2", 'C', 8, 0 },
 | |
| { 0,  0, 0, 0 },
 | |
| } ;
 | |
| 
 | |
| static TAG4INFO tag_info[] =
 | |
| {
 | |
|   /* name, expression, filter, unique,descending */
 | |
| { "C", "C", "", 0, 0 },
 | |
| { "C2", "C2", "", 0, 0 },
 | |
| { "R", "RECNO()", "", 0, 0 },
 | |
| { 0,  0,  0, 0, 0 },
 | |
| 
 | |
| };
 | |
| 
 | |
| CODE4 cb;
 | |
| DATA4 *data;
 | |
| INDEX4 *test_index, *index_check ;
 | |
| 
 | |
| static int do_test( long num_recs, D4DISPLAY *disp, int do_open )
 | |
| {
 | |
|   long i_rec ;
 | |
| 
 | |
|   cb.hWnd = (unsigned) disp->hWnd ;
 | |
| 
 | |
|   if ( d4display_quit( disp ) )
 | |
|     return 1 ;
 | |
|   d4display_str( disp,  "  Index Test: part one ", 1 ) ;
 | |
|   disp->y += 2 ;
 | |
|   d4display_str( disp,  "        Number of Records: ", 1 ) ;
 | |
|   d4display_num( disp, num_recs, 0 ) ;
 | |
|   d4display_str( disp, " ", 1 ) ;
 | |
| 
 | |
|   cb.safety = 0 ;
 | |
| 
 | |
|   if (do_open)
 | |
|   {
 | |
|     cb.auto_open = 0 ;
 | |
|     if( do_open == 2 )
 | |
|     {
 | |
| #ifndef S4WIN32
 | |
| #ifndef S4OS2
 | |
| #ifdef __TURBOC__
 | |
|       _chmod( "T4INDEX.DBF", 1, _A_RDONLY ) ;
 | |
| #endif
 | |
| #endif
 | |
| #ifdef _MSC_VER
 | |
|       _dos_setfileattr( "T4INDEX.DBF", _A_RDONLY ) ;
 | |
| #endif
 | |
| #endif
 | |
|     }
 | |
|     data = d4open( &cb, "T4INDEX" ) ;
 | |
|     if( do_open != 2 )
 | |
|       if ( d4zap( data, 1L, d4reccount( data ) ) != 0 )
 | |
|         t4severe( t4err_zap, "01" ) ;
 | |
|   }
 | |
|   else
 | |
|     data = d4create( &cb, "T4INDEX", test_fields, 0);
 | |
| 
 | |
|   if ( cb.error_code || data == 0 )
 | |
|     t4severe( t4err_data, "02" ) ;
 | |
| 
 | |
|   d4opt_start( &cb ) ;
 | |
| 
 | |
|   if( do_open != 2 )
 | |
|     for ( i_rec = 1L; i_rec <= num_recs; i_rec++ )
 | |
|     {
 | |
|       if ( (i_rec % 50 == 0) || (i_rec == num_recs) )
 | |
|       {
 | |
|         d4display_str( disp,  "        Writing Record:   ", 0 ) ;
 | |
|         d4display_num( disp, i_rec, 0 ) ;
 | |
|         d4display_str( disp,  "      ", 0 ) ;
 | |
|         disp->x = (int) 0 ;
 | |
|       }
 | |
| 
 | |
|       if ( d4append_blank( data ) < 0 )
 | |
|         t4severe( t4err_append, "03" ) ;
 | |
|     }
 | |
| 
 | |
|   if ( d4display_quit( disp ) )
 | |
|     return 1 ;
 | |
|   disp->y += 2 ;
 | |
|   d4display_str( disp,  "          Creating Index File . . .", 1 ) ;
 | |
| 
 | |
|   if( do_open == 2 )
 | |
|     test_index =  i4open( data, "T4INDEX" ) ;
 | |
|   else
 | |
|     test_index =  i4create( data, "T4INDEX", tag_info ) ;
 | |
|   if ( test_index == 0 )
 | |
|     t4severe( t4err_data, "04" ) ;
 | |
|   
 | |
| 
 | |
|   d4display_str( disp,  "          Checking Index File . . .", 1 ) ;
 | |
|   if ( i4check( test_index )  != 0 )
 | |
|     t4severe( t4err_check, "05" ) ;
 | |
| 
 | |
|   index_check = d4index( data, "T4INDEX" );
 | |
|   if (index_check == 0)
 | |
|     t4severe( t4err_check, "06" ) ;
 | |
| 
 | |
|   index_check = d4index( data, "S4INDEX" ); /* doesn't exist */
 | |
|   if (index_check != 0)
 | |
|     t4severe( t4err_check, "07" ) ;
 | |
| 
 | |
|   if ( d4close_all( &cb ) != 0 )
 | |
|     t4severe( t4err_close, "08" ) ;
 | |
| 
 | |
|   if( do_open == 2 )
 | |
|   {
 | |
| #ifndef S4WIN32
 | |
| #ifdef __TURBOC__
 | |
|     _chmod( "T4INDEX.DBF", 1, 0 ) ;
 | |
| #endif
 | |
| #ifdef _MSC_VER
 | |
|     _dos_setfileattr( "T4INDEX.DBF", 0 ) ;
 | |
| #endif
 | |
| #endif
 | |
|   }
 | |
| 
 | |
|   return 0 ;
 | |
| }
 | |
| 
 | |
| static int  test_with_mem_check( long num_recs, D4DISPLAY *disp, int i )
 | |
| {
 | |
|   d4init( &cb ) ;
 | |
| 
 | |
|   if ( do_test( num_recs, disp, i ) )
 | |
|     return 1 ;
 | |
| 
 | |
|   if ( d4close_all( &cb ) != 0 )
 | |
|     t4severe( t4err_close, "09" ) ;
 | |
| 
 | |
|   d4init_undo( &cb ) ;
 | |
|   mem4reset() ;
 | |
| 
 | |
| #ifdef S4DEBUG
 | |
|   mem4check_memory() ;
 | |
| 
 | |
| #ifndef S4DLL
 | |
|   if ( mem4free_check(100) != 0 )
 | |
|     t4severe( t4err_memory, "10" ) ;
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
|   return 0 ;
 | |
| }
 | |
| 
 | |
| #endif
 | |
| 
 | |
| int S4FUNCTION t4test( D4DISPLAY *disp )
 | |
| {
 | |
|   long num_recs ;
 | |
| 
 | |
| #ifdef S4INDEX_OFF
 | |
|   disp->y += 2 ;
 | |
|   d4display_str( disp, "T4INDEX:   REQUIRES INDEXING (S4INDEX_OFF DEFINED)", 1) ;
 | |
|   d4display_str( disp, "", 1) ;
 | |
|   return 1 ;
 | |
| #else
 | |
| #ifdef S4NO_PARMS
 | |
|   num_recs = 1000 ;
 | |
| #else
 | |
|   num_recs = atol( d4parsestring_nparm( &disp->parse_str ) ) ;
 | |
|   
 | |
|   if (num_recs == 0)
 | |
|     t4severe( t4err_parm, "11" ) ;
 | |
| #endif
 | |
| 
 | |
|   if ( test_with_mem_check( num_recs, disp, 0 ) )
 | |
|     t4severe( t4err_general, "12" ) ;
 | |
|   if ( test_with_mem_check( num_recs, disp, 1 ) )
 | |
|     t4severe( t4err_general, "13" ) ;
 | |
| 
 | |
|   /* now check read_attrib... */
 | |
| #ifndef S4WINDOWS
 | |
|   if ( test_with_mem_check( num_recs, disp, 2 ) )
 | |
|     t4severe( t4err_general, "14" ) ;
 | |
| #endif
 | |
| 
 | |
| #ifndef S4TEST_KEEP_FILES
 | |
|   u4remove( "T4INDEX.dbf" ) ;
 | |
| #ifdef N4OTHER
 | |
|   u4remove( "T4INDEX.CGP" ) ;
 | |
| #endif
 | |
| #ifdef S4MDX
 | |
|   u4remove( "T4INDEX.mdx" ) ;
 | |
| #endif
 | |
| #ifdef S4FOX
 | |
|   u4remove( "T4INDEX.cdx" ) ;
 | |
| #endif
 | |
| #ifdef S4CLIPPER
 | |
|   u4remove( "C.NTX" ) ;
 | |
|   u4remove( "C2.NTX" ) ;
 | |
|   u4remove( "R.NTX" ) ;
 | |
| #endif
 | |
| #ifdef S4NDX
 | |
|   u4remove( "C.NDX" ) ;
 | |
|   u4remove( "C2.NDX" ) ;
 | |
|   u4remove( "R.NDX" ) ;
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
|   disp->y += 2 ;
 | |
|   d4display_str( disp, "T4INDEX:   SUCCESS", 1 ) ;
 | |
|   d4display_str( disp, "", 1 ) ;
 | |
|   return 1 ;
 | |
| #endif
 | |
| }
 | |
| 
 |