20000405-02:03 GMT+1 Victor Szakats <info@szelvesz.hu>

This commit is contained in:
Viktor Szakats
2000-04-05 00:28:30 +00:00
parent 27388ab0d6
commit 8631f135c8
13 changed files with 576 additions and 465 deletions

View File

@@ -1,3 +1,39 @@
20000405-02:03 GMT+1 Victor Szakats <info@szelvesz.hu>
* 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 <dholm@jsd-llc.com>
* source/rtl/dir.c
@@ -21,6 +57,7 @@
20000404-08:00 GMT-3 Luiz Rafael Culik <culik@sl.conex.net>
*doc/en/dbstrux.txt
*Small reformating
20000404-13:00 GMT+1 Victor Szakats <info@szelvesz.hu>
* source/rdd/dbstrux.prg
@@ -371,7 +408,7 @@
* source/rtl/gtapi.c
* Cast
* source/common/hbver.h
* source/common/hbver.c
% #include <os2.h> is always included by hbdefs.h, so it's not needed
to add it explicitly. Please test it anyway.

View File

@@ -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$@

View File

@@ -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

View File

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

View File

@@ -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)

View File

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

View File

@@ -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

View File

@@ -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

View File

@@ -113,6 +113,7 @@ FUNCTION Main( cPar1, cPar2 )
Main_MATH()
Main_DATE()
Main_STR()
Main_STRA()
Main_TRANS()
Comp_Str()
Exact_Str()

View File

@@ -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

View File

@@ -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

View File

@@ -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. */

View File

@@ -0,0 +1,486 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* Regression tests for the runtime library (strings)
*
* Copyright 1999 Victor Szakats <info@szelvesz.hu>
* 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"