252 lines
5.1 KiB
C
252 lines
5.1 KiB
C
|
/* t4positi.c (c)Copyright Sequiter Software Inc., 1990-1993. All rights reserved. */
|
||
|
|
||
|
/* Tests Code Base 'd4position' routine. */
|
||
|
|
||
|
#include "d4all.h"
|
||
|
#ifdef __TURBOC__
|
||
|
#pragma hdrstop
|
||
|
#endif
|
||
|
#include "t4test.h"
|
||
|
|
||
|
#ifndef S4INDEX_OFF
|
||
|
|
||
|
static FIELD4INFO fields[] =
|
||
|
{
|
||
|
{ "FIELD", 'C', 25, 0 },
|
||
|
{ 0, 0,0,0 },
|
||
|
} ;
|
||
|
|
||
|
static TAG4INFO tags[] =
|
||
|
{
|
||
|
{ "TAG_NAME", "FIELD", "", 0, 0 },
|
||
|
{ 0,0,0, 0, 0 },
|
||
|
} ;
|
||
|
|
||
|
CODE4 cb;
|
||
|
DATA4 *data;
|
||
|
FIELD4 *field ;
|
||
|
TAG4 *tag ;
|
||
|
|
||
|
static int test_position( D4DISPLAY *display ) ;
|
||
|
|
||
|
static int test_main( D4DISPLAY *display, long num_recs, int do_open )
|
||
|
{
|
||
|
long on_rec ;
|
||
|
|
||
|
cb.safety = 0 ;
|
||
|
|
||
|
if ( do_open )
|
||
|
{
|
||
|
data = d4open( &cb, "T4POSITI" ) ;
|
||
|
d4zap( data, 1L, d4reccount( data ) ) ;
|
||
|
}
|
||
|
else
|
||
|
data = d4create( &cb, "T4POSITI", fields, tags ) ;
|
||
|
|
||
|
if ( data == 0 )
|
||
|
t4severe( t4err_data, "01" ) ;
|
||
|
|
||
|
d4opt_start( &cb ) ;
|
||
|
|
||
|
field = d4field( data, "FIELD" ) ;
|
||
|
if ( field == 0 )
|
||
|
t4severe( t4err_field, "02" ) ;
|
||
|
|
||
|
d4display_str( display, " Writing Record: ", 1 ) ;
|
||
|
|
||
|
for ( on_rec = 1; on_rec <= num_recs; on_rec++ )
|
||
|
{
|
||
|
if ( d4display_quit( display ) )
|
||
|
return 1 ;
|
||
|
|
||
|
if ( on_rec % 50 == 0 || on_rec == num_recs )
|
||
|
{
|
||
|
display->x = (int) 0 ;
|
||
|
d4display_str( display, " Writing Record: ", 0 ) ;
|
||
|
d4display_num( display, on_rec, 0 ) ;
|
||
|
}
|
||
|
|
||
|
if ( d4append_start(data, 0) < 0 )
|
||
|
t4severe( t4err_append, "03" ) ;
|
||
|
|
||
|
f4assign_long( field, on_rec ) ;
|
||
|
if ( d4append(data) < 0 )
|
||
|
t4severe( t4err_append, "04" ) ;
|
||
|
}
|
||
|
|
||
|
if ( d4check( data ) != 0 )
|
||
|
t4severe( t4err_check, "05" ) ;
|
||
|
|
||
|
d4tag_select( data, 0 ) ;
|
||
|
if ( test_position( display ) )
|
||
|
return 1 ;
|
||
|
|
||
|
tag = d4tag( data, "TAG_NAME" ) ;
|
||
|
if ( tag == 0 )
|
||
|
t4severe( t4err_tag, "06" ) ;
|
||
|
d4tag_select( data, tag ) ;
|
||
|
if ( test_position( display ) )
|
||
|
return 1 ;
|
||
|
|
||
|
if ( d4close_all( &cb ) != 0 )
|
||
|
t4severe( t4err_close, "07" ) ;
|
||
|
return 0 ;
|
||
|
}
|
||
|
|
||
|
|
||
|
static int test_position( D4DISPLAY *display )
|
||
|
{
|
||
|
long count, r, top_rec, bottom_rec ;
|
||
|
double pos ;
|
||
|
double last_pos = -.1 ;
|
||
|
|
||
|
count = d4reccount( data ) ;
|
||
|
|
||
|
for ( r = 1L; r <= count; r++ )
|
||
|
{
|
||
|
if ( d4display_quit( display ) )
|
||
|
return 1 ;
|
||
|
|
||
|
if ( d4go( data, r ) != 0 )
|
||
|
t4severe( t4err_go, "08" ) ;
|
||
|
|
||
|
d4position2( data, &pos ) ;
|
||
|
|
||
|
if ( pos <= last_pos )
|
||
|
t4severe( t4err_position, "09" ) ;
|
||
|
|
||
|
if ( d4position_set( data, pos ) != 0 )
|
||
|
t4severe( t4err_position, "10" ) ;
|
||
|
|
||
|
if ( d4recno( data ) != r )
|
||
|
t4severe( t4err_recno, "11" ) ;
|
||
|
|
||
|
if ( d4recno( data ) != r )
|
||
|
t4severe( t4err_recno, "12" ) ;
|
||
|
|
||
|
pos = last_pos ;
|
||
|
}
|
||
|
|
||
|
/* EOF, BOF testing */
|
||
|
if ( d4top( data ) != 0 )
|
||
|
t4severe( t4err_go, "13" ) ;
|
||
|
top_rec = d4recno( data ) ;
|
||
|
|
||
|
if ( d4position_set( data, 0.0 ) != 0 )
|
||
|
t4severe( t4err_position, "14" ) ;
|
||
|
if ( top_rec != d4recno( data ) )
|
||
|
t4severe( t4err_recno, "15" ) ;
|
||
|
|
||
|
if ( d4bottom( data ) != 0 )
|
||
|
t4severe( t4err_go, "16" ) ;
|
||
|
bottom_rec = d4recno( data ) ;
|
||
|
|
||
|
if ( d4position_set( data, 1.0 ) != 0 )
|
||
|
t4severe( t4err_position, "17" ) ;
|
||
|
if ( bottom_rec != d4recno( data ) )
|
||
|
t4severe( t4err_recno, "18" ) ;
|
||
|
|
||
|
if ( d4skip( data, 1L ) != r4eof )
|
||
|
t4severe( t4err_skip, "19" ) ;
|
||
|
|
||
|
d4position2( data, &pos );
|
||
|
if ( pos <= 1.0 )
|
||
|
t4severe( t4err_position, "20" ) ;
|
||
|
|
||
|
if ( d4position_set( data, 1.1 ) != r4eof )
|
||
|
t4severe( t4err_position, "21" ) ;
|
||
|
|
||
|
if ( ! d4eof( data ) )
|
||
|
t4severe( t4err_general, "22" ) ;
|
||
|
|
||
|
return 0 ;
|
||
|
}
|
||
|
|
||
|
|
||
|
static int test_with_mem_check( D4DISPLAY *display, long num_recs )
|
||
|
{
|
||
|
d4init( &cb ) ;
|
||
|
|
||
|
cb.hWnd = (unsigned) display->hWnd ;
|
||
|
#ifdef S4DLL
|
||
|
cb.hInst = (unsigned) display->hInst ;
|
||
|
#endif
|
||
|
|
||
|
if ( test_main( display, num_recs, 0 ) )
|
||
|
return 1 ;
|
||
|
if ( test_main( display, num_recs, 1 ) )
|
||
|
return 1 ;
|
||
|
|
||
|
#ifndef S4TEST_KEEP_FILES
|
||
|
u4remove( "T4POSITI.dbf" ) ;
|
||
|
#ifdef N4OTHER
|
||
|
u4remove( "T4POSITI.CGP" ) ;
|
||
|
#endif
|
||
|
#ifdef S4MDX
|
||
|
u4remove( "T4POSITI.mdx" ) ;
|
||
|
#endif
|
||
|
#ifdef S4FOX
|
||
|
u4remove( "T4POSITI.cdx" ) ;
|
||
|
#endif
|
||
|
#ifdef S4CLIPPER
|
||
|
u4remove( "TAG_NAME.NTX" ) ;
|
||
|
#endif
|
||
|
#ifdef S4NDX
|
||
|
u4remove( "TAG_NAME.NDX" ) ;
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
d4init_undo(&cb) ;
|
||
|
mem4reset() ;
|
||
|
|
||
|
#ifdef S4DEBUG
|
||
|
mem4check_memory() ;
|
||
|
|
||
|
#ifndef S4DLL
|
||
|
if ( mem4free_check(100) != 0 )
|
||
|
t4severe( t4err_memory, "23" ) ;
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
return 0 ;
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
int S4FUNCTION t4test( D4DISPLAY *display )
|
||
|
{
|
||
|
#ifdef S4INDEX_OFF
|
||
|
display->y += 2 ;
|
||
|
d4display_str( display, "T4POSITI: REQUIRES INDEXING (S4INDEX_OFF DEFINED)", 1) ;
|
||
|
d4display_str( display, "", 1) ;
|
||
|
return 1 ;
|
||
|
#else
|
||
|
#ifdef S4CLIPPER
|
||
|
d4display_str( display, "T4POSITI: not for CLIPPER format ", 1 ) ;
|
||
|
return 0 ;
|
||
|
#else
|
||
|
long num_recs = 1000 ;
|
||
|
|
||
|
#ifndef S4NO_PARMS
|
||
|
num_recs = atol( d4parsestring_nparm( &display->parse_str ) ) ;
|
||
|
if ( num_recs <= 0 )
|
||
|
t4severe( t4err_parm, "24" ) ;
|
||
|
#endif
|
||
|
|
||
|
d4display_str( display, "T4POSITION 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 ) )
|
||
|
t4severe( t4err_general, "25" ) ;
|
||
|
|
||
|
display->y += 2 ;
|
||
|
d4display_str( display, "T4POSITION: SUCCESS", 1) ;
|
||
|
d4display_str( display, "", 1) ;
|
||
|
return 1 ;
|
||
|
#endif
|
||
|
#endif
|
||
|
}
|