campo-sirio/cb5/t4memo.c
alex a0f5e0898b This commit was generated by cvs2svn to compensate for changes in r975,
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
1995-02-06 15:33:45 +00:00

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 ;
}