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
		
			
				
	
	
		
			695 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			695 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
 /* t4expr.c   (c)Copyright Sequiter Software Inc., 1990-1994. All rights reserved.
 | 
						|
    Tests Code Base Expression Evaluation Routines.
 | 
						|
    */
 | 
						|
 | 
						|
#include "d4all.h"
 | 
						|
#ifdef __TURBOC__
 | 
						|
#pragma hdrstop
 | 
						|
#endif
 | 
						|
 | 
						|
#include "t4test.h"
 | 
						|
 | 
						|
 static FIELD4INFO testfields[] =
 | 
						|
{
 | 
						|
  /* name, type, len_field, dec  */
 | 
						|
{"N1",   'F',      5,    2,    },
 | 
						|
{"N2",   'N',     10,    0,    },
 | 
						|
{"N3",   'N',      8,    3,    },
 | 
						|
{"N4",   'N',     19,   10,    },
 | 
						|
{"C1",   'C',     10,    0,    },
 | 
						|
{"C2",   'C',     10,    0,    },
 | 
						|
{"C3",   'C',     10,    0,    },
 | 
						|
{"C4",   'C',     15,    0,    },
 | 
						|
{"C5",   'C',     15,    0,    },
 | 
						|
{"C6",   'C',      5,    0,    },
 | 
						|
{"D1",   'D',      8,    0,    },
 | 
						|
{"D2",   'D',      8,    0,    },
 | 
						|
{"L1",   'L',      1,    0,    },
 | 
						|
{"L2",   'L',      1,    0,    },
 | 
						|
{0,0,0,0,}
 | 
						|
};
 | 
						|
 | 
						|
typedef struct test_expr_st
 | 
						|
{
 | 
						|
  char  expr[30] ;
 | 
						|
  char  result[50] ;
 | 
						|
  char  result_type ;
 | 
						|
}  TEST_EXPR ;
 | 
						|
 | 
						|
CODE4 cb;
 | 
						|
DATA4 *data;
 | 
						|
 | 
						|
/* this is required because of potential 'double return'
 | 
						|
   problems that may occur in cross-platform DLL usage */
 | 
						|
static TEST_EXPR test_expr[] =
 | 
						|
{
 | 
						|
{  ".NOT. .F.                    ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "5>4.AND.6.7>4.3              ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
 | 
						|
{  "\"NEW   \"  -  \"ME \"       ",
 | 
						|
   "NEWME    \0                  ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "'NEW   '  -  'ME '           ",
 | 
						|
   "NEWME    \0                  ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
   /* 5 */
 | 
						|
{  ".T. .AND. .F.                ",
 | 
						|
   "0                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "IIF(C1=\"SMUR\",\"TRUE\",\"FALS\")",
 | 
						|
   "FALS\0                       ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "((((7))))*(1+2)              ",
 | 
						|
   "21                           ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "N1+N2                        ",
 | 
						|
   "12                           ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "N1-N2                        ",
 | 
						|
   "8                            ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
   /* 10 */
 | 
						|
{  "N1*N2                        ",
 | 
						|
   "20                           ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "N1/N2                        ",
 | 
						|
   "5                            ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1+C2                        ",
 | 
						|
   "character1CHARACTER2\0        ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1-C2                        ",
 | 
						|
   "character1CHARACTER2\0        ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1-C4-C5                     ",
 | 
						|
   "character11988020119880323              \0",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
   /* 15 */
 | 
						|
{  "C5-C1-C3-C2                  ",
 | 
						|
   "19880323character1ChArAcTeR3CHARACTER2       \0",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1=C2                        ",
 | 
						|
   "0                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1=C3                        ",
 | 
						|
   "0                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1>C2                        ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1<C2                        ",
 | 
						|
   "0                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
   /* 20 */
 | 
						|
{  "C1<>C2                       ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1#C2                        ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1#C2                        ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1<>C3                       ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1$C2                        ",
 | 
						|
   "0                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
   /* 25 */
 | 
						|
{  "\"ST\"$\"MOST\"                  ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
#ifndef __SC__
 | 
						|
#ifdef _MSC_VER
 | 
						|
#pragma warning( disable : 4129 )
 | 
						|
#endif
 | 
						|
{  "\[ST\]$\[MOST\]                  ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
#ifdef _MSC_VER
 | 
						|
#pragma warning( default : 4129 )
 | 
						|
#endif
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef S4GERMAN
 | 
						|
{  "CTOD(\"01.02.88\")             ",
 | 
						|
   "19880201\0                    ",
 | 
						|
   r4date_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "DTOC(D2)                     ",
 | 
						|
   "23.03.88\0                    ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
#else
 | 
						|
{  "CTOD(\"02/01/88\")             ",
 | 
						|
   "19880201\0                    ",
 | 
						|
   r4date_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "DTOC(D2)                     ",
 | 
						|
   "03/23/88\0                    ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
#endif
 | 
						|
 | 
						|
{  "STOD(C4)                     ",
 | 
						|
   "19880201\0                    ",
 | 
						|
   r4date_doub
 | 
						|
   },
 | 
						|
 | 
						|
   /* 30 */
 | 
						|
{  "DTOS(D2)                     ",
 | 
						|
   "19880323\0                    ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "D1=STOD(C4)                  ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "C5=DTOS(D2)                  ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "IIF(C1=\"SMUR\",\"TRUE\",\"FALS\")",
 | 
						|
   "FALS\0                         ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "RECCOUNT()                   ",
 | 
						|
   "1                            ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
   /* 35 */
 | 
						|
{  "RECNO()                      ",
 | 
						|
   "1                            ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "STR(5.7,4,2)                 ",
 | 
						|
   "5.70\0                        ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "VAL(\"2323\")                  ",
 | 
						|
   "2323                         ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "SUBSTR(C1,2,2)               ",
 | 
						|
   "ha\0                          ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "C1 + SUBSTR(C1,2,2)          ",
 | 
						|
   "character1ha\0                ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "3*4-2                        ",
 | 
						|
   "10                           ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "L1                           ",
 | 
						|
   "0                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  ".NOT. .T.                    ",
 | 
						|
   "0                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  ".NOT. .F.                    ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  ".T.                          ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  ".T. .OR. .F.                 ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  ".T. .AND. .F.                ",
 | 
						|
   "0                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "\"A \" + \"B   \"                ",
 | 
						|
   "A B   \0                      ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "\"NEW   \"  -  \"ME \"           ",
 | 
						|
   "NEWME    \0                   ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "\"    \" - \" ab\"               ",
 | 
						|
   " ab    \0                     ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "((((7))))*(1+2)              ",
 | 
						|
   "21                           ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  " IIF( .F. , 1, 2)            ",
 | 
						|
   "2                            ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "   IIF ( .T., \"G\", \"B\" )",
 | 
						|
   "G\0                      ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
 | 
						|
 | 
						|
{  "(4*3)<=(2*6)                 ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  " .F. .AND. .F. .OR. .T.      ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  " .NOT. .F. .AND. .F.         ",
 | 
						|
   "0                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  " .NOT. .F. .AND. .F. .OR. .T.",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  " .NOT. 3 > 2                 ",
 | 
						|
   "0                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "   C6+                  DEL()",
 | 
						|
   "CHAR *\0                      ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "DELETED()                    ",
 | 
						|
   "1                            ",
 | 
						|
   r4log
 | 
						|
   },
 | 
						|
 | 
						|
{  "MONTH(DATE()   )             ",
 | 
						|
   "7                            ",
 | 
						|
   1
 | 
						|
   },
 | 
						|
 | 
						|
{  "RECCOUNT() + 3               ",
 | 
						|
   "4                            ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "RECNO()                      ",
 | 
						|
   "1                            ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "STR(5.73,6,3)                ",
 | 
						|
   " 5.730\0                      ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "STR(9.643,3)                 ",
 | 
						|
   " 10\0                        ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "YEAR(D2    )                 ",
 | 
						|
   "1988                         ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "DATE()                       ",
 | 
						|
   "                             ",
 | 
						|
   1
 | 
						|
   },
 | 
						|
 | 
						|
{  "TIME()                       ",
 | 
						|
   "                             ",
 | 
						|
   2
 | 
						|
   },
 | 
						|
 | 
						|
#ifndef S4NO_POW
 | 
						|
#ifndef __ZTC__
 | 
						|
 | 
						|
   /* Zortech fails because Zortech 'pow' does not round the result. */
 | 
						|
{  "N1^N2                        ",
 | 
						|
   "100                          ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "2^4                          ",
 | 
						|
   "16                           ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "3**5                         ",
 | 
						|
   "243                          ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef S4UNIX
 | 
						|
#ifndef __ZTC__
 | 
						|
#ifndef __HIGHC__
 | 
						|
{  "N4-N3                        ",
 | 
						|
   "986419.754001                ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
 | 
						|
{  "STR(22.2,5,1)                ",
 | 
						|
   " 22.2\0                       ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "STR(21.5,6,0)                ",
 | 
						|
   "    22\0                      ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef S4UNIX
 | 
						|
#ifndef S4NO_POW
 | 
						|
#ifndef __HIGHC__
 | 
						|
#ifndef __ZTC__
 | 
						|
{  "((13))**7+13                 ",
 | 
						|
   "62748530                     ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
#endif
 | 
						|
 | 
						|
{  "((13))^7+13                  ",
 | 
						|
   "62748530                     ",
 | 
						|
   r4num_doub
 | 
						|
   },
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
{  "STR(22.2,6,2)+STR(11.1,7,1)  ",
 | 
						|
   " 22.20   11.1\0               ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "STR(1.5,3,1)+STR(1.9345,4,2) ",
 | 
						|
   "1.51.93\0                     ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "'ooga'+STR(1.9345,4,2) ",
 | 
						|
   "ooga1.93\0                    ",
 | 
						|
   r4str
 | 
						|
   },
 | 
						|
 | 
						|
{  "\0                            ",
 | 
						|
   "                             ",
 | 
						|
   '\0'
 | 
						|
   },
 | 
						|
 };
 | 
						|
 | 
						|
static int do_test( D4DISPLAY *disp )
 | 
						|
{
 | 
						|
  int i, str_len ;
 | 
						|
  char logical;
 | 
						|
  double d ;
 | 
						|
  EXPR4 *ptr ;
 | 
						|
  char *buf, *key_result;
 | 
						|
  char date_buf[20] ;
 | 
						|
 | 
						|
#ifdef S4WINDOWS
 | 
						|
  cb.hWnd = (unsigned) disp->hWnd ;
 | 
						|
#ifdef S4DLL
 | 
						|
  cb.hInst = (unsigned) disp->hInst ;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
  cb.safety = '\0';
 | 
						|
 | 
						|
#ifdef S4OPEN_FILE
 | 
						|
  data = d4open( &cb, "T4EXPR" ) ;
 | 
						|
#else
 | 
						|
  data = d4create( &cb, "T4EXPR", testfields, 0);
 | 
						|
#endif
 | 
						|
 | 
						|
  if ( cb.error_code || data == 0 )
 | 
						|
    t4severe( t4err_data, "01" ) ;
 | 
						|
 | 
						|
  d4opt_start( &cb ) ;
 | 
						|
 | 
						|
  if ( d4append_start(data, 0) < 0)
 | 
						|
    t4severe( t4err_append, "02" ) ;
 | 
						|
 | 
						|
  f4assign( (d4field(data, "C1")), "character1");
 | 
						|
  f4assign( (d4field(data, "C2")), "CHARACTER2");
 | 
						|
  f4assign( (d4field(data, "C3")), "ChArAcTeR3");
 | 
						|
  f4assign( (d4field(data, "C4")), "19880201");
 | 
						|
  f4assign( (d4field(data, "C5")), "19880323");
 | 
						|
  f4assign( (d4field(data, "C6")), "CHAR");
 | 
						|
 | 
						|
  d = 10.0 ;
 | 
						|
  f4assign_double( (d4field(data, "N1")), d ) ;
 | 
						|
  d = 2.0 ;
 | 
						|
  f4assign_double( (d4field(data, "N2")), d );
 | 
						|
  d = 1234.567 ;
 | 
						|
  f4assign_double( (d4field(data, "N3")), d );
 | 
						|
  d = 987654.321001 ;
 | 
						|
  f4assign_double( (d4field(data, "N4")), d );
 | 
						|
 | 
						|
  f4assign( ( d4field(data, "D1" ) ), "19880201" ) ;
 | 
						|
  f4assign( ( d4field(data, "D2" ) ), "19880323" ) ;
 | 
						|
  logical = 'F';
 | 
						|
  f4assign( ( d4field( data, "L1" ) ), &logical ) ;
 | 
						|
  logical = 'T';
 | 
						|
  f4assign( ( d4field( data, "L2" ) ), &logical ) ;
 | 
						|
  d4delete( data ) ;
 | 
						|
 | 
						|
  if ( d4append( data ) < 0 )
 | 
						|
    t4severe( t4err_append, "03" ) ;
 | 
						|
 | 
						|
  for ( i=0; test_expr[i].result_type != '\0'; i++ )
 | 
						|
  {
 | 
						|
    if ( d4display_quit( disp ) )
 | 
						|
      return 1 ;
 | 
						|
 | 
						|
    d4display_num( disp, i, 1 ) ;
 | 
						|
    d4display_str( disp,  ") On Expression: ", 0 ) ;
 | 
						|
    d4display_str( disp, test_expr[i].expr, 0 ) ;
 | 
						|
    ptr = expr4parse(data, test_expr[i].expr ) ;
 | 
						|
 | 
						|
    if ( ptr == (void *) 0 )
 | 
						|
      t4severe( t4err_expr, "04" ) ;
 | 
						|
 | 
						|
    if (expr4vary(ptr, &buf) < 0)
 | 
						|
      t4severe( t4err_expr, "05" ) ;
 | 
						|
 | 
						|
    if ( test_expr[i].result_type == 1 )/* DATE() function, cannot compare */
 | 
						|
    {
 | 
						|
      date4assign(buf, (long) *(double *)buf ) ;
 | 
						|
      buf[8] = '\0' ;
 | 
						|
      date4format(buf, date_buf, "MMM DD/CCYY" ) ;
 | 
						|
      d4display_str( disp,  "", 1 ) ;
 | 
						|
      d4display_str( disp, "DATE:", 0) ;
 | 
						|
      d4display_str( disp, date_buf, 1) ;
 | 
						|
    }
 | 
						|
 | 
						|
    if ( test_expr[i].result_type == 2 )/* TIME() function, cannot compare */
 | 
						|
    {
 | 
						|
      d4display_str( disp, "TIME:", 0) ;
 | 
						|
      d4display_str( disp, buf, 1) ;
 | 
						|
      d4display_str( disp,  "", 1 ) ;
 | 
						|
    }
 | 
						|
 | 
						|
    if ( test_expr[i].result_type > 10 )
 | 
						|
    {
 | 
						|
      if ( (char) expr4type(ptr) != test_expr[i].result_type )
 | 
						|
        t4severe( t4err_expr, "06" ) ;
 | 
						|
 | 
						|
      switch ( (char) expr4type(ptr) )
 | 
						|
      {
 | 
						|
      case r4str :
 | 
						|
        str_len = expr4key( ptr, &key_result ) ;
 | 
						|
        if ( memcmp( buf, test_expr[i].result, str_len ) != 0 )
 | 
						|
        {
 | 
						|
          e4describe( &cb, 0, "t4expr  EXPR(r4str):", test_expr[i].expr, (char *) 0 ) ;
 | 
						|
          e4exit( &cb) ;
 | 
						|
        }
 | 
						|
        if ( strcmp( key_result, test_expr[i].result) != 0 )
 | 
						|
        {
 | 
						|
          e4describe( &cb, 0, "t4expr  EXPR(r4str):", test_expr[i].expr, (char *) 0 ) ;
 | 
						|
          e4exit( &cb) ;
 | 
						|
        }
 | 
						|
        break ;
 | 
						|
 | 
						|
 | 
						|
      case r4log :
 | 
						|
        if ( ( *(int*) buf && !(c4atoi(test_expr[i].result,1)) )  ||
 | 
						|
            ( !*(int*) buf && (c4atoi(test_expr[i].result,1)) ) )
 | 
						|
        {
 | 
						|
          e4describe( &cb, 0, "t4expr  EXPR(r4log):", test_expr[i].expr, (char *) 0 ) ;
 | 
						|
          e4exit( &cb) ;
 | 
						|
        }
 | 
						|
        break;
 | 
						|
 | 
						|
      case r4num_doub :
 | 
						|
 | 
						|
#ifndef S4WINDOWS
 | 
						|
        c4atod2(test_expr[i].result, 30, &d );
 | 
						|
        if ( *(double *) buf != d )
 | 
						|
        {
 | 
						|
          e4describe( &cb, 0, "t4expr  EXPR(r4num_doub):", test_expr[i].expr, (char *) 0 ) ;
 | 
						|
          e4exit( &cb) ;
 | 
						|
        }
 | 
						|
#endif
 | 
						|
        break;
 | 
						|
 | 
						|
      case r4date_doub :
 | 
						|
      {
 | 
						|
        char buf2[8] ;
 | 
						|
        long d_ptr ;
 | 
						|
 | 
						|
        d_ptr = (long) *(double *) buf;
 | 
						|
 | 
						|
        date4assign( buf2, d_ptr ) ;
 | 
						|
 | 
						|
        if ( memcmp(  buf2, test_expr[i].result, 8) != 0 )
 | 
						|
        {
 | 
						|
          e4describe( &cb, 0, "t4expr  EXPR)r4date_doub):", test_expr[i].expr, (char *) 0 ) ;
 | 
						|
          e4exit( &cb) ;
 | 
						|
        }
 | 
						|
        break;
 | 
						|
      }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    expr4free(ptr) ;
 | 
						|
  }
 | 
						|
 | 
						|
  if ( d4close_all( &cb ) != 0 )
 | 
						|
    t4severe( t4err_close, "07" ) ;
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
static int  test_with_mem_check( D4DISPLAY *disp )
 | 
						|
{
 | 
						|
  d4init( &cb ) ;
 | 
						|
 | 
						|
  if ( do_test( disp ) )
 | 
						|
    return 1 ;
 | 
						|
 | 
						|
#ifndef S4TEST_KEEP_FILES
 | 
						|
  u4remove( "T4EXPR.dbf" ) ;
 | 
						|
#endif
 | 
						|
 | 
						|
  d4init_undo(&cb) ;
 | 
						|
  mem4reset() ;
 | 
						|
 | 
						|
#ifdef S4DEBUG
 | 
						|
  mem4check_memory() ;
 | 
						|
 | 
						|
#ifndef S4DLL
 | 
						|
  if ( mem4free_check(100) != 0 )
 | 
						|
    t4severe( t4err_memory, "08" ) ;
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
  return 0 ;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int S4FUNCTION t4test( D4DISPLAY *disp )
 | 
						|
{
 | 
						|
  if ( test_with_mem_check( disp ) )
 | 
						|
    t4severe( t4err_general, "09" ) ;
 | 
						|
  if ( test_with_mem_check( disp ) )
 | 
						|
    t4severe( t4err_general, "10" ) ;
 | 
						|
  if ( test_with_mem_check( disp ) )
 | 
						|
    t4severe( t4err_general, "11" ) ;
 | 
						|
 | 
						|
  d4display_str( disp, "T4EXPR:   SUCCESS", 1) ;
 | 
						|
  d4display_str( disp, "", 1) ;
 | 
						|
  return 1 ;
 | 
						|
}
 |