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
		
			
				
	
	
		
			222 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			222 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/* t4mul2.c (c)Copyright Sequiter Software Inc., 1990-1993. All rights reserved. */
 | 
						|
 | 
						|
/* Tests CodeBase multi-user capabilities. */
 | 
						|
 | 
						|
/*    1.  Erase 't4mul2.dbf', 't4mul2.dbt' and 't4mul2.mdx' */
 | 
						|
/*    2.  Run 't4mul2' on one station. */
 | 
						|
/*    3.  Run 't4mul2' on a second station. */
 | 
						|
 | 
						|
#include "d4all.h"
 | 
						|
#ifdef __TURBOC__
 | 
						|
#pragma hdrstop
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
#include "t4test.h"
 | 
						|
 | 
						|
#ifdef S4WINDOWS
 | 
						|
/* currently just exclude <conio.h> */
 | 
						|
#else
 | 
						|
#ifdef S4UNIX
 | 
						|
#ifdef S4CURSES
 | 
						|
/*       #include <curses.h>  */
 | 
						|
#else
 | 
						|
/*       #include <tinfo.h>   */
 | 
						|
#endif
 | 
						|
#else
 | 
						|
#include <conio.h>
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
static FIELD4INFO fields[] =
 | 
						|
{
 | 
						|
{ "TEST", 'C', 10, 0 },
 | 
						|
{ "MEM",  'M', 10, 0 },
 | 
						|
{ 0, 0,0,0 },
 | 
						|
} ;
 | 
						|
 | 
						|
#ifndef S4INDEX_OFF
 | 
						|
static TAG4INFO tags[] =
 | 
						|
{
 | 
						|
{  "TAG", "TEST", "", 0, 0 },
 | 
						|
{  0, 0, 0, 0, 0 },
 | 
						|
} ;
 | 
						|
#endif
 | 
						|
 | 
						|
CODE4 cb;
 | 
						|
CODE4 S4PTR *cb_ptr ;
 | 
						|
DATA4 S4PTR *t4mul2 ;
 | 
						|
INDEX4 S4PTR *test_index ;
 | 
						|
FIELD4 S4PTR *field, S4PTR *mfield ;
 | 
						|
 | 
						|
 | 
						|
static int test_mul2( D4DISPLAY *display, long num_recs )
 | 
						|
{
 | 
						|
  char buf[11] ;
 | 
						|
  int did_create = 1 ;
 | 
						|
  long i_rec, r, mfield_info ;
 | 
						|
 | 
						|
  cb.create_error = 0 ;
 | 
						|
 | 
						|
#ifdef S4INDEX_OFF
 | 
						|
  t4mul2 = d4create( cb_ptr, "T4MUL2", fields, 0 ) ;
 | 
						|
#else
 | 
						|
  t4mul2 = d4create( cb_ptr, "T4MUL2", fields, tags ) ;
 | 
						|
#endif
 | 
						|
  if ( t4mul2 == 0 )
 | 
						|
  {
 | 
						|
    did_create = 0 ;
 | 
						|
    cb.auto_open = 0 ;
 | 
						|
 | 
						|
    d4display_str( display,  "Opening Database. . .", 1 ) ;
 | 
						|
 | 
						|
    t4mul2 = d4open( cb_ptr, "T4MUL2" ) ;
 | 
						|
    if ( t4mul2 == 0 )
 | 
						|
      e4severe( e4result, "t4mul2.c:  Opening database." ) ;
 | 
						|
 | 
						|
    if ( (test_index = i4open( t4mul2, "T4MUL2" ))  == 0 )
 | 
						|
      e4severe( e4result, "Opening Index" ) ;
 | 
						|
  }
 | 
						|
 | 
						|
  field = d4field( t4mul2, "TEST" ) ;
 | 
						|
  mfield = d4field( t4mul2, "MEM" ) ;
 | 
						|
 | 
						|
  if ( field == 0 || mfield == 0 )
 | 
						|
    e4severe( e4result, "t4mul2.c" ) ;
 | 
						|
 | 
						|
  d4display_str( display,  "    Record:  ", 1 ) ;
 | 
						|
 | 
						|
  for ( i_rec = 1L; i_rec <= num_recs; i_rec++ )
 | 
						|
  {
 | 
						|
    if ( d4display_quit( display ) )
 | 
						|
      return 1 ;
 | 
						|
 | 
						|
    if ( d4append_start( t4mul2, 0 ) != 0 )
 | 
						|
      e4severe( e4result, "t4mul2.c" ) ;
 | 
						|
 | 
						|
    if ( did_create )
 | 
						|
    {
 | 
						|
      display->x = (int) 0 ;
 | 
						|
      d4display_str( display,  "    Record:  ", 0 ) ;
 | 
						|
      d4display_num( display, i_rec, 0 ) ;
 | 
						|
      d4display_str( display,  "     New Value:  ", 0 ) ;
 | 
						|
      d4display_num( display, i_rec, 0 ) ;
 | 
						|
      d4display_str( display,  "       ", 0 ) ;
 | 
						|
      f4assign_long( field, (long) i_rec ) ;
 | 
						|
 | 
						|
      c4ltoa45( (long) i_rec, (char S4PTR *) buf, 10 ) ;
 | 
						|
      buf[10] = '\0' ;
 | 
						|
      f4memo_assign_n( mfield, (char S4PTR *) buf, 10 ) ;
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      display->x = (int) 0 ;
 | 
						|
      d4display_str( display,  "    Record:  ", 0 ) ;
 | 
						|
      d4display_num( display, i_rec, 0 ) ;
 | 
						|
      d4display_str( display,  "       ", 0 ) ;
 | 
						|
 | 
						|
      f4assign_long( field, (long) num_recs - i_rec ) ;
 | 
						|
      c4ltoa45( (long) num_recs - i_rec, (char S4PTR *) buf, 10 ) ;
 | 
						|
      buf[10] = '\0' ;
 | 
						|
      f4memo_assign_n( mfield, (char S4PTR *) buf, 10 ) ;
 | 
						|
    }
 | 
						|
    if ( d4append( t4mul2 ) < 0 )
 | 
						|
      e4severe( e4result, "t4mul2: d4append()" ) ;
 | 
						|
 | 
						|
    d4display_str( display, "Before d4unlock()", 1 ) ;
 | 
						|
 | 
						|
    if ( d4unlock( t4mul2 ) != 0 )
 | 
						|
      e4severe( e4result, "t4mul2.c" ) ;
 | 
						|
  }
 | 
						|
 | 
						|
  d4display_str( display,  "        Checking Index File . . .  ", 1 ) ;
 | 
						|
 | 
						|
  if ( d4check( t4mul2 ) != 0 )
 | 
						|
    e4severe( e4result, "d4check()" ) ;
 | 
						|
 | 
						|
  d4display_str( display,  "        Skipping down File . . .  ", 1 ) ;
 | 
						|
  d4display_str( display,  "    Record:  ", 1 ) ;
 | 
						|
 | 
						|
  for ( r = d4reccount( t4mul2 ); r >= 1; r-- )
 | 
						|
  {
 | 
						|
 | 
						|
    if ( d4display_quit( display ) )
 | 
						|
      return 1 ;
 | 
						|
 | 
						|
    if ( d4go( t4mul2, (long)r ) != 0 )
 | 
						|
      e4severe( e4result, "t4mul2.c" ) ;
 | 
						|
    display->x = (int) 0 ;
 | 
						|
    d4display_str( display,  "    Record:  ", 0 ) ;
 | 
						|
    d4display_num( display, r, 0 ) ;
 | 
						|
    d4display_str( display,  "       ", 0 ) ;
 | 
						|
 | 
						|
    mfield_info = c4atol( f4memo_str(mfield), 10 ) ;
 | 
						|
 | 
						|
    if ( f4long(field) != mfield_info )
 | 
						|
      e4severe( e4result, "t4mul2.c" ) ;
 | 
						|
  }
 | 
						|
 | 
						|
  if ( d4close_all( cb_ptr ) != 0 )
 | 
						|
    e4severe( e4result, "t4mul2.c" ) ;
 | 
						|
 | 
						|
#ifdef S4LOCK_CHECK
 | 
						|
  if ( l4lock_check() != 0 )
 | 
						|
    e4severe( e4result, "Not everything was unlocked" ) ;
 | 
						|
#endif
 | 
						|
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
static int  test_with_mem_check( D4DISPLAY *display, long num_recs )
 | 
						|
{
 | 
						|
  d4init( cb_ptr ) ;
 | 
						|
 | 
						|
  cb.hWnd = (unsigned) display->hWnd ;
 | 
						|
#ifdef S4DLL
 | 
						|
  cb.hInst = (unsigned) display->hInst ;
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( test_mul2( display, num_recs ) )
 | 
						|
    return 1 ;
 | 
						|
 | 
						|
  d4init_undo( &cb ) ;
 | 
						|
  mem4reset() ;
 | 
						|
 | 
						|
#ifdef S4DEBUG
 | 
						|
  mem4check_memory() ;
 | 
						|
 | 
						|
#ifndef S4DLL
 | 
						|
  if ( mem4free_check(100) != 0 )
 | 
						|
    e4severe( e4result, "t4mul2:  Memory items not freed" ) ;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int S4FUNCTION t4test( D4DISPLAY *display )
 | 
						|
{
 | 
						|
  long num_recs = 0 ;
 | 
						|
 | 
						|
  cb_ptr = &cb ;
 | 
						|
  num_recs = atol( d4parsestring_nparm( &display->parse_str ) ) ;
 | 
						|
  if ( num_recs <= 0 )
 | 
						|
    e4severe( 0, "T4MUL2:  Missing command line parameter(s)" ) ;
 | 
						|
  
 | 
						|
  d4display_str( display,  "T4MUL2 Test  ", 1 ) ;
 | 
						|
  d4display_str( display,  " ", 1 ) ;
 | 
						|
  d4display_str( display,  "Number of Recs:   ", 1 ) ;
 | 
						|
  d4display_num( display,  (long) num_recs, 0 ) ;
 | 
						|
  d4display_str( display,  "", 1 ) ;
 | 
						|
 | 
						|
  if ( test_with_mem_check( display, num_recs ) )
 | 
						|
    e4severe( e4result, "t4mul2.c" ) ;
 | 
						|
 | 
						|
  display->y += 2 ;
 | 
						|
  d4display_str( display, "T4MUL2:   SUCCESS", 1 ) ;
 | 
						|
  d4display_str( display, "", 1 ) ;
 | 
						|
  return 1 ;
 | 
						|
}
 |