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
		
			
				
	
	
		
			237 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			237 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/* t4large.c (c)Copyright Sequiter Software Inc., 1990-1993. All rights reserved.
 | 
						|
   Tests CodeBase with a large data file.
 | 
						|
   */
 | 
						|
 | 
						|
#include  "d4all.h"
 | 
						|
#ifdef __TURBOC__
 | 
						|
#pragma hdrstop
 | 
						|
#endif
 | 
						|
#include  "t4test.h"
 | 
						|
 | 
						|
#ifndef S4INDEX_OFF
 | 
						|
 | 
						|
static FIELD4INFO fields[] =
 | 
						|
{
 | 
						|
{ "C", 'C',  6, 0 },
 | 
						|
{ "N", 'N',  2, 0 },
 | 
						|
{ 0,  0, 0, 0 },
 | 
						|
} ;
 | 
						|
 | 
						|
static TAG4INFO tags[] =
 | 
						|
{
 | 
						|
  /* name, expression, filter, unique,descending */
 | 
						|
{ "TAG", "C", 0, 0, 0 },
 | 
						|
{ 0,  0,  0, 0, 0 },
 | 
						|
} ;
 | 
						|
 | 
						|
CODE4 cb;
 | 
						|
DATA4  *t4large;
 | 
						|
INDEX4 *t4large_index;
 | 
						|
FIELD4 *field;
 | 
						|
 | 
						|
static int add( D4DISPLAY *display, DATA4 *database, FIELD4 *field, long start_rec, long end_rec )
 | 
						|
{
 | 
						|
  long i_rec ;
 | 
						|
 | 
						|
  d4display_str( display,  "  Adding Record:  ", 1 ) ;
 | 
						|
 | 
						|
  for ( i_rec = start_rec; i_rec <= end_rec; i_rec++)
 | 
						|
  {
 | 
						|
    if ( d4display_quit( display ) )
 | 
						|
      return 1 ;
 | 
						|
 | 
						|
    if ( (i_rec % 500 == 0) || (i_rec == end_rec) )
 | 
						|
    {
 | 
						|
      display->x = 0 ;
 | 
						|
      d4display_str( display,  "  Adding Record:  ", 0 ) ;
 | 
						|
      d4display_num( display, i_rec, 0 ) ;
 | 
						|
    }
 | 
						|
    if ( d4append_start( database, 0 ) != 0 )
 | 
						|
      t4severe( t4err_append, "01" ) ;
 | 
						|
    f4assign_long( field, i_rec ) ;
 | 
						|
    if ( d4append(database) < 0 )
 | 
						|
      t4severe( t4err_append, "02" ) ;
 | 
						|
  }
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
static int test_large( D4DISPLAY *display, long middle_rec, long end_rec )
 | 
						|
{
 | 
						|
  int rc ;
 | 
						|
  long i_rec ;
 | 
						|
 | 
						|
  cb.hWnd = (unsigned) display->hWnd ;
 | 
						|
#ifdef S4DLL
 | 
						|
  cb.hInst = (unsigned) display->hInst ;
 | 
						|
#endif
 | 
						|
 | 
						|
  cb.safety = 0 ;
 | 
						|
 | 
						|
  t4large = d4create( &cb, "T4LARGE", fields, 0 );                    
 | 
						|
  if ( cb.error_code || t4large == 0 )
 | 
						|
    t4severe( t4err_data, "03" ) ;
 | 
						|
 | 
						|
  d4opt_start( &cb ) ;
 | 
						|
 | 
						|
  field = d4field( t4large, "C" ) ;
 | 
						|
  if ( field == 0 )
 | 
						|
    t4severe( t4err_field, "04" ) ;
 | 
						|
 | 
						|
  add( display, t4large, field, 1L, middle_rec ) ;
 | 
						|
 | 
						|
  d4display_str( display,  "        Creating Index File . . .", 1 ) ;
 | 
						|
 | 
						|
  d4display_wait( display ) ;
 | 
						|
 | 
						|
  t4large_index = i4create( t4large, "T4LARGE", tags ) ;
 | 
						|
  if ( t4large_index == 0 )
 | 
						|
    t4severe( t4err_data, "05" ) ;
 | 
						|
 | 
						|
  d4display_str( display,  "        Adding Records with Index file . . .", 1 ) ;
 | 
						|
 | 
						|
  if ( add( display, t4large, field, middle_rec+1L, end_rec ) )
 | 
						|
    return 1 ;
 | 
						|
 | 
						|
  rc = d4check( t4large ) ;
 | 
						|
  d4display_start() ;
 | 
						|
  if ( rc != 0 )
 | 
						|
    t4severe( t4err_check, "06" ) ;
 | 
						|
 | 
						|
  d4display_str( display,  "        Skipping. . .", 1 ) ;
 | 
						|
 | 
						|
  if ( d4bottom( t4large ) != 0 )
 | 
						|
    t4severe( t4err_go, "07" ) ;
 | 
						|
 | 
						|
  d4display_str( display,  "        Skipping on Record. . .", 1 ) ;
 | 
						|
 | 
						|
  for ( i_rec = end_rec; i_rec >= 1; i_rec -- )
 | 
						|
  {
 | 
						|
    if ( cb.error_code < 0 )
 | 
						|
      t4severe( t4err_general, "08" ) ;
 | 
						|
 | 
						|
    if ( d4display_quit( display ) )
 | 
						|
      return 1 ;
 | 
						|
    if ( i_rec % 500 == 1 )
 | 
						|
    {
 | 
						|
      display->x = 0 ;
 | 
						|
      d4display_str( display,  "        Skipping on Record. . .", 0 ) ;
 | 
						|
      d4display_num( display, d4recno( t4large ), 0 ) ;
 | 
						|
      d4display_str( display,  "      ", 0 ) ;
 | 
						|
    }
 | 
						|
 | 
						|
    if ( atol(f4str(field)) != i_rec || d4recno(t4large) != i_rec )
 | 
						|
      t4severe( t4err_general, "09" ) ;
 | 
						|
 | 
						|
    rc = d4skip( t4large, -1L ) ;
 | 
						|
    if ( rc != 0 )
 | 
						|
      if ( ! d4bof( t4large )  ||  i_rec != 1L )
 | 
						|
        t4severe( t4err_general, "10" ) ;
 | 
						|
  }
 | 
						|
 | 
						|
  d4display_str( display,  "        Finished Skipping. . .", 1 ) ;
 | 
						|
 | 
						|
  if ( d4close_all ( &cb ) != 0 )
 | 
						|
    t4severe( t4err_close, "11" ) ;
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
static int  test_with_mem_check( D4DISPLAY *display, long middle_rec, long end_rec )
 | 
						|
{
 | 
						|
  d4init( &cb ) ;
 | 
						|
 | 
						|
  if ( test_large( display, middle_rec, end_rec ) )
 | 
						|
    return 1 ;
 | 
						|
 | 
						|
#ifndef S4TEST_KEEP_FILES
 | 
						|
  u4remove( "T4LARGE.dbf" ) ;
 | 
						|
#ifdef N4OTHER
 | 
						|
  u4remove( "T4LARGE.CGP" ) ;
 | 
						|
#endif
 | 
						|
#ifdef S4MDX
 | 
						|
  u4remove( "T4LARGE.mdx" ) ;
 | 
						|
#endif
 | 
						|
#ifdef S4FOX
 | 
						|
  u4remove( "T4LARGE.cdx" ) ;
 | 
						|
#endif
 | 
						|
#ifdef S4CLIPPER
 | 
						|
  u4remove( "TAG.NTX" ) ;
 | 
						|
#endif
 | 
						|
#ifdef S4NDX
 | 
						|
  u4remove( "TAG.NDX" ) ;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
  d4init_undo( &cb ) ;
 | 
						|
  mem4reset() ;
 | 
						|
 | 
						|
#ifdef S4DEBUG
 | 
						|
  mem4check_memory() ;
 | 
						|
 | 
						|
#ifndef S4DLL
 | 
						|
  if ( mem4free_check(100) != 0 )
 | 
						|
    t4severe( t4err_memory, "12" ) ;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
int S4FUNCTION t4test( D4DISPLAY *display )
 | 
						|
{
 | 
						|
#ifdef S4INDEX_OFF
 | 
						|
  display->y += 2 ;
 | 
						|
  d4display_str( display, "T4LARGE:   REQUIRES INDEXING (S4INDEX_OFF DEFINED)", 1) ;
 | 
						|
  d4display_str( display, "", 1) ;
 | 
						|
  return 1 ;
 | 
						|
#else
 | 
						|
  long middle_rec = 0x10010L ;
 | 
						|
  long end_rec = 0x10200L ;
 | 
						|
#ifndef S4NO_PARMS
 | 
						|
  long temp_rec ;
 | 
						|
  temp_rec = atol( d4parsestring_nparm( &display->parse_str ) ) ;
 | 
						|
  
 | 
						|
  if (temp_rec > 0)
 | 
						|
    middle_rec = temp_rec ;
 | 
						|
  
 | 
						|
  temp_rec = atol( d4parsestring_nparm( &display->parse_str ) ) ;
 | 
						|
  
 | 
						|
  if (temp_rec > 0)
 | 
						|
    end_rec = temp_rec ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( d4display_quit( display ) )
 | 
						|
    return 1 ;
 | 
						|
  d4display_str( display,  "        T4LARGE TEST", 1 ) ;
 | 
						|
  d4display_str( display,  " ", 1 ) ;
 | 
						|
  d4display_str( display,  "Warning: this test program creates large database and index", 1 ) ;
 | 
						|
  d4display_str( display,  "files that are deleted upon completion.  It requires", 1 );
 | 
						|
  d4display_str( display,  "several megabytes of hard disk space.", 1 ) ;
 | 
						|
  d4display_str( display,  " ", 1 ) ;
 | 
						|
  d4display_str( display,  "Warning: This program requires a significant amount of time", 1 ) ;
 | 
						|
  d4display_str( display,  "         to run.  On a standard 486 time requirements may be", 1 ) ;
 | 
						|
  d4display_str( display,  "         as high as 20 minutes.", 1 );
 | 
						|
  d4display_str( display,  " ", 1 ) ;
 | 
						|
 | 
						|
  d4display_str( display,  "Middle Rec: ", 1 ) ;
 | 
						|
  d4display_num( display,   middle_rec, 0 ) ;
 | 
						|
  d4display_str( display,  "End Rec:    ", 1 ) ;
 | 
						|
  d4display_num( display,   end_rec, 0 ) ;
 | 
						|
  d4display_str( display,  " ", 1 ) ;
 | 
						|
  d4display_str( display,  " ", 1 ) ;
 | 
						|
 | 
						|
  if ( test_with_mem_check( display, middle_rec, end_rec ) )
 | 
						|
    t4severe( t4err_general, "13" ) ;
 | 
						|
 | 
						|
  display->y += 2 ;
 | 
						|
  d4display_str( display, "T4LARGE:   SUCCESS", 1) ;
 | 
						|
  d4display_str( display, "", 1) ;
 | 
						|
  return 1 ;
 | 
						|
#endif
 | 
						|
}
 | 
						|
 | 
						|
 |