a0f5e0898b
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
341 lines
7.8 KiB
C
Executable File
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 ;
|
|
}
|