diff --git a/harbour/ChangeLog b/harbour/ChangeLog index fd83836a68..4b9b74a8d1 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,39 @@ +20000405-02:03 GMT+1 Victor Szakats + + * source/rtl/math.c + ! exception redefined as _exception for Borland C++ 5.5 and upper. + ! Disabled math exception handling for Borland C++ 5.3 C++ mode, + since it won't work. Other Borland C++ version (4.x,5.x) should be + also checked in this respect. + + * source/rtl/gtwin/gtwin.c + ! max()/min() changed to HB_MAX()/HB_MIN() + + * source/rtl/filesys.c + ! Explicit declaration of POSIX rename() moved to the Unix branch. + + * source/compiler/harbour.c + ! isatty() declaration readded for (__BORLANDC__ && __cplusplus) + + * makefile.bc + ! Fixed to create unistd.h in the local OBJ dir for macrol.c and + harbourl.c. + + * makefile.vc + ! Using a safer method for the unistd.h workaround. It's now created + in the local OBJ dir instead of the common INCLUDE. This way it's + impossible to accidently leave it there and break Cygnus and other + GCC make processes. + + + utils/hbtest/rt_stra.prg + * utils/hbtest/* + * makefile.* + ! rt_str.prg split to make it compile with BCC31. + + ; All these fixes were needed to compile in C++ mode with Borland C++ + (3.1, 5.3, 5.5). Hmm, the Harbour .EXE sizes are actually 10% smaller + than with 32 bit Borland Cs. + 2000-04-04 20:00 GMT-4 David G. Holm * source/rtl/dir.c @@ -21,6 +57,7 @@ 20000404-08:00 GMT-3 Luiz Rafael Culik *doc/en/dbstrux.txt *Small reformating + 20000404-13:00 GMT+1 Victor Szakats * source/rdd/dbstrux.prg @@ -371,7 +408,7 @@ * source/rtl/gtapi.c * Cast - * source/common/hbver.h + * source/common/hbver.c % #include is always included by hbdefs.h, so it's not needed to add it explicitly. Please test it anyway. diff --git a/harbour/makefile.bc b/harbour/makefile.bc index eec45ea9fa..722409f676 100644 --- a/harbour/makefile.bc +++ b/harbour/makefile.bc @@ -512,6 +512,7 @@ HBTEST_EXE_OBJS = \ $(OBJ_DIR)\rt_math.obj \ $(OBJ_DIR)\rt_date.obj \ $(OBJ_DIR)\rt_str.obj \ + $(OBJ_DIR)\rt_stra.obj \ $(OBJ_DIR)\rt_trans.obj \ $(OBJ_DIR)\rt_array.obj \ $(OBJ_DIR)\rt_file.obj \ @@ -676,7 +677,9 @@ $(OBJ_DIR)\harboury.obj : $(OBJ_DIR)\harboury.c $(CC) $(CLIBFLAGS) -o$@ $** $(OBJ_DIR)\harbourl.obj : $(OBJ_DIR)\harbourl.c + -echo. > $(OBJ_DIR)\unistd.h $(CC) $(CLIBFLAGS) -I$(OBJ_DIR) -o$@ $** + -del $(OBJ_DIR)\unistd.h $(OBJ_DIR)\cmdcheck.obj : $(COMPILER_DIR)\cmdcheck.c $(CC) $(CLIBFLAGS) -o$@ $** @@ -1741,7 +1744,9 @@ $(OBJ_DIR)\macroy.obj : $(OBJ_DIR)\macroy.c tlib $(MACRO_LIB) -+$@,, $(OBJ_DIR)\macrol.obj : $(OBJ_DIR)\macrol.c + -echo. > $(OBJ_DIR)\unistd.h $(CC) $(CLIBFLAGS) -I$(OBJ_DIR) -o$@ $** + -del $(OBJ_DIR)\unistd.h tlib $(MACRO_LIB) -+$@,, $(OBJ_DIR)\macroa.obj : $(MACRO_DIR)\macroa.c @@ -1949,6 +1954,7 @@ $(HBTEST_EXE) : $(HBTEST_EXE_OBJS) echo. $(OBJ_DIR)\rt_math.obj >> make.tmp echo. $(OBJ_DIR)\rt_date.obj >> make.tmp echo. $(OBJ_DIR)\rt_str.obj >> make.tmp + echo. $(OBJ_DIR)\rt_stra.obj >> make.tmp echo. $(OBJ_DIR)\rt_trans.obj >> make.tmp echo. $(OBJ_DIR)\rt_array.obj >> make.tmp echo. $(OBJ_DIR)\rt_file.obj >> make.tmp @@ -1995,6 +2001,12 @@ $(OBJ_DIR)\rt_str.c : $(HBTEST_DIR)\rt_str.prg $(OBJ_DIR)\rt_str.obj : $(OBJ_DIR)\rt_str.c $(CC) $(CLIBFLAGS) -o$@ $** +$(OBJ_DIR)\rt_stra.c : $(HBTEST_DIR)\rt_stra.prg + $(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@ + +$(OBJ_DIR)\rt_stra.obj : $(OBJ_DIR)\rt_stra.c + $(CC) $(CLIBFLAGS) -o$@ $** + $(OBJ_DIR)\rt_trans.c : $(HBTEST_DIR)\rt_trans.prg $(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@ diff --git a/harbour/makefile.vc b/harbour/makefile.vc index b6a7ce6c1e..7707024b71 100644 --- a/harbour/makefile.vc +++ b/harbour/makefile.vc @@ -675,9 +675,10 @@ $(HBTEST_EXE) : \ $(HBTEST_DIR)\rt_math.prg \ $(HBTEST_DIR)\rt_misc.prg \ $(HBTEST_DIR)\rt_str.prg \ + $(HBTEST_DIR)\rt_stra.prg \ $(HBTEST_DIR)\rt_trans.prg $(HARBOUR_EXE) $(HARBOURFLAGS) -o$(OBJ_DIR)\ $** - $(CC) $(CFLAGS) -Fo$(OBJ_DIR)\ $(OBJ_DIR)\hbtest.c $(OBJ_DIR)\rt_array.c $(OBJ_DIR)\rt_date.c $(OBJ_DIR)\rt_file.c $(OBJ_DIR)\rt_hvm.c $(OBJ_DIR)\rt_math.c $(OBJ_DIR)\rt_misc.c $(OBJ_DIR)\rt_str.c $(OBJ_DIR)\rt_trans.c -o $(HBTEST_EXE) /link $(LIBS) + $(CC) $(CFLAGS) -Fo$(OBJ_DIR)\ $(OBJ_DIR)\hbtest.c $(OBJ_DIR)\rt_array.c $(OBJ_DIR)\rt_date.c $(OBJ_DIR)\rt_file.c $(OBJ_DIR)\rt_hvm.c $(OBJ_DIR)\rt_math.c $(OBJ_DIR)\rt_misc.c $(OBJ_DIR)\rt_str.c $(OBJ_DIR)\rt_stra.c $(OBJ_DIR)\rt_trans.c -o $(HBTEST_EXE) /link $(LIBS) # # HBDOC.EXE rules @@ -725,9 +726,9 @@ $(HARBOUR_EXE) : \ $(COMPILER_DIR)\expropta.c \ $(COMPILER_DIR)\exproptb.c \ $(COMPILER_DIR)\exproptc.c - -echo. > $(INCLUDE_DIR)\unistd.h - $(CC) $(CFLAGS) -Fo$(OBJ_DIR)\ -w $** -o $(HARBOUR_EXE) /link $(PP_LIB) $(COMMON_LIB) - -del $(INCLUDE_DIR)\unistd.h + -echo. > $(OBJ_DIR)\unistd.h + $(CC) $(CFLAGS) -I$(OBJ_DIR) -Fo$(OBJ_DIR)\ -w $** -o $(HARBOUR_EXE) /link $(PP_LIB) $(COMMON_LIB) + -del $(OBJ_DIR)\unistd.h # @@ -800,9 +801,9 @@ $(OBJ_DIR)\macroy.obj : $(OBJ_DIR)\macroy.c $(CC) $(CLIBFLAGS) -w -Fo$@ $** $(OBJ_DIR)\macrol.obj : $(OBJ_DIR)\macrol.c - -echo. > $(INCLUDE_DIR)\unistd.h - $(CC) $(CLIBFLAGS) -w -Fo$@ $** - -del $(INCLUDE_DIR)\unistd.h + -echo. > $(OBJ_DIR)\unistd.h + $(CC) $(CLIBFLAGS) -I$(OBJ_DIR) -w -Fo$@ $** + -del $(OBJ_DIR)\unistd.h # dummy targets used for prg to c creation diff --git a/harbour/source/compiler/harbour.c b/harbour/source/compiler/harbour.c index 2bf6cbe580..51060c9abb 100644 --- a/harbour/source/compiler/harbour.c +++ b/harbour/source/compiler/harbour.c @@ -299,7 +299,7 @@ int main( int argc, char * argv[] ) return iStatus; } -#if ( defined(__IBMCPP__) || defined(_MSC_VER) ) && !defined(__BORLANDC__) +#if defined(__IBMCPP__) || defined(_MSC_VER) || (defined(__BORLANDC__) && defined(__cplusplus)) int isatty( int handle ) { return ( handle < 4 ) ? 1 : 0; diff --git a/harbour/source/rtl/filesys.c b/harbour/source/rtl/filesys.c index 0402cdd7e8..dfc993f79b 100644 --- a/harbour/source/rtl/filesys.c +++ b/harbour/source/rtl/filesys.c @@ -87,6 +87,9 @@ #if !defined(HAVE_POSIX_IO) #define HAVE_POSIX_IO #endif + + extern int rename( const char *, const char * ); + #endif #if defined(__WATCOMC__) @@ -203,8 +206,6 @@ static USHORT s_uiErrorLast = 0; #define LARGE_MAX ( UINT_MAX - 1L ) #endif -extern int rename( const char *, const char * ); - /* Convert HARBOUR flags to IO subsystem flags */ #if defined(HB_FS_FILE_IO) diff --git a/harbour/source/rtl/gtwin/gtwin.c b/harbour/source/rtl/gtwin/gtwin.c index c0949fe118..d515fc7016 100644 --- a/harbour/source/rtl/gtwin/gtwin.c +++ b/harbour/source/rtl/gtwin/gtwin.c @@ -191,11 +191,11 @@ void hb_gt_Init( int iFilenoStdin, int iFilenoStdout, int iFilenoStderr ) /* save screen info to restore on exit */ memcpy( &s_csbi, &csbi, sizeof( csbi ) ); - csbi.dwSize.X = min( csbi.dwSize.X, 80 ); - csbi.dwSize.Y = min( csbi.dwSize.Y, 50 ); + csbi.dwSize.X = HB_MIN( csbi.dwSize.X, 80 ); + csbi.dwSize.Y = HB_MIN( csbi.dwSize.Y, 50 ); - csbi.srWindow.Right = min( csbi.srWindow.Right, 79 ); - csbi.srWindow.Bottom = min( csbi.srWindow.Bottom, 49 ); + csbi.srWindow.Right = HB_MIN( csbi.srWindow.Right, 79 ); + csbi.srWindow.Bottom = HB_MIN( csbi.srWindow.Bottom, 49 ); csbi.srWindow.Top = csbi.srWindow.Left = 0; SetConsoleWindowInfo( s_HOriginal, TRUE, &csbi.srWindow ); @@ -671,8 +671,8 @@ USHORT hb_gt_GetScreenWidth( void ) GetConsoleScreenBufferInfo( s_HOutput, &csbi ); /* return csbi.dwMaximumWindowSize.X; */ -/* return max( csbi.srWindow.Right - csbi.srWindow.Left + 1, 40 ); */ - return max( csbi.dwSize.X, 40 ); +/* return HB_MAX( csbi.srWindow.Right - csbi.srWindow.Left + 1, 40 ); */ + return HB_MAX( csbi.dwSize.X, 40 ); } USHORT hb_gt_GetScreenHeight( void ) @@ -683,8 +683,8 @@ USHORT hb_gt_GetScreenHeight( void ) GetConsoleScreenBufferInfo( s_HOutput, &csbi ); /* return csbi.dwMaximumWindowSize.Y; */ -/* return max( csbi.srWindow.Bottom - csbi.srWindow.Top + 1, 25 ); */ - return max( csbi.dwSize.Y, 25 ); +/* return HB_MAX( csbi.srWindow.Bottom - csbi.srWindow.Top + 1, 25 ); */ + return HB_MAX( csbi.dwSize.Y, 25 ); } void hb_gt_SetPos( SHORT iRow, SHORT iCol ) @@ -1047,8 +1047,8 @@ BOOL hb_gt_SetMode( USHORT uiRows, USHORT uiCols ) /* new console window size and scroll position */ srWin.Top = srWin.Left = 0; - srWin.Bottom = ( SHORT ) ( min( uiRows, coBuf.Y ) - 1 ); - srWin.Right = ( SHORT ) ( min( uiCols, coBuf.X ) - 1 ); + srWin.Bottom = ( SHORT ) ( HB_MIN( uiRows, coBuf.Y ) - 1 ); + srWin.Right = ( SHORT ) ( HB_MIN( uiCols, coBuf.X ) - 1 ); /* new console buffer size */ coBuf.Y = uiRows; diff --git a/harbour/source/rtl/math.c b/harbour/source/rtl/math.c index 7103d964fa..7754115c84 100644 --- a/harbour/source/rtl/math.c +++ b/harbour/source/rtl/math.c @@ -42,8 +42,18 @@ #if defined(__WATCOMC__) #define HB_MATH_HANDLER #elif defined(__BORLANDC__) - #define HB_MATH_HANDLER - #define matherr _matherr + #if (__BORLANDC__ == 1328) && defined(__cplusplus) + /* NOTE: There seem to be a bug in Borland C++ 5.3 C++ mode which prevents + the redefinition of matherr, because nor "_exception" neither + "exception" will work. [vszakats] */ + #else + #define HB_MATH_HANDLER + #define matherr _matherr + /* NOTE: This is needed for Borland C++ 5.5 in C++/STDC mode. [vszakats] */ + #if (__BORLANDC__ >= 1360) + #define exception _exception + #endif + #endif #elif defined(__MINGW32__) #define HB_MATH_HANDLER #define matherr _matherr diff --git a/harbour/utils/hbtest/Makefile b/harbour/utils/hbtest/Makefile index 3f378f3ea0..399d68fee2 100644 --- a/harbour/utils/hbtest/Makefile +++ b/harbour/utils/hbtest/Makefile @@ -17,6 +17,7 @@ PRG_SOURCES=\ rt_math.prg \ rt_misc.prg \ rt_str.prg \ + rt_stra.prg \ rt_trans.prg \ PRG_MAIN=hbtest.prg diff --git a/harbour/utils/hbtest/hbtest.prg b/harbour/utils/hbtest/hbtest.prg index ace567d203..ab9a5a55c5 100644 --- a/harbour/utils/hbtest/hbtest.prg +++ b/harbour/utils/hbtest/hbtest.prg @@ -113,6 +113,7 @@ FUNCTION Main( cPar1, cPar2 ) Main_MATH() Main_DATE() Main_STR() + Main_STRA() Main_TRANS() Comp_Str() Exact_Str() diff --git a/harbour/utils/hbtest/make_c5x.bat b/harbour/utils/hbtest/make_c5x.bat index f313b37da6..3702e4e292 100644 --- a/harbour/utils/hbtest/make_c5x.bat +++ b/harbour/utils/hbtest/make_c5x.bat @@ -19,11 +19,12 @@ clipper rt_hvm.prg /w /n %hb_clipopt% clipper rt_math.prg /w /n %hb_clipopt% clipper rt_misc.prg /w /n %hb_clipopt% clipper rt_str.prg /w /n %hb_clipopt% +clipper rt_stra.prg /w /n %hb_clipopt% clipper rt_trans.prg /w /n %hb_clipopt% if "%1" == "" set hb_linker=rtlink if not "%1" == "" set hb_linker=exospace -%hb_linker% out hbtest5x fi hbtest,rt_array,rt_date,rt_file,rt_hvm,rt_math,rt_misc,rt_str,rt_trans %hb_linkopt% +%hb_linker% out hbtest5x fi hbtest,rt_array,rt_date,rt_file,rt_hvm,rt_math,rt_misc,rt_str,rt_stra,rt_trans %hb_linkopt% del *.obj diff --git a/harbour/utils/hbtest/make_xpp.bat b/harbour/utils/hbtest/make_xpp.bat index 3f9c622719..124b869019 100644 --- a/harbour/utils/hbtest/make_xpp.bat +++ b/harbour/utils/hbtest/make_xpp.bat @@ -11,8 +11,9 @@ xpp rt_hvm.prg /w /n xpp rt_math.prg /w /n xpp rt_misc.prg /w /n xpp rt_str.prg /w /n +xpp rt_stra.prg /w /n xpp rt_trans.prg /w /n -alink hbtest rt_array rt_date rt_file rt_hvm rt_math rt_misc rt_str rt_trans +alink hbtest rt_array rt_date rt_file rt_hvm rt_math rt_misc rt_str rt_stra rt_trans del *.obj diff --git a/harbour/utils/hbtest/rt_str.prg b/harbour/utils/hbtest/rt_str.prg index 9f6e9766d8..55b6a933a7 100644 --- a/harbour/utils/hbtest/rt_str.prg +++ b/harbour/utils/hbtest/rt_str.prg @@ -701,446 +701,6 @@ FUNCTION Main_STR() TEST_LINE( Stuff("ABCE"+Chr(0)+"F", 2, 3, "xyz") , "Axyz"+Chr(0)+"F" ) TEST_LINE( Stuff("ABC"+Chr(0)+"EF", 2, 3, "x"+Chr(0)+"z") , "Ax"+Chr(0)+"zEF" ) - /* STR() */ - - TEST_LINE( Str(NIL) , "E BASE 1099 Argument error STR F:S" ) - TEST_LINE( Str("A", 10, 2) , "E BASE 1099 Argument error STR F:S" ) - TEST_LINE( Str(100, 10, "A") , "E BASE 1099 Argument error STR F:S" ) - TEST_LINE( Str(100, 10, NIL) , "E BASE 1099 Argument error STR F:S" ) - TEST_LINE( Str(100, NIL, NIL) , "E BASE 1099 Argument error STR F:S" ) - TEST_LINE( Str( w_TEST->TYPE_N_I ) , " 100" ) - TEST_LINE( Str( w_TEST->TYPE_N_IE ) , " 0" ) - TEST_LINE( Str( w_TEST->TYPE_N_D ) , " 101.127" ) - TEST_LINE( Str( w_TEST->TYPE_N_DE ) , " 0.000" ) - TEST_LINE( Str(5000000000.0) , "5000000000.0" ) - TEST_LINE( Str(50000000) , " 50000000" ) - TEST_LINE( Str(500000000) , " 500000000" ) - TEST_LINE( Str(5000000000) , " 5000000000" ) - TEST_LINE( Str(50000000000) , " 50000000000" ) - TEST_LINE( Str(-5000000000.0) , " -5000000000.0" ) - TEST_LINE( Str(-5000000000) , " -5000000000" ) - TEST_LINE( Str(2.0000000000000001) , " 2.0000000000000000" ) - TEST_LINE( Str(2.0000000000000009) , " 2.0000000000000010" ) - TEST_LINE( Str(2.000000000000001) , " 2.000000000000001" ) - TEST_LINE( Str(2.000000000000009) , " 2.000000000000009" ) - TEST_LINE( Str(2.00000000000001) , " 2.00000000000001" ) - TEST_LINE( Str(2.00000000000009) , " 2.00000000000009" ) - TEST_LINE( Str(2.000000000001) , " 2.000000000001" ) - TEST_LINE( Str(2.00000000001) , " 2.00000000001" ) - TEST_LINE( Str(10) , " 10" ) - TEST_LINE( Str(10.0) , " 10.0" ) - TEST_LINE( Str(10.00) , " 10.00" ) - TEST_LINE( Str(10.50) , " 10.50" ) - TEST_LINE( Str(100000) , " 100000" ) - TEST_LINE( Str(-10) , " -10" ) - TEST_LINE( Str(-10.0) , " -10.0" ) - TEST_LINE( Str(-10.00) , " -10.00" ) - TEST_LINE( Str(-10.50) , " -10.50" ) - TEST_LINE( Str(-100000) , " -100000" ) - TEST_LINE( Str(10, 5) , " 10" ) - TEST_LINE( Str(10.0, 5) , " 10" ) - TEST_LINE( Str(10.00, 5) , " 10" ) - TEST_LINE( Str(10.50, 5) , " 11" ) - TEST_LINE( Str(100000, 5) , "*****" ) - TEST_LINE( Str(100000, 8) , " 100000" ) - TEST_LINE( Str(-10, 5) , " -10" ) - TEST_LINE( Str(-10.0, 5) , " -10" ) - TEST_LINE( Str(-10.00, 5) , " -10" ) - TEST_LINE( Str(-10.50, 5) , " -11" ) - TEST_LINE( Str(-100000, 5) , "*****" ) - TEST_LINE( Str(-100000, 6) , "******" ) - TEST_LINE( Str(-100000, 8) , " -100000" ) -#ifndef __XPP__ /* Internal structures corrupted */ - TEST_LINE( Str(10, -5) , " 10" ) - TEST_LINE( Str(10.0, -5) , " 10" ) - TEST_LINE( Str(10.00, -5) , " 10" ) - TEST_LINE( Str(10.50, -5) , " 11" ) - TEST_LINE( Str(100000, -5) , " 100000" ) - TEST_LINE( Str(100000, -8) , " 100000" ) - TEST_LINE( Str(-10, -5) , " -10" ) - TEST_LINE( Str(-10.0, -5) , " -10" ) - TEST_LINE( Str(-10.00, -5) , " -10" ) - TEST_LINE( Str(-10.50, -5) , " -11" ) - TEST_LINE( Str(-100000, -5) , " -100000" ) - TEST_LINE( Str(-100000, -6) , " -100000" ) - TEST_LINE( Str(-100000, -8) , " -100000" ) -#endif - TEST_LINE( Str(10, 5, 0) , " 10" ) - TEST_LINE( Str(10.0, 5, 0) , " 10" ) - TEST_LINE( Str(10.00, 5, 0) , " 10" ) - TEST_LINE( Str(10.50, 5, 0) , " 11" ) - TEST_LINE( Str(100000, 5, 0) , "*****" ) - TEST_LINE( Str(-10, 5, 0) , " -10" ) - TEST_LINE( Str(-10.0, 5, 0) , " -10" ) - TEST_LINE( Str(-10.00, 5, 0) , " -10" ) - TEST_LINE( Str(-10.50, 5, 0) , " -11" ) - TEST_LINE( Str(-100000, 5, 0) , "*****" ) - TEST_LINE( Str(-100000, 6, 0) , "******" ) - TEST_LINE( Str(-100000, 8, 0) , " -100000" ) - TEST_LINE( Str(10, 5, 1) , " 10.0" ) - TEST_LINE( Str(10.0, 5, 1) , " 10.0" ) - TEST_LINE( Str(10.00, 5, 1) , " 10.0" ) - TEST_LINE( Str(10.50, 5, 1) , " 10.5" ) - TEST_LINE( Str(100000, 5, 1) , "*****" ) - TEST_LINE( Str(-10, 5, 1) , "-10.0" ) - TEST_LINE( Str(-10.0, 5, 1) , "-10.0" ) - TEST_LINE( Str(-10.00, 5, 1) , "-10.0" ) - TEST_LINE( Str(-10.50, 5, 1) , "-10.5" ) - TEST_LINE( Str(-100000, 5, 1) , "*****" ) - TEST_LINE( Str(-100000, 6, 1) , "******" ) - TEST_LINE( Str(-100000, 8, 1) , "********" ) -#ifndef __XPP__ /* Internal structures corrupted */ - TEST_LINE( Str(10, 5, -1) , " 10" ) - TEST_LINE( Str(10.0, 5, -1) , " 10" ) - TEST_LINE( Str(10.00, 5, -1) , " 10" ) - TEST_LINE( Str(10.50, 5, -1) , " 11" ) - TEST_LINE( Str(100000, 5, -1) , "*****" ) - TEST_LINE( Str(-10, 5, -1) , " -10" ) - TEST_LINE( Str(-10.0, 5, -1) , " -10" ) - TEST_LINE( Str(-10.00, 5, -1) , " -10" ) - TEST_LINE( Str(-10.50, 5, -1) , " -11" ) - TEST_LINE( Str(-100000, 5, -1) , "*****" ) - TEST_LINE( Str(-100000, 6, -1) , "******" ) - TEST_LINE( Str(-100000, 8, -1) , " -100000" ) -#endif - - /* STRZERO() */ - -#ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY - TEST_LINE( StrZero(NIL) , "E BASE 1099 Argument error STR F:S" ) - TEST_LINE( StrZero("A", 10, 2) , "E BASE 1099 Argument error STR F:S" ) - TEST_LINE( StrZero(100, 10, "A") , "E BASE 1099 Argument error STR F:S" ) - TEST_LINE( StrZero(100, 10, NIL) , "E BASE 1099 Argument error STR F:S" ) - TEST_LINE( StrZero(100, NIL, NIL) , "E BASE 1099 Argument error STR F:S" ) -#else - TEST_LINE( StrZero(NIL) , "E BASE 9999 Argument error STRZERO F:S" ) - TEST_LINE( StrZero("A", 10, 2) , "E BASE 9999 Argument error STRZERO F:S" ) - TEST_LINE( StrZero(100, 10, "A") , "E BASE 9999 Argument error STRZERO F:S" ) - TEST_LINE( StrZero(100, 10, NIL) , "E BASE 9999 Argument error STRZERO F:S" ) - TEST_LINE( StrZero(100, NIL, NIL) , "E BASE 9999 Argument error STRZERO F:S" ) -#endif - TEST_LINE( StrZero(10) , "0000000010" ) - TEST_LINE( StrZero(10.0) , "0000000010.0" ) - TEST_LINE( StrZero(10.00) , "0000000010.00" ) - TEST_LINE( StrZero(10.50) , "0000000010.50" ) - TEST_LINE( StrZero(100000) , "0000100000" ) - TEST_LINE( StrZero(-10) , "-000000010" ) - TEST_LINE( StrZero(-10.0) , "-000000010.0" ) - TEST_LINE( StrZero(-10.00) , "-000000010.00" ) - TEST_LINE( StrZero(-10.50) , "-000000010.50" ) - TEST_LINE( StrZero(-100000) , "-000100000" ) - TEST_LINE( StrZero(10, 5) , "00010" ) - TEST_LINE( StrZero(10.0, 5) , "00010" ) - TEST_LINE( StrZero(10.00, 5) , "00010" ) - TEST_LINE( StrZero(10.50, 5) , "00011" ) - TEST_LINE( StrZero(100000, 5) , "*****" ) - TEST_LINE( StrZero(100000, 8) , "00100000" ) - TEST_LINE( StrZero(-10, 5) , "-0010" ) - TEST_LINE( StrZero(-10.0, 5) , "-0010" ) - TEST_LINE( StrZero(-10.00, 5) , "-0010" ) - TEST_LINE( StrZero(-10.50, 5) , "-0011" ) - TEST_LINE( StrZero(-100000, 5) , "*****" ) - TEST_LINE( StrZero(-100000, 6) , "******" ) - TEST_LINE( StrZero(-100000, 8) , "-0100000" ) -#ifndef __XPP__ /* Internal structures corrupted */ - TEST_LINE( StrZero(10, -5) , "0000000010" ) - TEST_LINE( StrZero(10.0, -5) , "0000000010" ) - TEST_LINE( StrZero(10.00, -5) , "0000000010" ) - TEST_LINE( StrZero(10.50, -5) , "0000000011" ) - TEST_LINE( StrZero(100000, -5) , "0000100000" ) - TEST_LINE( StrZero(100000, -8) , "0000100000" ) - TEST_LINE( StrZero(-10, -5) , "-000000010" ) - TEST_LINE( StrZero(-10.0, -5) , "-000000010" ) - TEST_LINE( StrZero(-10.00, -5) , "-000000010" ) - TEST_LINE( StrZero(-10.50, -5) , "-000000011" ) - TEST_LINE( StrZero(-100000, -5) , "-000100000" ) - TEST_LINE( StrZero(-100000, -6) , "-000100000" ) - TEST_LINE( StrZero(-100000, -8) , "-000100000" ) -#endif - TEST_LINE( StrZero(10, 5, 0) , "00010" ) - TEST_LINE( StrZero(10.0, 5, 0) , "00010" ) - TEST_LINE( StrZero(10.50, 5, 0) , "00011" ) - TEST_LINE( StrZero(100000, 5, 0) , "*****" ) - TEST_LINE( StrZero(-10, 5, 0) , "-0010" ) - TEST_LINE( StrZero(-10.0, 5, 0) , "-0010" ) - TEST_LINE( StrZero(-10.00, 5, 0) , "-0010" ) - TEST_LINE( StrZero(-10.50, 5, 0) , "-0011" ) - TEST_LINE( StrZero(-100000, 5, 0) , "*****" ) - TEST_LINE( StrZero(-100000, 6, 0) , "******" ) - TEST_LINE( StrZero(-100000, 8, 0) , "-0100000" ) - TEST_LINE( StrZero(10, 5, 1) , "010.0" ) - TEST_LINE( StrZero(10.0, 5, 1) , "010.0" ) - TEST_LINE( StrZero(10.50, 5, 1) , "010.5" ) - TEST_LINE( StrZero(100000, 5, 1) , "*****" ) - TEST_LINE( StrZero(-10, 5, 1) , "-10.0" ) - TEST_LINE( StrZero(-10.0, 5, 1) , "-10.0" ) - TEST_LINE( StrZero(-10.00, 5, 1) , "-10.0" ) - TEST_LINE( StrZero(-10.50, 5, 1) , "-10.5" ) - TEST_LINE( StrZero(-100000, 5, 1) , "*****" ) - TEST_LINE( StrZero(-100000, 6, 1) , "******" ) - TEST_LINE( StrZero(-100000, 8, 1) , "********" ) -#ifndef __XPP__ /* Internal structures corrupted */ - TEST_LINE( StrZero(10, 5, -1) , "00010" ) - TEST_LINE( StrZero(10.0, 5, -1) , "00010" ) - TEST_LINE( StrZero(10.50, 5, -1) , "00011" ) - TEST_LINE( StrZero(100000, 5, -1) , "*****" ) - TEST_LINE( StrZero(-10, 5, -1) , "-0010" ) - TEST_LINE( StrZero(-10.0, 5, -1) , "-0010" ) - TEST_LINE( StrZero(-10.00, 5, -1) , "-0010" ) - TEST_LINE( StrZero(-10.50, 5, -1) , "-0011" ) - TEST_LINE( StrZero(-100000, 5, -1) , "*****" ) - TEST_LINE( StrZero(-100000, 6, -1) , "******" ) - TEST_LINE( StrZero(-100000, 8, -1) , "-0100000" ) -#endif - - RETURN NIL - -FUNCTION Comp_Str() - LOCAL old_exact := SET( _SET_EXACT, .F. ) - - TEST_LINE( "ABC" == "", .F. ) - TEST_LINE( "ABC" = "", .T. ) - TEST_LINE( "ABC" != "", .F. ) - TEST_LINE( "ABC" < "", .F. ) - TEST_LINE( "ABC" <= "", .T. ) - TEST_LINE( "ABC" > "", .F. ) - TEST_LINE( "ABC" >= "", .T. ) - TEST_LINE( "" == "ABC", .F. ) - TEST_LINE( "" = "ABC", .F. ) - TEST_LINE( "" != "ABC", .T. ) - TEST_LINE( "" < "ABC", .T. ) - TEST_LINE( "" <= "ABC", .T. ) - TEST_LINE( "" > "ABC", .F. ) - TEST_LINE( "" >= "ABC", .F. ) - TEST_LINE( "ABC" == " ", .F. ) - TEST_LINE( "ABC" = " ", .F. ) - TEST_LINE( "ABC" != " ", .T. ) - TEST_LINE( "ABC" < " ", .F. ) - TEST_LINE( "ABC" <= " ", .F. ) - TEST_LINE( "ABC" > " ", .T. ) - TEST_LINE( "ABC" >= " ", .T. ) - TEST_LINE( " " == "ABC", .F. ) - TEST_LINE( " " = "ABC", .F. ) - TEST_LINE( " " != "ABC", .T. ) - TEST_LINE( " " < "ABC", .T. ) - TEST_LINE( " " <= "ABC", .T. ) - TEST_LINE( " " > "ABC", .F. ) - TEST_LINE( " " >= "ABC", .F. ) - TEST_LINE( "ABC" == "ABC", .T. ) - TEST_LINE( "ABC" = "ABC", .T. ) - TEST_LINE( "ABC" != "ABC", .F. ) - TEST_LINE( "ABC" < "ABC", .F. ) - TEST_LINE( "ABC" <= "ABC", .T. ) - TEST_LINE( "ABC" > "ABC", .F. ) - TEST_LINE( "ABC" >= "ABC", .T. ) - TEST_LINE( "ABC" == "ABCD", .F. ) - TEST_LINE( "ABC" = "ABCD", .F. ) - TEST_LINE( "ABC" != "ABCD", .T. ) - TEST_LINE( "ABC" < "ABCD", .T. ) - TEST_LINE( "ABC" <= "ABCD", .T. ) - TEST_LINE( "ABC" > "ABCD", .F. ) - TEST_LINE( "ABC" >= "ABCD", .F. ) - TEST_LINE( "ABCD" == "ABC", .F. ) - TEST_LINE( "ABCD" = "ABC", .T. ) - TEST_LINE( "ABCD" != "ABC", .F. ) - TEST_LINE( "ABCD" < "ABC", .F. ) - TEST_LINE( "ABCD" <= "ABC", .T. ) - TEST_LINE( "ABCD" > "ABC", .F. ) - TEST_LINE( "ABCD" >= "ABC", .T. ) - TEST_LINE( "ABC" == "ABC ", .F. ) - TEST_LINE( "ABC" = "ABC ", .F. ) - TEST_LINE( "ABC" != "ABC ", .T. ) - TEST_LINE( "ABC" < "ABC ", .T. ) - TEST_LINE( "ABC" <= "ABC ", .T. ) - TEST_LINE( "ABC" > "ABC ", .F. ) - TEST_LINE( "ABC" >= "ABC ", .F. ) - TEST_LINE( "ABC " == "ABC", .F. ) - TEST_LINE( "ABC " = "ABC", .T. ) - TEST_LINE( "ABC " != "ABC", .F. ) - TEST_LINE( "ABC " < "ABC", .F. ) - TEST_LINE( "ABC " <= "ABC", .T. ) - TEST_LINE( "ABC " > "ABC", .F. ) - TEST_LINE( "ABC " >= "ABC", .T. ) - TEST_LINE( "ABC" == "DEF", .F. ) - TEST_LINE( "ABC" = "DEF", .F. ) - TEST_LINE( "ABC" != "DEF", .T. ) - TEST_LINE( "ABC" < "DEF", .T. ) - TEST_LINE( "ABC" <= "DEF", .T. ) - TEST_LINE( "ABC" > "DEF", .F. ) - TEST_LINE( "ABC" >= "DEF", .F. ) - TEST_LINE( "DEF" == "ABC", .F. ) - TEST_LINE( "DEF" = "ABC", .F. ) - TEST_LINE( "DEF" != "ABC", .T. ) - TEST_LINE( "DEF" < "ABC", .F. ) - TEST_LINE( "DEF" <= "ABC", .F. ) - TEST_LINE( "DEF" > "ABC", .T. ) - TEST_LINE( "DEF" >= "ABC", .T. ) - TEST_LINE( "ABC" == "DEFG", .F. ) - TEST_LINE( "ABC" = "DEFG", .F. ) - TEST_LINE( "ABC" != "DEFG", .T. ) - TEST_LINE( "ABC" < "DEFG", .T. ) - TEST_LINE( "ABC" <= "DEFG", .T. ) - TEST_LINE( "ABC" > "DEFG", .F. ) - TEST_LINE( "ABC" >= "DEFG", .F. ) - TEST_LINE( "DEFG" == "ABC", .F. ) - TEST_LINE( "DEFG" = "ABC", .F. ) - TEST_LINE( "DEFG" != "ABC", .T. ) - TEST_LINE( "DEFG" < "ABC", .F. ) - TEST_LINE( "DEFG" <= "ABC", .F. ) - TEST_LINE( "DEFG" > "ABC", .T. ) - TEST_LINE( "DEFG" >= "ABC", .T. ) - TEST_LINE( "ABCD" == "DEF", .F. ) - TEST_LINE( "ABCD" = "DEF", .F. ) - TEST_LINE( "ABCD" != "DEF", .T. ) - TEST_LINE( "ABCD" < "DEF", .T. ) - TEST_LINE( "ABCD" <= "DEF", .T. ) - TEST_LINE( "ABCD" > "DEF", .F. ) - TEST_LINE( "ABCD" >= "DEF", .F. ) - TEST_LINE( "DEF" == "ABCD", .F. ) - TEST_LINE( "DEF" = "ABCD", .F. ) - TEST_LINE( "DEF" != "ABCD", .T. ) - TEST_LINE( "DEF" < "ABCD", .F. ) - TEST_LINE( "DEF" <= "ABCD", .F. ) - TEST_LINE( "DEF" > "ABCD", .T. ) - TEST_LINE( "DEF" >= "ABCD", .T. ) - - SET( _SET_EXACT, old_exact ) - RETURN NIL - -FUNCTION Exact_Str() - LOCAL old_exact := SET( _SET_EXACT, .T. ) - - TEST_LINE( "ABC" == "", .F. ) - TEST_LINE( "ABC" = "", .F. ) - TEST_LINE( "ABC" != "", .T. ) - TEST_LINE( "ABC" < "", .F. ) - TEST_LINE( "ABC" <= "", .F. ) - TEST_LINE( "ABC" > "", .T. ) - TEST_LINE( "ABC" >= "", .T. ) - TEST_LINE( "" == "ABC", .F. ) - TEST_LINE( "" = "ABC", .F. ) - TEST_LINE( "" != "ABC", .T. ) - TEST_LINE( "" < "ABC", .T. ) - TEST_LINE( "" <= "ABC", .T. ) - TEST_LINE( "" > "ABC", .F. ) - TEST_LINE( "" >= "ABC", .F. ) - TEST_LINE( "ABC" == " ", .F. ) - TEST_LINE( "ABC" = " ", .F. ) - TEST_LINE( "ABC" != " ", .T. ) - TEST_LINE( "ABC" < " ", .F. ) - TEST_LINE( "ABC" <= " ", .F. ) - TEST_LINE( "ABC" > " ", .T. ) - TEST_LINE( "ABC" >= " ", .T. ) - TEST_LINE( " " == "ABC", .F. ) - TEST_LINE( " " = "ABC", .F. ) - TEST_LINE( " " != "ABC", .T. ) - TEST_LINE( " " < "ABC", .T. ) - TEST_LINE( " " <= "ABC", .T. ) - TEST_LINE( " " > "ABC", .F. ) - TEST_LINE( " " >= "ABC", .F. ) - TEST_LINE( "ABC" == "ABC", .T. ) - TEST_LINE( "ABC" = "ABC", .T. ) - TEST_LINE( "ABC" != "ABC", .F. ) - TEST_LINE( "ABC" < "ABC", .F. ) - TEST_LINE( "ABC" <= "ABC", .T. ) - TEST_LINE( "ABC" > "ABC", .F. ) - TEST_LINE( "ABC" >= "ABC", .T. ) - TEST_LINE( "ABC" == "ABCD", .F. ) - TEST_LINE( "ABC" = "ABCD", .F. ) - TEST_LINE( "ABC" != "ABCD", .T. ) - TEST_LINE( "ABC" < "ABCD", .T. ) - TEST_LINE( "ABC" <= "ABCD", .T. ) - TEST_LINE( "ABC" > "ABCD", .F. ) - TEST_LINE( "ABC" >= "ABCD", .F. ) - TEST_LINE( "ABCD" == "ABC", .F. ) - TEST_LINE( "ABCD" = "ABC", .F. ) - TEST_LINE( "ABCD" != "ABC", .T. ) - TEST_LINE( "ABCD" < "ABC", .F. ) - TEST_LINE( "ABCD" <= "ABC", .F. ) - TEST_LINE( "ABCD" > "ABC", .T. ) - TEST_LINE( "ABCD" >= "ABC", .T. ) - TEST_LINE( "ABC" == "ABC ", .F. ) - TEST_LINE( "ABC" = "ABC ", .T. ) - TEST_LINE( "ABC" != "ABC ", .F. ) - TEST_LINE( "ABC" < "ABC ", .F. ) - TEST_LINE( "ABC" <= "ABC ", .T. ) - TEST_LINE( "ABC" > "ABC ", .F. ) - TEST_LINE( "ABC" >= "ABC ", .T. ) - TEST_LINE( "ABC " == "ABC", .F. ) - TEST_LINE( "ABC " = "ABC", .T. ) - TEST_LINE( "ABC " != "ABC", .F. ) - TEST_LINE( "ABC " < "ABC", .F. ) - TEST_LINE( "ABC " <= "ABC", .T. ) - TEST_LINE( "ABC " > "ABC", .F. ) - TEST_LINE( "ABC " >= "ABC", .T. ) - TEST_LINE( "ABC" == "DEF", .F. ) - TEST_LINE( "ABC" = "DEF", .F. ) - TEST_LINE( "ABC" != "DEF", .T. ) - TEST_LINE( "ABC" < "DEF", .T. ) - TEST_LINE( "ABC" <= "DEF", .T. ) - TEST_LINE( "ABC" > "DEF", .F. ) - TEST_LINE( "ABC" >= "DEF", .F. ) - TEST_LINE( "DEF" == "ABC", .F. ) - TEST_LINE( "DEF" = "ABC", .F. ) - TEST_LINE( "DEF" != "ABC", .T. ) - TEST_LINE( "DEF" < "ABC", .F. ) - TEST_LINE( "DEF" <= "ABC", .F. ) - TEST_LINE( "DEF" > "ABC", .T. ) - TEST_LINE( "DEF" >= "ABC", .T. ) - TEST_LINE( "ABC" == "DEFG", .F. ) - TEST_LINE( "ABC" = "DEFG", .F. ) - TEST_LINE( "ABC" != "DEFG", .T. ) - TEST_LINE( "ABC" < "DEFG", .T. ) - TEST_LINE( "ABC" <= "DEFG", .T. ) - TEST_LINE( "ABC" > "DEFG", .F. ) - TEST_LINE( "ABC" >= "DEFG", .F. ) - TEST_LINE( "DEFG" == "ABC", .F. ) - TEST_LINE( "DEFG" = "ABC", .F. ) - TEST_LINE( "DEFG" != "ABC", .T. ) - TEST_LINE( "DEFG" < "ABC", .F. ) - TEST_LINE( "DEFG" <= "ABC", .F. ) - TEST_LINE( "DEFG" > "ABC", .T. ) - TEST_LINE( "DEFG" >= "ABC", .T. ) - TEST_LINE( "ABCD" == "DEF", .F. ) - TEST_LINE( "ABCD" = "DEF", .F. ) - TEST_LINE( "ABCD" != "DEF", .T. ) - TEST_LINE( "ABCD" < "DEF", .T. ) - TEST_LINE( "ABCD" <= "DEF", .T. ) - TEST_LINE( "ABCD" > "DEF", .F. ) - TEST_LINE( "ABCD" >= "DEF", .F. ) - TEST_LINE( "DEF" == "ABCD", .F. ) - TEST_LINE( "DEF" = "ABCD", .F. ) - TEST_LINE( "DEF" != "ABCD", .T. ) - TEST_LINE( "DEF" < "ABCD", .F. ) - TEST_LINE( "DEF" <= "ABCD", .F. ) - TEST_LINE( "DEF" > "ABCD", .T. ) - TEST_LINE( "DEF" >= "ABCD", .T. ) - - SET( _SET_EXACT, old_exact ) - RETURN NIL - -FUNCTION New_STRINGS() - -#ifdef __HARBOUR__ - - TEST_LINE( HB_ValToStr( 4 ) , " 4" ) - TEST_LINE( HB_ValToStr( 4.0 / 2 ) , " 2.00" ) - TEST_LINE( HB_ValToStr( "String" ) , "String" ) - TEST_LINE( HB_ValToStr( SToD( "20010101" ) ) , "2001.01.01" ) - TEST_LINE( HB_ValToStr( NIL ) , "NIL" ) - TEST_LINE( HB_ValToStr( .F. ) , ".F." ) - TEST_LINE( HB_ValToStr( .T. ) , ".T." ) - -#endif - - RETURN NIL - -FUNCTION Long_STRINGS() - - TEST_LINE( RIGHT( SPACE( 64 * 1024 - 5 ) + "12345 7890", 10 ), "12345 7890" ) - TEST_LINE( LEN( SPACE( 81910 ) + "1234567890" ), 81920 ) - TEST_LINE( ( "1234567890" + SPACE( 810910 ) ) - ( "1234567890" + SPACE( 810910 ) ), "12345678901234567890" + SPACE( 810910 * 2 ) ) - RETURN NIL /* Don't change the position of this #include. */ diff --git a/harbour/utils/hbtest/rt_stra.prg b/harbour/utils/hbtest/rt_stra.prg new file mode 100644 index 0000000000..b5b03971df --- /dev/null +++ b/harbour/utils/hbtest/rt_stra.prg @@ -0,0 +1,486 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * Regression tests for the runtime library (strings) + * + * Copyright 1999 Victor Szakats + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version, with one exception: + * + * The exception is that if you link the Harbour Runtime Library (HRL) + * and/or the Harbour Virtual Machine (HVM) with other files to produce + * an executable, this does not by itself cause the resulting executable + * to be covered by the GNU General Public License. Your use of that + * executable is in no way restricted on account of linking the HRL + * and/or HVM code into it. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit + * their web site at http://www.gnu.org/). + * + */ + +#include "rt_main.ch" + +/* Don't change the position of this #include. */ +#include "rt_vars.ch" + +FUNCTION Main_STRA() + + /* STR() */ + + TEST_LINE( Str(NIL) , "E BASE 1099 Argument error STR F:S" ) + TEST_LINE( Str("A", 10, 2) , "E BASE 1099 Argument error STR F:S" ) + TEST_LINE( Str(100, 10, "A") , "E BASE 1099 Argument error STR F:S" ) + TEST_LINE( Str(100, 10, NIL) , "E BASE 1099 Argument error STR F:S" ) + TEST_LINE( Str(100, NIL, NIL) , "E BASE 1099 Argument error STR F:S" ) + TEST_LINE( Str( w_TEST->TYPE_N_I ) , " 100" ) + TEST_LINE( Str( w_TEST->TYPE_N_IE ) , " 0" ) + TEST_LINE( Str( w_TEST->TYPE_N_D ) , " 101.127" ) + TEST_LINE( Str( w_TEST->TYPE_N_DE ) , " 0.000" ) + TEST_LINE( Str(5000000000.0) , "5000000000.0" ) + TEST_LINE( Str(50000000) , " 50000000" ) + TEST_LINE( Str(500000000) , " 500000000" ) + TEST_LINE( Str(5000000000) , " 5000000000" ) + TEST_LINE( Str(50000000000) , " 50000000000" ) + TEST_LINE( Str(-5000000000.0) , " -5000000000.0" ) + TEST_LINE( Str(-5000000000) , " -5000000000" ) + TEST_LINE( Str(2.0000000000000001) , " 2.0000000000000000" ) + TEST_LINE( Str(2.0000000000000009) , " 2.0000000000000010" ) + TEST_LINE( Str(2.000000000000001) , " 2.000000000000001" ) + TEST_LINE( Str(2.000000000000009) , " 2.000000000000009" ) + TEST_LINE( Str(2.00000000000001) , " 2.00000000000001" ) + TEST_LINE( Str(2.00000000000009) , " 2.00000000000009" ) + TEST_LINE( Str(2.000000000001) , " 2.000000000001" ) + TEST_LINE( Str(2.00000000001) , " 2.00000000001" ) + TEST_LINE( Str(10) , " 10" ) + TEST_LINE( Str(10.0) , " 10.0" ) + TEST_LINE( Str(10.00) , " 10.00" ) + TEST_LINE( Str(10.50) , " 10.50" ) + TEST_LINE( Str(100000) , " 100000" ) + TEST_LINE( Str(-10) , " -10" ) + TEST_LINE( Str(-10.0) , " -10.0" ) + TEST_LINE( Str(-10.00) , " -10.00" ) + TEST_LINE( Str(-10.50) , " -10.50" ) + TEST_LINE( Str(-100000) , " -100000" ) + TEST_LINE( Str(10, 5) , " 10" ) + TEST_LINE( Str(10.0, 5) , " 10" ) + TEST_LINE( Str(10.00, 5) , " 10" ) + TEST_LINE( Str(10.50, 5) , " 11" ) + TEST_LINE( Str(100000, 5) , "*****" ) + TEST_LINE( Str(100000, 8) , " 100000" ) + TEST_LINE( Str(-10, 5) , " -10" ) + TEST_LINE( Str(-10.0, 5) , " -10" ) + TEST_LINE( Str(-10.00, 5) , " -10" ) + TEST_LINE( Str(-10.50, 5) , " -11" ) + TEST_LINE( Str(-100000, 5) , "*****" ) + TEST_LINE( Str(-100000, 6) , "******" ) + TEST_LINE( Str(-100000, 8) , " -100000" ) +#ifndef __XPP__ /* Internal structures corrupted */ + TEST_LINE( Str(10, -5) , " 10" ) + TEST_LINE( Str(10.0, -5) , " 10" ) + TEST_LINE( Str(10.00, -5) , " 10" ) + TEST_LINE( Str(10.50, -5) , " 11" ) + TEST_LINE( Str(100000, -5) , " 100000" ) + TEST_LINE( Str(100000, -8) , " 100000" ) + TEST_LINE( Str(-10, -5) , " -10" ) + TEST_LINE( Str(-10.0, -5) , " -10" ) + TEST_LINE( Str(-10.00, -5) , " -10" ) + TEST_LINE( Str(-10.50, -5) , " -11" ) + TEST_LINE( Str(-100000, -5) , " -100000" ) + TEST_LINE( Str(-100000, -6) , " -100000" ) + TEST_LINE( Str(-100000, -8) , " -100000" ) +#endif + TEST_LINE( Str(10, 5, 0) , " 10" ) + TEST_LINE( Str(10.0, 5, 0) , " 10" ) + TEST_LINE( Str(10.00, 5, 0) , " 10" ) + TEST_LINE( Str(10.50, 5, 0) , " 11" ) + TEST_LINE( Str(100000, 5, 0) , "*****" ) + TEST_LINE( Str(-10, 5, 0) , " -10" ) + TEST_LINE( Str(-10.0, 5, 0) , " -10" ) + TEST_LINE( Str(-10.00, 5, 0) , " -10" ) + TEST_LINE( Str(-10.50, 5, 0) , " -11" ) + TEST_LINE( Str(-100000, 5, 0) , "*****" ) + TEST_LINE( Str(-100000, 6, 0) , "******" ) + TEST_LINE( Str(-100000, 8, 0) , " -100000" ) + TEST_LINE( Str(10, 5, 1) , " 10.0" ) + TEST_LINE( Str(10.0, 5, 1) , " 10.0" ) + TEST_LINE( Str(10.00, 5, 1) , " 10.0" ) + TEST_LINE( Str(10.50, 5, 1) , " 10.5" ) + TEST_LINE( Str(100000, 5, 1) , "*****" ) + TEST_LINE( Str(-10, 5, 1) , "-10.0" ) + TEST_LINE( Str(-10.0, 5, 1) , "-10.0" ) + TEST_LINE( Str(-10.00, 5, 1) , "-10.0" ) + TEST_LINE( Str(-10.50, 5, 1) , "-10.5" ) + TEST_LINE( Str(-100000, 5, 1) , "*****" ) + TEST_LINE( Str(-100000, 6, 1) , "******" ) + TEST_LINE( Str(-100000, 8, 1) , "********" ) +#ifndef __XPP__ /* Internal structures corrupted */ + TEST_LINE( Str(10, 5, -1) , " 10" ) + TEST_LINE( Str(10.0, 5, -1) , " 10" ) + TEST_LINE( Str(10.00, 5, -1) , " 10" ) + TEST_LINE( Str(10.50, 5, -1) , " 11" ) + TEST_LINE( Str(100000, 5, -1) , "*****" ) + TEST_LINE( Str(-10, 5, -1) , " -10" ) + TEST_LINE( Str(-10.0, 5, -1) , " -10" ) + TEST_LINE( Str(-10.00, 5, -1) , " -10" ) + TEST_LINE( Str(-10.50, 5, -1) , " -11" ) + TEST_LINE( Str(-100000, 5, -1) , "*****" ) + TEST_LINE( Str(-100000, 6, -1) , "******" ) + TEST_LINE( Str(-100000, 8, -1) , " -100000" ) +#endif + + /* STRZERO() */ + +#ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY + TEST_LINE( StrZero(NIL) , "E BASE 1099 Argument error STR F:S" ) + TEST_LINE( StrZero("A", 10, 2) , "E BASE 1099 Argument error STR F:S" ) + TEST_LINE( StrZero(100, 10, "A") , "E BASE 1099 Argument error STR F:S" ) + TEST_LINE( StrZero(100, 10, NIL) , "E BASE 1099 Argument error STR F:S" ) + TEST_LINE( StrZero(100, NIL, NIL) , "E BASE 1099 Argument error STR F:S" ) +#else + TEST_LINE( StrZero(NIL) , "E BASE 9999 Argument error STRZERO F:S" ) + TEST_LINE( StrZero("A", 10, 2) , "E BASE 9999 Argument error STRZERO F:S" ) + TEST_LINE( StrZero(100, 10, "A") , "E BASE 9999 Argument error STRZERO F:S" ) + TEST_LINE( StrZero(100, 10, NIL) , "E BASE 9999 Argument error STRZERO F:S" ) + TEST_LINE( StrZero(100, NIL, NIL) , "E BASE 9999 Argument error STRZERO F:S" ) +#endif + TEST_LINE( StrZero(10) , "0000000010" ) + TEST_LINE( StrZero(10.0) , "0000000010.0" ) + TEST_LINE( StrZero(10.00) , "0000000010.00" ) + TEST_LINE( StrZero(10.50) , "0000000010.50" ) + TEST_LINE( StrZero(100000) , "0000100000" ) + TEST_LINE( StrZero(-10) , "-000000010" ) + TEST_LINE( StrZero(-10.0) , "-000000010.0" ) + TEST_LINE( StrZero(-10.00) , "-000000010.00" ) + TEST_LINE( StrZero(-10.50) , "-000000010.50" ) + TEST_LINE( StrZero(-100000) , "-000100000" ) + TEST_LINE( StrZero(10, 5) , "00010" ) + TEST_LINE( StrZero(10.0, 5) , "00010" ) + TEST_LINE( StrZero(10.00, 5) , "00010" ) + TEST_LINE( StrZero(10.50, 5) , "00011" ) + TEST_LINE( StrZero(100000, 5) , "*****" ) + TEST_LINE( StrZero(100000, 8) , "00100000" ) + TEST_LINE( StrZero(-10, 5) , "-0010" ) + TEST_LINE( StrZero(-10.0, 5) , "-0010" ) + TEST_LINE( StrZero(-10.00, 5) , "-0010" ) + TEST_LINE( StrZero(-10.50, 5) , "-0011" ) + TEST_LINE( StrZero(-100000, 5) , "*****" ) + TEST_LINE( StrZero(-100000, 6) , "******" ) + TEST_LINE( StrZero(-100000, 8) , "-0100000" ) +#ifndef __XPP__ /* Internal structures corrupted */ + TEST_LINE( StrZero(10, -5) , "0000000010" ) + TEST_LINE( StrZero(10.0, -5) , "0000000010" ) + TEST_LINE( StrZero(10.00, -5) , "0000000010" ) + TEST_LINE( StrZero(10.50, -5) , "0000000011" ) + TEST_LINE( StrZero(100000, -5) , "0000100000" ) + TEST_LINE( StrZero(100000, -8) , "0000100000" ) + TEST_LINE( StrZero(-10, -5) , "-000000010" ) + TEST_LINE( StrZero(-10.0, -5) , "-000000010" ) + TEST_LINE( StrZero(-10.00, -5) , "-000000010" ) + TEST_LINE( StrZero(-10.50, -5) , "-000000011" ) + TEST_LINE( StrZero(-100000, -5) , "-000100000" ) + TEST_LINE( StrZero(-100000, -6) , "-000100000" ) + TEST_LINE( StrZero(-100000, -8) , "-000100000" ) +#endif + TEST_LINE( StrZero(10, 5, 0) , "00010" ) + TEST_LINE( StrZero(10.0, 5, 0) , "00010" ) + TEST_LINE( StrZero(10.50, 5, 0) , "00011" ) + TEST_LINE( StrZero(100000, 5, 0) , "*****" ) + TEST_LINE( StrZero(-10, 5, 0) , "-0010" ) + TEST_LINE( StrZero(-10.0, 5, 0) , "-0010" ) + TEST_LINE( StrZero(-10.00, 5, 0) , "-0010" ) + TEST_LINE( StrZero(-10.50, 5, 0) , "-0011" ) + TEST_LINE( StrZero(-100000, 5, 0) , "*****" ) + TEST_LINE( StrZero(-100000, 6, 0) , "******" ) + TEST_LINE( StrZero(-100000, 8, 0) , "-0100000" ) + TEST_LINE( StrZero(10, 5, 1) , "010.0" ) + TEST_LINE( StrZero(10.0, 5, 1) , "010.0" ) + TEST_LINE( StrZero(10.50, 5, 1) , "010.5" ) + TEST_LINE( StrZero(100000, 5, 1) , "*****" ) + TEST_LINE( StrZero(-10, 5, 1) , "-10.0" ) + TEST_LINE( StrZero(-10.0, 5, 1) , "-10.0" ) + TEST_LINE( StrZero(-10.00, 5, 1) , "-10.0" ) + TEST_LINE( StrZero(-10.50, 5, 1) , "-10.5" ) + TEST_LINE( StrZero(-100000, 5, 1) , "*****" ) + TEST_LINE( StrZero(-100000, 6, 1) , "******" ) + TEST_LINE( StrZero(-100000, 8, 1) , "********" ) +#ifndef __XPP__ /* Internal structures corrupted */ + TEST_LINE( StrZero(10, 5, -1) , "00010" ) + TEST_LINE( StrZero(10.0, 5, -1) , "00010" ) + TEST_LINE( StrZero(10.50, 5, -1) , "00011" ) + TEST_LINE( StrZero(100000, 5, -1) , "*****" ) + TEST_LINE( StrZero(-10, 5, -1) , "-0010" ) + TEST_LINE( StrZero(-10.0, 5, -1) , "-0010" ) + TEST_LINE( StrZero(-10.00, 5, -1) , "-0010" ) + TEST_LINE( StrZero(-10.50, 5, -1) , "-0011" ) + TEST_LINE( StrZero(-100000, 5, -1) , "*****" ) + TEST_LINE( StrZero(-100000, 6, -1) , "******" ) + TEST_LINE( StrZero(-100000, 8, -1) , "-0100000" ) +#endif + + RETURN NIL + +FUNCTION Comp_Str() + LOCAL old_exact := SET( _SET_EXACT, .F. ) + + TEST_LINE( "ABC" == "", .F. ) + TEST_LINE( "ABC" = "", .T. ) + TEST_LINE( "ABC" != "", .F. ) + TEST_LINE( "ABC" < "", .F. ) + TEST_LINE( "ABC" <= "", .T. ) + TEST_LINE( "ABC" > "", .F. ) + TEST_LINE( "ABC" >= "", .T. ) + TEST_LINE( "" == "ABC", .F. ) + TEST_LINE( "" = "ABC", .F. ) + TEST_LINE( "" != "ABC", .T. ) + TEST_LINE( "" < "ABC", .T. ) + TEST_LINE( "" <= "ABC", .T. ) + TEST_LINE( "" > "ABC", .F. ) + TEST_LINE( "" >= "ABC", .F. ) + TEST_LINE( "ABC" == " ", .F. ) + TEST_LINE( "ABC" = " ", .F. ) + TEST_LINE( "ABC" != " ", .T. ) + TEST_LINE( "ABC" < " ", .F. ) + TEST_LINE( "ABC" <= " ", .F. ) + TEST_LINE( "ABC" > " ", .T. ) + TEST_LINE( "ABC" >= " ", .T. ) + TEST_LINE( " " == "ABC", .F. ) + TEST_LINE( " " = "ABC", .F. ) + TEST_LINE( " " != "ABC", .T. ) + TEST_LINE( " " < "ABC", .T. ) + TEST_LINE( " " <= "ABC", .T. ) + TEST_LINE( " " > "ABC", .F. ) + TEST_LINE( " " >= "ABC", .F. ) + TEST_LINE( "ABC" == "ABC", .T. ) + TEST_LINE( "ABC" = "ABC", .T. ) + TEST_LINE( "ABC" != "ABC", .F. ) + TEST_LINE( "ABC" < "ABC", .F. ) + TEST_LINE( "ABC" <= "ABC", .T. ) + TEST_LINE( "ABC" > "ABC", .F. ) + TEST_LINE( "ABC" >= "ABC", .T. ) + TEST_LINE( "ABC" == "ABCD", .F. ) + TEST_LINE( "ABC" = "ABCD", .F. ) + TEST_LINE( "ABC" != "ABCD", .T. ) + TEST_LINE( "ABC" < "ABCD", .T. ) + TEST_LINE( "ABC" <= "ABCD", .T. ) + TEST_LINE( "ABC" > "ABCD", .F. ) + TEST_LINE( "ABC" >= "ABCD", .F. ) + TEST_LINE( "ABCD" == "ABC", .F. ) + TEST_LINE( "ABCD" = "ABC", .T. ) + TEST_LINE( "ABCD" != "ABC", .F. ) + TEST_LINE( "ABCD" < "ABC", .F. ) + TEST_LINE( "ABCD" <= "ABC", .T. ) + TEST_LINE( "ABCD" > "ABC", .F. ) + TEST_LINE( "ABCD" >= "ABC", .T. ) + TEST_LINE( "ABC" == "ABC ", .F. ) + TEST_LINE( "ABC" = "ABC ", .F. ) + TEST_LINE( "ABC" != "ABC ", .T. ) + TEST_LINE( "ABC" < "ABC ", .T. ) + TEST_LINE( "ABC" <= "ABC ", .T. ) + TEST_LINE( "ABC" > "ABC ", .F. ) + TEST_LINE( "ABC" >= "ABC ", .F. ) + TEST_LINE( "ABC " == "ABC", .F. ) + TEST_LINE( "ABC " = "ABC", .T. ) + TEST_LINE( "ABC " != "ABC", .F. ) + TEST_LINE( "ABC " < "ABC", .F. ) + TEST_LINE( "ABC " <= "ABC", .T. ) + TEST_LINE( "ABC " > "ABC", .F. ) + TEST_LINE( "ABC " >= "ABC", .T. ) + TEST_LINE( "ABC" == "DEF", .F. ) + TEST_LINE( "ABC" = "DEF", .F. ) + TEST_LINE( "ABC" != "DEF", .T. ) + TEST_LINE( "ABC" < "DEF", .T. ) + TEST_LINE( "ABC" <= "DEF", .T. ) + TEST_LINE( "ABC" > "DEF", .F. ) + TEST_LINE( "ABC" >= "DEF", .F. ) + TEST_LINE( "DEF" == "ABC", .F. ) + TEST_LINE( "DEF" = "ABC", .F. ) + TEST_LINE( "DEF" != "ABC", .T. ) + TEST_LINE( "DEF" < "ABC", .F. ) + TEST_LINE( "DEF" <= "ABC", .F. ) + TEST_LINE( "DEF" > "ABC", .T. ) + TEST_LINE( "DEF" >= "ABC", .T. ) + TEST_LINE( "ABC" == "DEFG", .F. ) + TEST_LINE( "ABC" = "DEFG", .F. ) + TEST_LINE( "ABC" != "DEFG", .T. ) + TEST_LINE( "ABC" < "DEFG", .T. ) + TEST_LINE( "ABC" <= "DEFG", .T. ) + TEST_LINE( "ABC" > "DEFG", .F. ) + TEST_LINE( "ABC" >= "DEFG", .F. ) + TEST_LINE( "DEFG" == "ABC", .F. ) + TEST_LINE( "DEFG" = "ABC", .F. ) + TEST_LINE( "DEFG" != "ABC", .T. ) + TEST_LINE( "DEFG" < "ABC", .F. ) + TEST_LINE( "DEFG" <= "ABC", .F. ) + TEST_LINE( "DEFG" > "ABC", .T. ) + TEST_LINE( "DEFG" >= "ABC", .T. ) + TEST_LINE( "ABCD" == "DEF", .F. ) + TEST_LINE( "ABCD" = "DEF", .F. ) + TEST_LINE( "ABCD" != "DEF", .T. ) + TEST_LINE( "ABCD" < "DEF", .T. ) + TEST_LINE( "ABCD" <= "DEF", .T. ) + TEST_LINE( "ABCD" > "DEF", .F. ) + TEST_LINE( "ABCD" >= "DEF", .F. ) + TEST_LINE( "DEF" == "ABCD", .F. ) + TEST_LINE( "DEF" = "ABCD", .F. ) + TEST_LINE( "DEF" != "ABCD", .T. ) + TEST_LINE( "DEF" < "ABCD", .F. ) + TEST_LINE( "DEF" <= "ABCD", .F. ) + TEST_LINE( "DEF" > "ABCD", .T. ) + TEST_LINE( "DEF" >= "ABCD", .T. ) + + SET( _SET_EXACT, old_exact ) + RETURN NIL + +FUNCTION Exact_Str() + LOCAL old_exact := SET( _SET_EXACT, .T. ) + + TEST_LINE( "ABC" == "", .F. ) + TEST_LINE( "ABC" = "", .F. ) + TEST_LINE( "ABC" != "", .T. ) + TEST_LINE( "ABC" < "", .F. ) + TEST_LINE( "ABC" <= "", .F. ) + TEST_LINE( "ABC" > "", .T. ) + TEST_LINE( "ABC" >= "", .T. ) + TEST_LINE( "" == "ABC", .F. ) + TEST_LINE( "" = "ABC", .F. ) + TEST_LINE( "" != "ABC", .T. ) + TEST_LINE( "" < "ABC", .T. ) + TEST_LINE( "" <= "ABC", .T. ) + TEST_LINE( "" > "ABC", .F. ) + TEST_LINE( "" >= "ABC", .F. ) + TEST_LINE( "ABC" == " ", .F. ) + TEST_LINE( "ABC" = " ", .F. ) + TEST_LINE( "ABC" != " ", .T. ) + TEST_LINE( "ABC" < " ", .F. ) + TEST_LINE( "ABC" <= " ", .F. ) + TEST_LINE( "ABC" > " ", .T. ) + TEST_LINE( "ABC" >= " ", .T. ) + TEST_LINE( " " == "ABC", .F. ) + TEST_LINE( " " = "ABC", .F. ) + TEST_LINE( " " != "ABC", .T. ) + TEST_LINE( " " < "ABC", .T. ) + TEST_LINE( " " <= "ABC", .T. ) + TEST_LINE( " " > "ABC", .F. ) + TEST_LINE( " " >= "ABC", .F. ) + TEST_LINE( "ABC" == "ABC", .T. ) + TEST_LINE( "ABC" = "ABC", .T. ) + TEST_LINE( "ABC" != "ABC", .F. ) + TEST_LINE( "ABC" < "ABC", .F. ) + TEST_LINE( "ABC" <= "ABC", .T. ) + TEST_LINE( "ABC" > "ABC", .F. ) + TEST_LINE( "ABC" >= "ABC", .T. ) + TEST_LINE( "ABC" == "ABCD", .F. ) + TEST_LINE( "ABC" = "ABCD", .F. ) + TEST_LINE( "ABC" != "ABCD", .T. ) + TEST_LINE( "ABC" < "ABCD", .T. ) + TEST_LINE( "ABC" <= "ABCD", .T. ) + TEST_LINE( "ABC" > "ABCD", .F. ) + TEST_LINE( "ABC" >= "ABCD", .F. ) + TEST_LINE( "ABCD" == "ABC", .F. ) + TEST_LINE( "ABCD" = "ABC", .F. ) + TEST_LINE( "ABCD" != "ABC", .T. ) + TEST_LINE( "ABCD" < "ABC", .F. ) + TEST_LINE( "ABCD" <= "ABC", .F. ) + TEST_LINE( "ABCD" > "ABC", .T. ) + TEST_LINE( "ABCD" >= "ABC", .T. ) + TEST_LINE( "ABC" == "ABC ", .F. ) + TEST_LINE( "ABC" = "ABC ", .T. ) + TEST_LINE( "ABC" != "ABC ", .F. ) + TEST_LINE( "ABC" < "ABC ", .F. ) + TEST_LINE( "ABC" <= "ABC ", .T. ) + TEST_LINE( "ABC" > "ABC ", .F. ) + TEST_LINE( "ABC" >= "ABC ", .T. ) + TEST_LINE( "ABC " == "ABC", .F. ) + TEST_LINE( "ABC " = "ABC", .T. ) + TEST_LINE( "ABC " != "ABC", .F. ) + TEST_LINE( "ABC " < "ABC", .F. ) + TEST_LINE( "ABC " <= "ABC", .T. ) + TEST_LINE( "ABC " > "ABC", .F. ) + TEST_LINE( "ABC " >= "ABC", .T. ) + TEST_LINE( "ABC" == "DEF", .F. ) + TEST_LINE( "ABC" = "DEF", .F. ) + TEST_LINE( "ABC" != "DEF", .T. ) + TEST_LINE( "ABC" < "DEF", .T. ) + TEST_LINE( "ABC" <= "DEF", .T. ) + TEST_LINE( "ABC" > "DEF", .F. ) + TEST_LINE( "ABC" >= "DEF", .F. ) + TEST_LINE( "DEF" == "ABC", .F. ) + TEST_LINE( "DEF" = "ABC", .F. ) + TEST_LINE( "DEF" != "ABC", .T. ) + TEST_LINE( "DEF" < "ABC", .F. ) + TEST_LINE( "DEF" <= "ABC", .F. ) + TEST_LINE( "DEF" > "ABC", .T. ) + TEST_LINE( "DEF" >= "ABC", .T. ) + TEST_LINE( "ABC" == "DEFG", .F. ) + TEST_LINE( "ABC" = "DEFG", .F. ) + TEST_LINE( "ABC" != "DEFG", .T. ) + TEST_LINE( "ABC" < "DEFG", .T. ) + TEST_LINE( "ABC" <= "DEFG", .T. ) + TEST_LINE( "ABC" > "DEFG", .F. ) + TEST_LINE( "ABC" >= "DEFG", .F. ) + TEST_LINE( "DEFG" == "ABC", .F. ) + TEST_LINE( "DEFG" = "ABC", .F. ) + TEST_LINE( "DEFG" != "ABC", .T. ) + TEST_LINE( "DEFG" < "ABC", .F. ) + TEST_LINE( "DEFG" <= "ABC", .F. ) + TEST_LINE( "DEFG" > "ABC", .T. ) + TEST_LINE( "DEFG" >= "ABC", .T. ) + TEST_LINE( "ABCD" == "DEF", .F. ) + TEST_LINE( "ABCD" = "DEF", .F. ) + TEST_LINE( "ABCD" != "DEF", .T. ) + TEST_LINE( "ABCD" < "DEF", .T. ) + TEST_LINE( "ABCD" <= "DEF", .T. ) + TEST_LINE( "ABCD" > "DEF", .F. ) + TEST_LINE( "ABCD" >= "DEF", .F. ) + TEST_LINE( "DEF" == "ABCD", .F. ) + TEST_LINE( "DEF" = "ABCD", .F. ) + TEST_LINE( "DEF" != "ABCD", .T. ) + TEST_LINE( "DEF" < "ABCD", .F. ) + TEST_LINE( "DEF" <= "ABCD", .F. ) + TEST_LINE( "DEF" > "ABCD", .T. ) + TEST_LINE( "DEF" >= "ABCD", .T. ) + + SET( _SET_EXACT, old_exact ) + RETURN NIL + +FUNCTION New_STRINGS() + +#ifdef __HARBOUR__ + + TEST_LINE( HB_ValToStr( 4 ) , " 4" ) + TEST_LINE( HB_ValToStr( 4.0 / 2 ) , " 2.00" ) + TEST_LINE( HB_ValToStr( "String" ) , "String" ) + TEST_LINE( HB_ValToStr( SToD( "20010101" ) ) , "2001.01.01" ) + TEST_LINE( HB_ValToStr( NIL ) , "NIL" ) + TEST_LINE( HB_ValToStr( .F. ) , ".F." ) + TEST_LINE( HB_ValToStr( .T. ) , ".T." ) + +#endif + + RETURN NIL + +FUNCTION Long_STRINGS() + + TEST_LINE( RIGHT( SPACE( 64 * 1024 - 5 ) + "12345 7890", 10 ), "12345 7890" ) + TEST_LINE( LEN( SPACE( 81910 ) + "1234567890" ), 81920 ) + TEST_LINE( ( "1234567890" + SPACE( 810910 ) ) - ( "1234567890" + SPACE( 810910 ) ), "12345678901234567890" + SPACE( 810910 * 2 ) ) + + RETURN NIL + +/* Don't change the position of this #include. */ +#include "rt_init.ch"