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
		
			
				
	
	
		
			403 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			403 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/* t4skip.c  (c)Copyright Sequiter Software Inc., 1990-1993. All rights reserved. */
 | 
						|
 | 
						|
/* tests Code Base 'd4skip' routine. */ 
 | 
						|
 | 
						|
#include "d4all.h"
 | 
						|
#ifdef __TURBOC__
 | 
						|
#pragma hdrstop
 | 
						|
#endif
 | 
						|
 | 
						|
#include "t4test.h"
 | 
						|
 | 
						|
#ifndef S4INDEX_OFF
 | 
						|
 | 
						|
static FIELD4INFO fields[] =
 | 
						|
{
 | 
						|
{"FLD",   'N',    13,    1 },
 | 
						|
{"CHR",   'C',     8,    0 },
 | 
						|
{ 0,       0 ,     0,    0 },
 | 
						|
};
 | 
						|
 | 
						|
static TAG4INFO tags[] =
 | 
						|
{
 | 
						|
{"TAG",     "CHR",     "", 0, 0 },
 | 
						|
{"TAG_TWO", "101-VAL(CHR)", "", 0, 0 },
 | 
						|
{ 0,     0,   0, 0, 0 },
 | 
						|
} ;
 | 
						|
 | 
						|
CODE4   cb;
 | 
						|
DATA4  *data;
 | 
						|
INDEX4 *test_index ;
 | 
						|
FIELD4 *field ;
 | 
						|
TAG4   *tag ;
 | 
						|
 | 
						|
static void t4test_eof( DATA4 *data, int bof_cond, int eof_cond )
 | 
						|
{
 | 
						|
  int  rc ;
 | 
						|
 | 
						|
  rc = 0 ;
 | 
						|
  
 | 
						|
  if ( bof_cond )
 | 
						|
  {
 | 
						|
    if ( ! d4bof( data ) )
 | 
						|
      rc = -1 ;
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    if ( d4bof( data ) )
 | 
						|
      rc = -1 ;
 | 
						|
  }
 | 
						|
  if ( rc )
 | 
						|
    t4severe( t4err_general, "01" ) ;
 | 
						|
  
 | 
						|
  if ( eof_cond )
 | 
						|
  {
 | 
						|
    if ( ! d4eof( data ) )
 | 
						|
      rc = -1 ;
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    if ( d4eof( data ) )
 | 
						|
      rc = -1 ;
 | 
						|
  }
 | 
						|
  if ( rc )
 | 
						|
    t4severe( t4err_general, "02" ) ;
 | 
						|
}
 | 
						|
 | 
						|
static void rec( DATA4 *data, long rec_no )
 | 
						|
{
 | 
						|
  if ( d4recno( data ) != rec_no )
 | 
						|
    t4severe( t4err_recno, "03" ) ;
 | 
						|
}
 | 
						|
 | 
						|
static int  test_skip( D4DISPLAY *display, int do_open )
 | 
						|
{
 | 
						|
  char  buff[9] ;
 | 
						|
  long  i_rec ;
 | 
						|
 | 
						|
  cb.safety = 0 ;
 | 
						|
 | 
						|
  if ( do_open )
 | 
						|
  {
 | 
						|
    cb.auto_open = 0 ;
 | 
						|
    data = d4open( &cb, "T4SKIP" ) ;
 | 
						|
    d4zap( data, 1L, d4reccount( data ) ) ;
 | 
						|
  }
 | 
						|
  else
 | 
						|
    data = d4create( &cb, "T4SKIP", fields, 0 ) ;
 | 
						|
 | 
						|
  if ( data == 0 )
 | 
						|
    t4severe( t4err_data, "04" ) ;
 | 
						|
 | 
						|
  d4opt_start( &cb ) ;
 | 
						|
 | 
						|
  /* First Execute Skips on an Empty Database */
 | 
						|
  if ( d4bottom( data ) != r4eof )
 | 
						|
    t4severe( t4err_go, "05" ) ;
 | 
						|
  t4test_eof( data, 1, 1 ) ;    rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4top( data ) != r4eof )
 | 
						|
    t4severe( t4err_go, "06" ) ;
 | 
						|
  t4test_eof( data, 1, 1 ) ;    rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -1L ) != r4bof )
 | 
						|
    t4severe( t4err_skip, "07" ) ;
 | 
						|
  t4test_eof( data, 1, 1 ) ;    rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, 1L )  != r4eof )
 | 
						|
    t4severe( t4err_skip, "08" ) ;
 | 
						|
  t4test_eof( data, 1, 1 ) ;    rec( data, 1L ) ;
 | 
						|
 | 
						|
  if (do_open)
 | 
						|
  {
 | 
						|
    test_index = i4open( data, "T4SKIP" ) ;
 | 
						|
    if( d4reindex( data ) != 0 )
 | 
						|
      t4severe( t4err_reindex, "09" ) ;
 | 
						|
  }
 | 
						|
  else
 | 
						|
    test_index = i4create( data, "T4SKIP", tags ) ;
 | 
						|
 | 
						|
  if ( test_index == 0 )
 | 
						|
    t4severe( t4err_data, "10" ) ;
 | 
						|
 | 
						|
  t4test_eof( data, 1, 1 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  /* Index File Skips on an Empty Database */
 | 
						|
  if ( d4bottom( data ) != r4eof )
 | 
						|
    t4severe( t4err_go, "11" ) ;
 | 
						|
  t4test_eof( data, 1, 1 ) ;    rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4top( data ) != r4eof )
 | 
						|
    t4severe( t4err_go, "12" ) ;
 | 
						|
  t4test_eof( data, 1, 1 ) ;    rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -1L ) != r4bof )
 | 
						|
    t4severe( t4err_skip, "13" ) ;
 | 
						|
  t4test_eof( data, 1, 1 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, 1L ) != r4eof )
 | 
						|
    t4severe( t4err_skip, "14" ) ;
 | 
						|
  t4test_eof( data, 1, 1 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  /* Index File Skips on a One Record Database */
 | 
						|
  if ( d4append_blank( data ) < 0 )
 | 
						|
    t4severe( t4err_append, "15" ) ;
 | 
						|
 | 
						|
  t4test_eof( data, 0, 0 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data,  1L ) != r4eof )
 | 
						|
    t4severe( t4err_skip, "16" ) ;
 | 
						|
  t4test_eof( data, 0, 1 ) ;
 | 
						|
  rec( data, 2L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -1L ) != 0 )
 | 
						|
    t4severe( t4err_skip, "17" ) ;
 | 
						|
  t4test_eof( data, 0, 0 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -1L ) != r4bof )
 | 
						|
    t4severe( t4err_skip, "18" ) ;
 | 
						|
  t4test_eof( data, 1,0 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  /* Database Skips on a One Record Database */
 | 
						|
  tag = d4tag( data, "TAG" ) ;
 | 
						|
  if ( tag == 0 )
 | 
						|
    t4severe( t4err_tag, "19" ) ;
 | 
						|
  d4tag_select( data, tag ) ;
 | 
						|
 | 
						|
  if ( d4skip( data,  1L ) != r4eof )
 | 
						|
    t4severe( t4err_skip, "20" ) ;
 | 
						|
  t4test_eof( data, 0, 1 ) ;
 | 
						|
  rec( data, 2L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -1L ) != 0 )
 | 
						|
    t4severe( t4err_skip, "21" ) ;
 | 
						|
  t4test_eof( data, 0, 0 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -1L ) != r4bof )
 | 
						|
    t4severe( t4err_skip, "22" ) ;
 | 
						|
  t4test_eof( data, 1,0 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4zap( data, 1L, d4reccount( data ) ) != 0 )
 | 
						|
    t4severe( t4err_zap, "23" ) ;
 | 
						|
  t4test_eof( data, 1, 1 ) ;
 | 
						|
 | 
						|
  d4display_str( display,  "  Writing 100 Records . . .  ", 1 ) ;
 | 
						|
 | 
						|
  /* Write  100  Records */
 | 
						|
  for ( i_rec = 1; i_rec <= 100; i_rec++ )
 | 
						|
  {
 | 
						|
    if ( d4display_quit( display ) )  return 1 ;
 | 
						|
 | 
						|
    if ( d4append_start( data, 0 ) < 0 )
 | 
						|
      t4severe( t4err_append, "24" ) ;
 | 
						|
    f4assign_long( d4field_j( data, 2 ), (i_rec+1)/3 ) ;
 | 
						|
    c4ltoa45( (long) (101 - i_rec), buff, 8 ) ;
 | 
						|
    f4assign_n( d4field( data, "CHR" ), buff, 8 ) ;
 | 
						|
    if ( d4append( data ) < 0 )
 | 
						|
      t4severe( t4err_append, "25" ) ;
 | 
						|
 | 
						|
    t4test_eof( data, 0, 0 ) ;
 | 
						|
    rec( data, i_rec ) ;
 | 
						|
  }
 | 
						|
 | 
						|
  if ( d4top( data ) != 0 )
 | 
						|
    t4severe( t4err_go, "26" ) ;
 | 
						|
  if ( d4recno( data ) != 100 )
 | 
						|
    t4severe( t4err_recno, "27" ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, 60L ) != 0 )
 | 
						|
    t4severe( t4err_skip, "28" ) ;
 | 
						|
  if ( d4recno( data ) != 40 )
 | 
						|
    t4severe( t4err_recno, "29" ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, 22L ) != 0 )
 | 
						|
    t4severe( t4err_skip, "30" ) ;
 | 
						|
  if ( d4recno( data ) != 18 )
 | 
						|
    t4severe( t4err_recno, "31" ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -74L ) != 0 )
 | 
						|
    t4severe( t4err_skip, "32" ) ;
 | 
						|
  if ( d4recno( data ) != 92 )
 | 
						|
    t4severe( t4err_recno, "33" ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -20L ) != r4bof )
 | 
						|
    t4severe( t4err_skip, "34" ) ;
 | 
						|
  if ( !d4bof( data ) )
 | 
						|
    t4severe( t4err_general, "35" ) ;
 | 
						|
 | 
						|
  /* Skip Test Without Index File */
 | 
						|
 | 
						|
  d4tag_select( data, 0 ) ;
 | 
						|
 | 
						|
  if ( d4bottom( data ) != 0 )
 | 
						|
    t4severe( t4err_go, "36" ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -99L ) != 0 )
 | 
						|
    t4severe( t4err_skip, "37" ) ;
 | 
						|
  t4test_eof( data, 0, 0 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -1L ) != r4bof )
 | 
						|
    t4severe( t4err_skip, "38" ) ;
 | 
						|
  t4test_eof( data, 1,0 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  for ( i_rec = 2; i_rec <= 100; i_rec++ )
 | 
						|
  {
 | 
						|
    if ( d4display_quit( display ) )
 | 
						|
      return 1 ;
 | 
						|
 | 
						|
    if ( d4skip( data, 1L ) != 0 )
 | 
						|
      t4severe( t4err_skip, "39" ) ;
 | 
						|
    t4test_eof( data, 0, 0 ) ;
 | 
						|
    rec( data, i_rec ) ;
 | 
						|
  }
 | 
						|
 | 
						|
  if ( d4skip( data, 1L ) != r4eof )
 | 
						|
    t4severe( t4err_skip, "40" ) ;
 | 
						|
  t4test_eof( data, 0, 1 ) ;
 | 
						|
  rec( data, 101L ) ;
 | 
						|
 | 
						|
  for ( i_rec = 100; i_rec >=1; i_rec-- )
 | 
						|
  {
 | 
						|
    if ( d4display_quit( display ) )  return 1 ;
 | 
						|
 | 
						|
    if ( d4skip( data, -1L ) != 0 )
 | 
						|
      t4severe( t4err_skip, "41" ) ;
 | 
						|
    t4test_eof( data, 0, 0 ) ;
 | 
						|
    rec( data, i_rec ) ;
 | 
						|
  }
 | 
						|
 | 
						|
  /* Skip Test With an Index File */
 | 
						|
 | 
						|
  d4tag_select( data, d4tag( data, "TAG_TWO" ) ) ;
 | 
						|
 | 
						|
  if ( d4bottom( data ) != 0 )
 | 
						|
    t4severe( t4err_go, "42" ) ;
 | 
						|
  t4test_eof( data, 0, 0 ) ;
 | 
						|
  rec( data, 100L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -99L ) != 0 )
 | 
						|
    t4severe( t4err_skip, "43" ) ;
 | 
						|
  t4test_eof( data, 0, 0 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  if ( d4skip( data, -1L ) != r4bof )
 | 
						|
    t4severe( t4err_skip, "44" ) ;
 | 
						|
  t4test_eof( data, 1,0 ) ;
 | 
						|
  rec( data, 1L ) ;
 | 
						|
 | 
						|
  for ( i_rec = 2; i_rec <= 100; i_rec++ )
 | 
						|
  {
 | 
						|
    if ( d4display_quit( display ) )
 | 
						|
      return 1 ;
 | 
						|
 | 
						|
    if ( d4skip( data, 1L ) != 0 )
 | 
						|
      t4severe( t4err_skip, "45" ) ;
 | 
						|
    t4test_eof( data, 0, 0 ) ;
 | 
						|
    rec( data, i_rec ) ;
 | 
						|
  }
 | 
						|
 | 
						|
  if ( d4skip( data, 1L ) != r4eof )
 | 
						|
    t4severe( t4err_skip, "46" ) ;
 | 
						|
  t4test_eof( data, 0, 1 ) ;
 | 
						|
  rec( data, 101L ) ;
 | 
						|
 | 
						|
  for ( i_rec = 100; i_rec >=1; i_rec-- )
 | 
						|
  {
 | 
						|
    if ( d4display_quit( display ) )
 | 
						|
      return 1 ;
 | 
						|
 | 
						|
    if ( d4skip( data, -1L ) != 0 )
 | 
						|
      t4severe( t4err_skip, "47" ) ;
 | 
						|
    t4test_eof( data, 0, 0 ) ;
 | 
						|
    rec( data, i_rec ) ;
 | 
						|
  }
 | 
						|
 | 
						|
  if ( d4close_all( &cb ) < 0 )
 | 
						|
    t4severe( t4err_close, "48" ) ;
 | 
						|
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
static int  test_with_mem_check( D4DISPLAY *display )
 | 
						|
{
 | 
						|
  d4init( &cb ) ;
 | 
						|
 | 
						|
  cb.hWnd = (unsigned) display->hWnd ;
 | 
						|
#ifdef S4DLL
 | 
						|
  cb.hInst = (unsigned) display->hInst ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( test_skip( display, 0 ) )
 | 
						|
    return 1 ;
 | 
						|
  if ( test_skip( display, 1 ) )
 | 
						|
    return 1 ;
 | 
						|
 | 
						|
#ifndef S4TEST_KEEP_FILES
 | 
						|
  u4remove( "T4SKIP.dbf" ) ;
 | 
						|
#ifdef N4OTHER
 | 
						|
  u4remove( "T4SKIP.CGP" ) ;
 | 
						|
#endif
 | 
						|
#ifdef S4MDX
 | 
						|
  u4remove( "T4SKIP.mdx" ) ;
 | 
						|
#endif
 | 
						|
#ifdef S4FOX
 | 
						|
  u4remove( "T4SKIP.cdx" ) ;
 | 
						|
#endif
 | 
						|
#ifdef S4CLIPPER
 | 
						|
  u4remove( "TAG.NTX" ) ;
 | 
						|
  u4remove( "TAG_TWO.NTX" ) ;
 | 
						|
#endif
 | 
						|
#ifdef S4NDX
 | 
						|
  u4remove( "TAG.NDX" ) ;
 | 
						|
  u4remove( "TAG_TWO.NDX" ) ;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
  d4init_undo(&cb) ;
 | 
						|
  mem4reset() ;
 | 
						|
 | 
						|
#ifdef S4DEBUG
 | 
						|
  mem4check_memory() ;
 | 
						|
 | 
						|
#ifndef S4DLL
 | 
						|
  if ( mem4free_check(100) != 0 )
 | 
						|
    t4severe( t4err_memory, "49" ) ;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
int  S4FUNCTION t4test( D4DISPLAY *display )
 | 
						|
{
 | 
						|
#ifdef S4INDEX_OFF
 | 
						|
  display->y += 2 ;
 | 
						|
  d4display_str( display, "T4GROUP:   REQUIRES INDEXING (S4INDEX_OFF DEFINED)", 1) ;
 | 
						|
  d4display_str( display, "", 1) ;
 | 
						|
  return 1 ;
 | 
						|
#else
 | 
						|
  d4display_str( display,  "T4SKIP Test  ", 1 ) ;
 | 
						|
  d4display_str( display,  " ", 1 ) ;
 | 
						|
 | 
						|
  if ( test_with_mem_check( display ) )
 | 
						|
    e4exit(&cb) ;
 | 
						|
 | 
						|
  display->y += 2 ;
 | 
						|
  d4display_str( display, "T4SKIP:   SUCCESS", 1) ;
 | 
						|
  d4display_str( display, "", 1) ;
 | 
						|
#endif
 | 
						|
  return 1 ;
 | 
						|
}
 |