diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 324f141854..c9890edcf9 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,22 @@ +20000403-16:35 GMT+1 Victor Szakats + + * utils/hbtest/* + + utils/hbtest/make_xpp.bat + + utils/hbtest/make_xpp.cmd + + HBTEST made compatible with XBase++ 1.10. Check the results. + + Comparison: + + Platform Filename Size Passes Failures Total + --------------- ------------- --------- ------ -------- ----- + CA-Clipper 5.2e hbtest5x.exe 504.832 2976 25 3001 + Harbour (BCC55) hbtest.exe 566.272 3186 82 3268 + XBase++ 1.10 hbtestxp.exe 1.375.232 1977 771 2748 + + * source/rtl/philesx.c + ! CURDRIVE() error handling made more like XBase++. Retry is allowed, + a the error text is the same. (not tested) + 20000403-13:07 GMT+1 Victor Szakats * source/rtl/tgetlist.prg diff --git a/harbour/source/rtl/philesx.c b/harbour/source/rtl/philesx.c index f294f6b5da..9f0996d95a 100644 --- a/harbour/source/rtl/philesx.c +++ b/harbour/source/rtl/philesx.c @@ -37,6 +37,7 @@ #include "hbapi.h" #include "hbapifs.h" +#include "hbapierr.h" #ifdef HB_COMPAT_XPP @@ -52,9 +53,12 @@ HB_FUNC( CURDRIVE ) if( ISCHAR( 1 ) && hb_parclen( 1 ) > 0 ) { - if( hb_fsChDrv( ( BYTE )( toupper( *hb_parc( 1 ) ) - 'A' ) ) != 0 ) + while( hb_fsChDrv( ( BYTE )( toupper( *hb_parc( 1 ) ) - 'A' ) ) != 0 ) { - /* TODO: Throw some XBase++ like runtime error. [vszakats] */ + USHORT uiAction = hb_errRT_BASE_Ext1( EG_OPEN, 9999, "Operating system error", "CURDRIVE", 0, EF_CANDEFAULT | EF_CANRETRY ); + + if( uiAction != E_RETRY ) + break; } } diff --git a/harbour/utils/hbtest/hbtest.prg b/harbour/utils/hbtest/hbtest.prg index 1a557575dd..85ebfd9778 100644 --- a/harbour/utils/hbtest/hbtest.prg +++ b/harbour/utils/hbtest/hbtest.prg @@ -111,8 +111,11 @@ FUNCTION Main( cPar1, cPar2 ) Main_TRANS() Comp_Str() Exact_Str() -#ifdef __HARBOUR__ New_STRINGS() +#ifdef __HARBOUR__ + Long_STRINGS() +#endif +#ifdef __XPP__ Long_STRINGS() #endif Main_ARRAY() @@ -138,12 +141,18 @@ FUNCTION Main( cPar1, cPar2 ) STATIC FUNCTION Main_LAST() TEST_LINE( MEMVARBLOCK( "mcString" ) , "{||...}" ) +#ifndef __XPP__ TEST_LINE( __MRestore() , "E BASE 2007 Argument error __MRESTORE " ) +#endif TEST_LINE( MEMVARBLOCK( "mcString" ) , "{||...}" ) +#ifndef __XPP__ TEST_LINE( __MSave() , "E BASE 2008 Argument error __MSAVE " ) TEST_LINE( __MRestore( "$NOTHERE.MEM", .F. ) , "E BASE 2005 Open error $NOTHERE.MEM F:DR" ) +#endif TEST_LINE( MEMVARBLOCK( "mcString" ) , NIL ) +#ifndef __XPP__ TEST_LINE( __MSave( "*BADNAM*.MEM", "*", .T. ) , "E BASE 2006 Create error *BADNAM*.MEM F:DR" ) +#endif RETURN NIL @@ -175,8 +184,13 @@ STATIC FUNCTION TEST_BEGIN( cParam ) CASE "CLIPPER (R)" $ Upper( Version() ) ; s_cFileName := "rtl_test.c5x" ENDCASE - s_nFhnd := 1 /* FHND_STDOUT */ +#ifdef __XPP__ + s_cFileName := "hbtest.xpp" + s_nFhnd := FCreate( s_cFileName ) +#else s_cFileName := "(stdout)" + s_nFhnd := 1 /* FHND_STDOUT */ +#endif s_nCount := 0 s_nPass := 0 @@ -240,7 +254,9 @@ STATIC FUNCTION TEST_BEGIN( cParam ) PUBLIC mbBlockC := sbBlockC PUBLIC maArray := { 9898 } +#ifndef __XPP__ rddSetDefault( "DBFNTX" ) +#endif dbCreate( "!TEMP!.DBF",; { { "TYPE_C" , "C", 15, 0 } ,; @@ -371,6 +387,10 @@ STATIC FUNCTION TEST_END() ENDIF ENDIF +#ifdef __XPP__ + FClose( s_nFhnd ) +#endif + ErrorLevel( iif( s_nFail != 0, 1, 0 ) ) RETURN NIL @@ -392,7 +412,11 @@ FUNCTION XToStr( xValue ) CASE cType == "N" ; RETURN LTrim( Str( xValue ) ) CASE cType == "D" ; RETURN 'SToD("' + DToS( xValue ) + '")' CASE cType == "L" ; RETURN iif( xValue, ".T.", ".F." ) +#ifdef __XPP__ + CASE cType == "O" ; RETURN xValue:className() + "Object" +#else CASE cType == "O" ; RETURN xValue:className + " Object" +#endif CASE cType == "U" ; RETURN "NIL" CASE cType == "B" ; RETURN '{||...}' CASE cType == "A" ; RETURN '{.[' + LTrim( Str( Len( xValue ) ) ) + '].}' @@ -413,9 +437,13 @@ STATIC FUNCTION ErrorMessage( oError ) CASE oError:severity == ES_CATASTROPHIC ; cMessage += "C " ENDCASE ENDIF +#ifdef __XPP__ + cMessage += "BASE" + " " +#else IF ValType( oError:subsystem ) == "C" cMessage += oError:subsystem() + " " ENDIF +#endif IF ValType( oError:subCode ) == "N" cMessage += LTrim( Str( oError:subCode ) ) + " " ENDIF diff --git a/harbour/utils/hbtest/make_xpp.bat b/harbour/utils/hbtest/make_xpp.bat new file mode 100644 index 0000000000..67e6cc4e68 --- /dev/null +++ b/harbour/utils/hbtest/make_xpp.bat @@ -0,0 +1,18 @@ +@echo off +rem +rem $Id$ +rem + +xpp hbtest.prg /w /n +xpp rt_array.prg /w /n +xpp rt_date.prg /w /n +xpp rt_file.prg /w /n +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_trans.prg /w /n + +alink /out:hbtestxp hbtest rt_array rt_date rt_file rt_hvm rt_math rt_misc rt_str rt_trans + +del *.obj diff --git a/harbour/utils/hbtest/make_xpp.cmd b/harbour/utils/hbtest/make_xpp.cmd new file mode 100644 index 0000000000..67e6cc4e68 --- /dev/null +++ b/harbour/utils/hbtest/make_xpp.cmd @@ -0,0 +1,18 @@ +@echo off +rem +rem $Id$ +rem + +xpp hbtest.prg /w /n +xpp rt_array.prg /w /n +xpp rt_date.prg /w /n +xpp rt_file.prg /w /n +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_trans.prg /w /n + +alink /out:hbtestxp hbtest rt_array rt_date rt_file rt_hvm rt_math rt_misc rt_str rt_trans + +del *.obj diff --git a/harbour/utils/hbtest/rt_array.prg b/harbour/utils/hbtest/rt_array.prg index 877e27ac68..71c45614e3 100644 --- a/harbour/utils/hbtest/rt_array.prg +++ b/harbour/utils/hbtest/rt_array.prg @@ -42,76 +42,100 @@ FUNCTION Main_ARRAY() /* ARRAY function error conditions. */ +#ifndef __XPP__ TEST_LINE( aCopy() , NIL ) +#endif TEST_LINE( aCopy({}, "C") , NIL ) TEST_LINE( aCopy("C", {}) , NIL ) TEST_LINE( aCopy({}, {}) , "{.[0].}" ) TEST_LINE( aCopy({}, ErrorNew()) , "ERROR Object" ) TEST_LINE( aCopy(ErrorNew(), {}) , "{.[0].}" ) +#ifndef __XPP__ TEST_LINE( aClone() , NIL ) +#endif TEST_LINE( aClone( NIL ) , NIL ) TEST_LINE( aClone( {} ) , "{.[0].}" ) TEST_LINE( aClone( ErrorNew() ) , NIL ) +#ifndef __XPP__ TEST_LINE( aEval() , "E BASE 2017 Argument error AEVAL " ) TEST_LINE( aEval( NIL ) , "E BASE 2017 Argument error AEVAL " ) TEST_LINE( aEval( {} ) , "E BASE 2017 Argument error AEVAL " ) +#endif TEST_LINE( aEval( {}, NIL ) , "E BASE 2017 Argument error AEVAL " ) TEST_LINE( aEval( {}, {|| NIL } ) , "{.[0].}" ) TEST_LINE( aEval( ErrorNew(), {|| NIL } ) , "ERROR Object" ) +#ifndef __XPP__ TEST_LINE( aScan() , 0 ) TEST_LINE( aScan( NIL ) , 0 ) TEST_LINE( aScan( "A" ) , 0 ) TEST_LINE( aScan( {} ) , 0 ) +#endif TEST_LINE( aScan( {}, "" ) , 0 ) TEST_LINE( aScan( ErrorNew(), "NOT_FOUND") , 0 ) +#ifndef __XPP__ TEST_LINE( aSort() , NIL ) +#endif TEST_LINE( aSort(10) , NIL ) TEST_LINE( aSort({}) , "{.[0].}" ) TEST_LINE( aSort(ErrorNew()) , NIL ) #ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY +#ifndef __XPP__ TEST_LINE( aFill() , "E BASE 2017 Argument error AEVAL " ) +#endif TEST_LINE( aFill( NIL ) , "E BASE 2017 Argument error AEVAL " ) #else +#ifndef __XPP__ TEST_LINE( aFill() , "E BASE 9999 Argument error AFILL " ) +#endif TEST_LINE( aFill( NIL ) , "E BASE 9999 Argument error AFILL " ) #endif TEST_LINE( aFill( {} ) , "{.[0].}" ) TEST_LINE( aFill( {}, 1 ) , "{.[0].}" ) TEST_LINE( aFill( ErrorNew() ) , "ERROR Object" ) TEST_LINE( aFill( ErrorNew(), 1 ) , "ERROR Object" ) +#ifndef __XPP__ TEST_LINE( aDel() , NIL ) TEST_LINE( aDel( NIL ) , NIL ) TEST_LINE( aDel( { 1 } ) , "{.[1].}" ) +#endif TEST_LINE( aDel( { 1 }, 0 ) , "{.[1].}" ) TEST_LINE( aDel( { 1 }, 100 ) , "{.[1].}" ) TEST_LINE( aDel( { 1 }, 1 ) , "{.[1].}" ) TEST_LINE( aDel( { 1 }, -1 ) , "{.[1].}" ) TEST_LINE( aDel( { 1 }, 0 ) , "{.[1].}" ) TEST_LINE( aDel( { 1 }, NIL ) , "{.[1].}" ) +#ifndef __XPP__ TEST_LINE( aDel( ErrorNew() ) , "ERROR Object" ) +#endif TEST_LINE( aDel( ErrorNew(), 0 ) , "ERROR Object" ) TEST_LINE( aDel( ErrorNew(), 100 ) , "ERROR Object" ) TEST_LINE( aDel( ErrorNew(), 1 ) , "ERROR Object" ) TEST_LINE( aDel( ErrorNew(), -1 ) , "ERROR Object" ) TEST_LINE( aDel( ErrorNew(), 0 ) , "ERROR Object" ) TEST_LINE( aDel( ErrorNew(), NIL ) , "ERROR Object" ) +#ifndef __XPP__ TEST_LINE( aIns() , NIL ) TEST_LINE( aIns( NIL ) , NIL ) TEST_LINE( aIns( { 1 } ) , "{.[1].}" ) +#endif TEST_LINE( aIns( { 1 }, 0 ) , "{.[1].}" ) TEST_LINE( aIns( { 1 }, 100 ) , "{.[1].}" ) TEST_LINE( aIns( { 1 }, 1 ) , "{.[1].}" ) TEST_LINE( aIns( { 1 }, -1 ) , "{.[1].}" ) TEST_LINE( aIns( { 1 }, 0 ) , "{.[1].}" ) TEST_LINE( aIns( { 1 }, NIL ) , "{.[1].}" ) +#ifndef __XPP__ TEST_LINE( aIns( ErrorNew() ) , "ERROR Object" ) +#endif TEST_LINE( aIns( ErrorNew(), 0 ) , "ERROR Object" ) TEST_LINE( aIns( ErrorNew(), 100 ) , "ERROR Object" ) TEST_LINE( aIns( ErrorNew(), 1 ) , "ERROR Object" ) TEST_LINE( aIns( ErrorNew(), -1 ) , "ERROR Object" ) TEST_LINE( aIns( ErrorNew(), 0 ) , "ERROR Object" ) TEST_LINE( aIns( ErrorNew(), NIL ) , "ERROR Object" ) +#ifndef __XPP__ TEST_LINE( aTail() , NIL ) +#endif TEST_LINE( aTail( NIL ) , NIL ) TEST_LINE( aTail( "" ) , NIL ) TEST_LINE( aTail( {} ) , NIL ) @@ -121,10 +145,12 @@ FUNCTION Main_ARRAY() #else TEST_LINE( aTail( ErrorNew() ) , NIL ) #endif +#ifndef __XPP__ TEST_LINE( aSize() , "E BASE 2023 Argument error ASIZE " ) TEST_LINE( aSize( NIL ) , "E BASE 2023 Argument error ASIZE " ) TEST_LINE( aSize( {} ) , "E BASE 2023 Argument error ASIZE " ) TEST_LINE( aSize( ErrorNew() ) , "E BASE 2023 Argument error ASIZE " ) +#endif TEST_LINE( aSize( NIL, 0 ) , "E BASE 2023 Argument error ASIZE " ) TEST_LINE( aSize( {}, 0 ) , "{.[0].}" ) TEST_LINE( aSize( ErrorNew(), 0 ) , "ERROR Object" ) @@ -149,7 +175,9 @@ FUNCTION Main_ARRAY() TEST_LINE( aAdd( {}, "A" ) , "A" ) TEST_LINE( aAdd( ErrorNew(), NIL ) , NIL ) TEST_LINE( aAdd( ErrorNew(), "A" ) , "A" ) +#ifndef __XPP__ TEST_LINE( Array() , NIL ) +#endif TEST_LINE( Array( 0 ) , "{.[0].}" ) #ifdef __HARBOUR__ TEST_LINE( Array( 5000 ) , "{.[5000].}" ) @@ -267,9 +295,11 @@ FUNCTION Main_ARRAY() /* ASCAN() */ +#ifndef __XPP__ TEST_LINE( aScan() , 0 ) TEST_LINE( aScan( NIL ) , 0 ) TEST_LINE( aScan( "A" ) , 0 ) +#endif TEST_LINE( aScan( "A", "A" ) , 0 ) TEST_LINE( aScan( "A", {|| .F. } ) , 0 ) TEST_LINE( aScan( {1,2,3}, {|x| NIL } ) , 0 ) diff --git a/harbour/utils/hbtest/rt_file.prg b/harbour/utils/hbtest/rt_file.prg index 5f390784cb..c4383c9bb0 100644 --- a/harbour/utils/hbtest/rt_file.prg +++ b/harbour/utils/hbtest/rt_file.prg @@ -58,7 +58,9 @@ FUNCTION Main_FILE() TEST_LINE( FError() , 0 ) TEST_LINE( TESTFIER( FWrite( fhnd, ">1234567890<" ) ) , "E: 0 R: 12" ) TEST_LINE( TESTFIER( FWrite( fhnd, "(123" + Chr(0) + "4567890)" ) ) , "E: 0 R: 13" ) +#ifndef __XPP__ TEST_LINE( TESTFIER( FSeek( fhnd ) ) , "E: 0 R: 0" ) +#endif TEST_LINE( TESTFIER( FSeek( fhnd, 5 ) ) , "E: 0 R: 5" ) TEST_LINE( TESTFIER( FSeek( fhnd, -1, FS_SET ) ) , "E: 25 R: 5" ) TEST_LINE( TESTFIER( FSeek( fhnd, -10, FS_SET ) ) , "E: 25 R: 5" ) @@ -77,9 +79,13 @@ FUNCTION Main_FILE() TEST_LINE( TESTFIER( FSeek( fhnd, -1, FS_END ) ) , "E: 0 R: 28" ) TEST_LINE( TESTFIER( FWrite( fhnd, "F" ) ) , "E: 0 R: 1" ) TEST_LINE( TESTFIER( FSeek( fhnd, 0 ) ) , "E: 0 R: 0" ) +#ifndef __XPP__ TEST_LINE( TESTFIER( FRead( fhnd, mnLongP ) ) , "E: 0 R: 0" ) +#endif TEST_LINE( TESTFIER( FRead( fhnd, @mnLongP, 2 ) ) , "E: 0 R: 0" ) +#ifndef __XPP__ TEST_LINE( TESTFIER( FRead( fhnd, cBuff4 ) ) , "E: 0 R: 0" ) +#endif TEST_LINE( TESTFIER( FRead( fhnd, cBuff4, 2 ) ) , "E: 0 R: 0" ) #ifdef __CLIPPER__ // TEST_LINE( TESTFIER( FRead( fhnd, @cBuff4, Len( cBuff4 ) + 1 ) ) , "E: 0 R: 0" ) @@ -105,7 +111,9 @@ FUNCTION Main_FILE() TEST_LINE( TESTFIER( FWrite( fhnd, "V" ) ) , 'E: 0 R: 1' ) TEST_LINE( TESTFIER( FSeek( fhnd, -3, FS_END ) ) , 'E: 0 R: 43' ) TEST_LINE( TESTFIER( FWrite( fhnd, "W" ) ) , 'E: 0 R: 1' ) +#ifndef __XPP__ TEST_LINE( TESTFIER( FClose() ) , 'E: 0 R: .F.' ) +#endif TEST_LINE( TESTFIER( FClose( fhnd ) ) , 'E: 0 R: .T.' ) TEST_LINE( TESTFIER( FClose( fhnd ) ) , 'E: 6 R: .F.' ) TEST_LINE( TESTFIER( FErase( "NOT_HERE.$$$" ) ) , 'E: 2 R: -1' ) @@ -119,7 +127,9 @@ FUNCTION Main_FILE() TEST_LINE( FError() , 0 ) TEST_LINE( TESTFIER( FWrite( fhnd, ">1234567890<" ) ) , "E: 0 R: 12" ) TEST_LINE( TESTFIER( FWrite( fhnd, "(123" + Chr(0) + "4567890)" ) ) , "E: 0 R: 13" ) +#ifndef __XPP__ TEST_LINE( TESTFIER( FSeek( fhnd ) ) , "E: 0 R: 0" ) +#endif TEST_LINE( TESTFIER( FSeek( fhnd, 5 ) ) , "E: 0 R: 5" ) TEST_LINE( TESTFIER( FSeek( fhnd, -1, FS_SET ) ) , "E: 25 R: 5" ) TEST_LINE( TESTFIER( FSeek( fhnd, -10, FS_SET ) ) , "E: 25 R: 5" ) @@ -138,9 +148,13 @@ FUNCTION Main_FILE() TEST_LINE( TESTFIER( FSeek( fhnd, -1, FS_END ) ) , "E: 0 R: 49" ) TEST_LINE( TESTFIER( FWrite( fhnd, "F" ) ) , "E: 0 R: 1" ) TEST_LINE( TESTFIER( FSeek( fhnd, 0 ) ) , "E: 0 R: 0" ) +#ifndef __XPP__ TEST_LINE( TESTFIER( FRead( fhnd, mnLongP ) ) , "E: 0 R: 0" ) +#endif TEST_LINE( TESTFIER( FRead( fhnd, @mnLongP, 2 ) ) , "E: 0 R: 0" ) +#ifndef __XPP__ TEST_LINE( TESTFIER( FRead( fhnd, cBuff4 ) ) , "E: 0 R: 0" ) +#endif TEST_LINE( TESTFIER( FRead( fhnd, cBuff4, 2 ) ) , "E: 0 R: 0" ) #ifdef __CLIPPER__ // TEST_LINE( TESTFIER( FRead( fhnd, @cBuff4, Len( cBuff4 ) + 1 ) ) , "E: 0 R: 0" ) @@ -168,7 +182,9 @@ FUNCTION Main_FILE() TEST_LINE( TESTFIER( FWrite( fhnd, "W" ) ) , 'E: 0 R: 1' ) TEST_LINE( TESTFIER( FWrite( fhnd, "" ) ) , 'E: 0 R: 0' ) TEST_LINE( TESTFIER( FSeek( fhnd, 0, FS_END ) ) , 'E: 0 R: 65' ) +#ifndef __XPP__ TEST_LINE( TESTFIER( FClose() ) , 'E: 0 R: .F.' ) +#endif TEST_LINE( TESTFIER( FClose( fhnd ) ) , 'E: 0 R: .T.' ) TEST_LINE( TESTFIER( FClose( fhnd ) ) , 'E: 6 R: .F.' ) TEST_LINE( TESTFIER( FErase( "NOT_HERE.$$$" ) ) , 'E: 2 R: -1' ) diff --git a/harbour/utils/hbtest/rt_hvm.prg b/harbour/utils/hbtest/rt_hvm.prg index 2eac2e89f4..fcce298857 100644 --- a/harbour/utils/hbtest/rt_hvm.prg +++ b/harbour/utils/hbtest/rt_hvm.prg @@ -139,9 +139,11 @@ FUNCTION Main_HVM() /* TYPE() */ +#ifndef __XPP__ TEST_LINE( Type( NIL ) , "E BASE 1121 Argument error TYPE F:S" ) TEST_LINE( Type( 100 ) , "E BASE 1121 Argument error TYPE F:S" ) TEST_LINE( Type( {} ) , "E BASE 1121 Argument error TYPE F:S" ) +#endif TEST_LINE( Type( "w_TEST->TYPE_C" ) , "C" ) TEST_LINE( Type( "w_TEST->TYPE_D" ) , "D" ) TEST_LINE( Type( "w_TEST->TYPE_M" ) , "M" ) @@ -173,8 +175,11 @@ FUNCTION Main_HVM() /* Harbour compiler not yet handles these */ #ifndef __HARBOUR__ +#ifndef __XPP__ TEST_LINE( NIL:className , "NIL" ) +#endif #endif ) +#ifndef __XPP__ TEST_LINE( "":className , "CHARACTER" ) TEST_LINE( 0:className , "NUMERIC" ) TEST_LINE( SToD( "" ):className , "DATE" ) @@ -182,10 +187,14 @@ FUNCTION Main_HVM() TEST_LINE( {|| NIL }:className , "BLOCK" ) TEST_LINE( {}:className , "ARRAY" ) TEST_LINE( ErrorNew():className , "ERROR" ) +#endif /* Harbour compiler not yet handles these */ #ifndef __HARBOUR__ +#ifndef __XPP__ TEST_LINE( NIL:classH , 0 ) #endif +#endif +#ifndef __XPP__ TEST_LINE( "":classH , 0 ) TEST_LINE( 0:classH , 0 ) TEST_LINE( SToD( "" ):classH , 0 ) @@ -193,11 +202,15 @@ FUNCTION Main_HVM() TEST_LINE( {|| NIL }:classH , 0 ) TEST_LINE( {}:classH , 0 ) TEST_LINE( ErrorNew():classH > 0 , .T. ) +#endif /* Harbour compiler not yet handles these */ #ifndef __HARBOUR__ +#ifndef __XPP__ TEST_LINE( suNIL:className , "NIL" ) #endif +#endif +#ifndef __XPP__ TEST_LINE( scString:className , "CHARACTER" ) TEST_LINE( snIntP:className , "NUMERIC" ) TEST_LINE( sdDateE:className , "DATE" ) @@ -205,10 +218,14 @@ FUNCTION Main_HVM() TEST_LINE( sbBlock:className , "BLOCK" ) TEST_LINE( saArray:className , "ARRAY" ) TEST_LINE( soObject:className , "ERROR" ) +#endif /* Harbour compiler not yet handles these */ #ifndef __HARBOUR__ +#ifndef __XPP__ TEST_LINE( suNIL:classH , 0 ) #endif +#endif +#ifndef __XPP__ TEST_LINE( scString:classH , 0 ) TEST_LINE( snIntP:classH , 0 ) TEST_LINE( sdDateE:classH , 0 ) @@ -216,6 +233,7 @@ FUNCTION Main_HVM() TEST_LINE( sbBlock:classH , 0 ) TEST_LINE( saArray:classH , 0 ) TEST_LINE( soObject:classH > 0 , .T. ) +#endif /* (operators) */ @@ -661,8 +679,10 @@ FUNCTION Main_HVM() TEST_LINE( ++{ 1, 2 }[ ( 2, 1 ) ] , 2 ) TEST_LINE( { 1, 2 }[ 1 ]++ , 1 ) TEST_LINE( ++{ 1, 2 }[ 1 ] , 2 ) +#ifndef __XPP__ TEST_LINE( ({ 1, 2 }[ 1 ])++ , 1 ) TEST_LINE( ++({ 1, 2 }[ 1 ]) , 2 ) +#endif #endif /* Operator precedence */ @@ -709,6 +729,8 @@ FUNCTION Main_HVM() TEST_LINE( "bd" $ "bcde" , .F. ) TEST_LINE( "BD" $ "bcde" , .F. ) +#ifndef __XPP__ + IF TEST_OPT_Z() /* With the shortcut optimization *ON* */ @@ -783,13 +805,16 @@ FUNCTION Main_HVM() ENDIF +#endif + TEST_LINE( .NOT. .T. , .F. ) TEST_LINE( .NOT. .F. , .T. ) TEST_LINE( .NOT. 1 , "E BASE 1077 Argument error .NOT. F:S" ) -#ifndef __HARBOUR__ - // this error is reported at compile time +#ifndef __HARBOUR__ // this error is reported at compile time +#ifndef __XPP__ // this error is reported at compile time TEST_LINE( iif( "A", ":T:", ":F:" ) , "E BASE 1066 Argument error conditional " ) +#endif #endif TEST_LINE( iif( .T., ":T:", ":F:" ) , ":T:" ) TEST_LINE( iif( .F., ":T:", ":F:" ) , ":F:" ) @@ -834,6 +859,7 @@ FUNCTION Main_HVM() TEST_LINE( (SToD(""))->NOFIELD , "E BASE 1065 Argument error & F:S" ) TEST_LINE( (ErrorNew())->NOFIELD , "E BASE 1065 Argument error & F:S" ) +#ifndef __XPP__ TEST_LINE( ("NOTHERE")->(Eof()) , .T. ) TEST_LINE( (mcString)->(Eof()) , .T. ) TEST_LINE( ({})->(Eof()) , .T. ) @@ -845,6 +871,7 @@ FUNCTION Main_HVM() TEST_LINE( (2.5)->(Eof()) , .T. ) TEST_LINE( (SToD(""))->(Eof()) , .T. ) TEST_LINE( (ErrorNew())->(Eof()) , .T. ) +#endif TEST_LINE( NOTHERE->NOFIELD , "E BASE 1002 Alias does not exist NOTHERE F:R" ) TEST_LINE( NOTHERE->("NOFIELD") , "E BASE 1002 Alias does not exist NOTHERE F:R" ) diff --git a/harbour/utils/hbtest/rt_math.prg b/harbour/utils/hbtest/rt_math.prg index 4625dde747..6a8b6f73f2 100644 --- a/harbour/utils/hbtest/rt_math.prg +++ b/harbour/utils/hbtest/rt_math.prg @@ -44,7 +44,7 @@ FUNCTION Main_MATH() TEST_LINE( Log("A") , "E BASE 1095 Argument error LOG F:S" ) TEST_LINE( Str(Log(-1)) , "***********************" ) -// TEST_LINE( Str(Log(0)) , "***********************" ) +// TEST_LINE( Str(Log(0)) , "***********************" ) TEST_LINE( Str(Log(1)) , " 0.00" ) TEST_LINE( Str(Log(12)) , " 2.48" ) TEST_LINE( Str(Log(snIntP)) , " 2.30" ) diff --git a/harbour/utils/hbtest/rt_misc.prg b/harbour/utils/hbtest/rt_misc.prg index 458be35a03..8b3ed7ca89 100644 --- a/harbour/utils/hbtest/rt_misc.prg +++ b/harbour/utils/hbtest/rt_misc.prg @@ -84,6 +84,7 @@ FUNCTION Main_MISC() TEST_LINE( TSTRING(1000) , "00:16:40" ) +#ifndef __XPP__ TEST_LINE( SoundEx() , "0000" ) TEST_LINE( SoundEx( 10 ) , "0000" ) TEST_LINE( SoundEx( @scString ) , "H400" ) @@ -102,10 +103,13 @@ FUNCTION Main_MISC() TEST_LINE( SoundEx( "C"+Chr(0)+"olt" ) , "C430" ) TEST_LINE( SoundEx( "A" ) , "A000" ) TEST_LINE( SoundEx( "12345" ) , "0000" ) +#endif /* NATION functions (do not exist in 5.2e US) */ +#ifndef __XPP__ TEST_LINE( NationMsg() , "Invalid argument" ) +#endif TEST_LINE( NationMsg("A") , "" ) TEST_LINE( NationMsg(-1) , "" ) /* CA-Cl*pper bug: 5.3 may return trash. */ TEST_LINE( NationMsg(0) , "" ) @@ -127,6 +131,8 @@ FUNCTION Main_MISC() TEST_LINE( NationMsg(200) , "" ) /* Bug in CA-Cl*pper, it will return "74?" or other trash */ #endif +#ifndef __XPP__ + /* These will cause a GPF in CA-Cl*pper (5.2e International, 5.3b) */ #ifndef __CLIPPER__ TEST_LINE( IsAffirm() , .F. ) @@ -165,6 +171,8 @@ FUNCTION Main_MISC() TEST_LINE( IsNegative("no") , .T. ) TEST_LINE( IsNegative("NO") , .T. ) +#endif /* __XPP__ */ + /* FOR/NEXT */ TEST_LINE( TFORNEXT( .F., .T., NIL ) , "E BASE 1086 Argument error ++ F:S" ) @@ -242,7 +250,9 @@ FUNCTION Main_MISC() } */ +#ifndef __XPP__ TEST_LINE( SToD() , SToD(" ") ) +#endif TEST_LINE( SToD(1) , SToD(" ") ) TEST_LINE( SToD(NIL) , SToD(" ") ) TEST_LINE( SToD("") , SToD(" ") ) @@ -271,8 +281,10 @@ FUNCTION Main_MISC() /* DESCEND() */ -#ifndef __CLIPPER__ - TEST_LINE( Descend() , NIL ) /* Bug in CA-Cl*pper, it returns undefined trash */ +#ifndef __CLIPPER__ /* Bug in CA-Cl*pper, it returns undefined trash */ +#ifndef __XPP__ /* Compiler time error */ + TEST_LINE( Descend() , NIL ) +#endif #endif TEST_LINE( Descend( NIL ) , NIL ) TEST_LINE( Descend( { "A", "B" } ) , NIL ) @@ -348,6 +360,8 @@ FUNCTION Main_MISC() #endif +#ifndef __XPP__ + /* FKMAX(), FKLABEL() */ TEST_LINE( FKMax() , 40 ) @@ -364,13 +378,17 @@ FUNCTION Main_MISC() TEST_LINE( FKLabel( 40 ) , "F40" ) TEST_LINE( FKLabel( 41 ) , "" ) +#endif /* __XPP__ */ + /* NOTE: BIN2*() functions are quite untable in CA-Cl*pper when the passed parameter is smaller than the required length. */ /* BIN2I() */ #ifndef __CLIPPER__ +#ifndef __XPP__ TEST_LINE( BIN2I() , 0 ) /* Bug in CA-Cl*pper, this causes a GPF */ +#endif TEST_LINE( BIN2I(100) , 0 ) /* Bug in CA-Cl*pper, this causes a GPF */ TEST_LINE( BIN2I("") , 0 ) /* Bug in CA-Cl*pper, it will return trash */ #endif @@ -386,7 +404,9 @@ FUNCTION Main_MISC() /* BIN2W() */ #ifndef __CLIPPER__ +#ifndef __XPP__ TEST_LINE( BIN2W() , 0 ) /* Bug in CA-Cl*pper, this causes a GPF */ +#endif TEST_LINE( BIN2W(100) , 0 ) /* Bug in CA-Cl*pper, this causes a GPF */ TEST_LINE( BIN2W("") , 0 ) /* Bug in CA-Cl*pper, it will return trash */ #endif @@ -402,7 +422,9 @@ FUNCTION Main_MISC() /* BIN2L() */ #ifndef __CLIPPER__ +#ifndef __XPP__ TEST_LINE( BIN2L() , 0 ) /* Bug in CA-Cl*pper, this causes a GPF */ +#endif TEST_LINE( BIN2L(100) , 0 ) /* Bug in CA-Cl*pper, this causes a GPF */ TEST_LINE( BIN2L("") , 0 ) /* Bug in CA-Cl*pper, it will return trash */ #endif @@ -420,7 +442,9 @@ FUNCTION Main_MISC() /* I2BIN() */ +#ifndef __XPP__ TEST_LINE( I2BIN() , ""+Chr(0)+""+Chr(0)+"" ) +#endif TEST_LINE( I2BIN("" ) , ""+Chr(0)+""+Chr(0)+"" ) TEST_LINE( I2BIN(0 ) , ""+Chr(0)+""+Chr(0)+"" ) TEST_LINE( I2BIN(16961 ) , "AB" ) @@ -434,7 +458,9 @@ FUNCTION Main_MISC() /* L2BIN() */ +#ifndef __XPP__ TEST_LINE( L2BIN() , ""+Chr(0)+""+Chr(0)+""+Chr(0)+""+Chr(0)+"" ) +#endif TEST_LINE( L2BIN("") , ""+Chr(0)+""+Chr(0)+""+Chr(0)+""+Chr(0)+"" ) TEST_LINE( L2BIN(0 ) , ""+Chr(0)+""+Chr(0)+""+Chr(0)+""+Chr(0)+"" ) TEST_LINE( L2BIN(1145258561 ) , "ABCD" ) @@ -447,6 +473,8 @@ FUNCTION Main_MISC() TEST_LINE( L2BIN(4407873 ) , "ABC"+Chr(0)+"" ) TEST_LINE( L2BIN(1145258561 ) , "ABCD" ) +#ifndef __XPP__ + /* __COPYFILE() */ FClose(FCreate("$$COPYFR.TMP")) @@ -465,6 +493,10 @@ FUNCTION Main_MISC() FErase("$$COPYFR.TMP") FErase("$$COPYTO.TMP") +#endif /* __XPP__ */ + +#ifndef __XPP__ + /* __RUN() */ /* NOTE: Only error cases are tested. */ @@ -473,6 +505,8 @@ FUNCTION Main_MISC() TEST_LINE( __RUN( NIL ) , NIL ) TEST_LINE( __RUN( 10 ) , NIL ) +#endif /* __XPP__ */ + /* MEMVARBLOCK() */ TEST_LINE( MEMVARBLOCK() , NIL ) @@ -490,7 +524,9 @@ FUNCTION Main_MISC() /* HARDCR() */ +#ifndef __XPP__ TEST_LINE( HardCR() , "" ) +#endif TEST_LINE( HardCR(NIL) , "" ) TEST_LINE( HardCR(100) , "" ) #ifdef __HARBOUR__ @@ -501,7 +537,9 @@ FUNCTION Main_MISC() /* MEMOTRAN() */ +#ifndef __XPP__ TEST_LINE( MemoTran() , "" ) +#endif TEST_LINE( MemoTran(NIL) , "" ) TEST_LINE( MemoTran(100) , "" ) TEST_LINE( MemoTran(100,"1","2") , "" ) @@ -516,8 +554,10 @@ FUNCTION Main_MISC() /* MEMOWRITE()/MEMOREAD() */ +#ifndef __XPP__ TEST_LINE( MemoWrit() , .F. ) TEST_LINE( MemoWrit("$$MEMOFI.TMP") , .F. ) +#endif TEST_LINE( MemoWrit("$$MEMOFI.TMP","") , .T. ) TEST_LINE( MemoRead("$$MEMOFI.TMP") , "" ) TEST_LINE( MemoWrit("$$MEMOFI.TMP",scStringZ) , .T. ) @@ -527,7 +567,9 @@ FUNCTION Main_MISC() TEST_LINE( MemoWrit("$$MEMOFI.TMP",scStringW) , .T. ) TEST_LINE( MemoRead("$$MEMOFI.TMP") , ""+Chr(13)+""+Chr(10)+""+Chr(10)+""+Chr(9)+"" ) TEST_LINE( MemoWrit("*INVALI*.TMP",scStringZ) , .F. ) +#ifndef __XPP__ TEST_LINE( MemoRead() , "" ) +#endif TEST_LINE( MemoRead("*INVALI*.TMP") , "" ) FErase("$$MEMOFI.TMP") diff --git a/harbour/utils/hbtest/rt_str.prg b/harbour/utils/hbtest/rt_str.prg index fcdb0ea679..48453fa495 100644 --- a/harbour/utils/hbtest/rt_str.prg +++ b/harbour/utils/hbtest/rt_str.prg @@ -163,7 +163,9 @@ FUNCTION Main_STR() /* ISDIGIT() */ +#ifndef __XPP__ TEST_LINE( IsDigit() , .F. ) +#endif TEST_LINE( IsDigit( 100 ) , .F. ) #ifdef __HARBOUR__ TEST_LINE( IsDigit( @scString ) , .F. ) /* Bug in CA-Cl*pper, it will always return .F. */ @@ -182,7 +184,9 @@ FUNCTION Main_STR() /* ISALPHA() */ +#ifndef __XPP__ TEST_LINE( IsAlpha() , .F. ) +#endif TEST_LINE( IsAlpha( 100 ) , .F. ) #ifdef __HARBOUR__ TEST_LINE( IsAlpha( @scString ) , .T. ) /* Bug in CA-Cl*pper, it will always return .F. */ @@ -209,7 +213,9 @@ FUNCTION Main_STR() /* ISUPPER() */ +#ifndef __XPP__ TEST_LINE( IsUpper() , .F. ) +#endif TEST_LINE( IsUpper( 100 ) , .F. ) #ifdef __HARBOUR__ TEST_LINE( IsUpper( @scString ) , .T. ) /* Bug in CA-Cl*pper, it will always return .F. */ @@ -227,7 +233,9 @@ FUNCTION Main_STR() /* ISLOWER() */ +#ifndef __XPP__ TEST_LINE( IsLower() , .F. ) +#endif TEST_LINE( IsLower( 100 ) , .F. ) #ifdef __HARBOUR__ TEST_LINE( IsLower( @scString ) , .F. ) /* Bug in CA-Cl*pper, it will always return .F. */ @@ -346,9 +354,11 @@ FUNCTION Main_STR() the error handler, so the error is thrown, but we can't catch it. This bug is fixed in CA-Clipper 5.3 [vszel] */ #ifndef __CLIPPER__ +#ifndef __XPP__ TEST_LINE( StrTran() , "E BASE 1126 Argument error STRTRAN F:S" ) /* CA-Cl*pper bug, it will exit on this */ TEST_LINE( StrTran( NIL ) , "E BASE 1126 Argument error STRTRAN F:S" ) /* CA-Cl*pper bug, it will exit on this */ TEST_LINE( StrTran( 100 ) , "E BASE 1126 Argument error STRTRAN F:S" ) /* CA-Cl*pper bug, it will exit on this */ +#endif TEST_LINE( StrTran( "AA", 1 ) , "E BASE 1126 Argument error STRTRAN F:S" ) /* CA-Cl*pper bug, it will exit on this */ #endif TEST_LINE( StrTran( "AA", "A" ) , "" ) @@ -488,22 +498,26 @@ FUNCTION Main_STR() TEST_LINE( SubStr("abcdef", 2, 1) , "b" ) TEST_LINE( SubStr("abcdef", 2, 7) , "bcdef" ) TEST_LINE( SubStr("abcdef", 2) , "bcdef" ) +#ifndef __XPP__ TEST_LINE( SubStr("abcdef", -2, -1) , "" ) TEST_LINE( SubStr("abcdef", -2, 0) , "" ) TEST_LINE( SubStr("abcdef", -2, 1) , "e" ) TEST_LINE( SubStr("abcdef", -2, 7) , "ef" ) TEST_LINE( SubStr("abcdef", -2) , "ef" ) +#endif TEST_LINE( SubStr("abcdef", 10, -1) , "" ) TEST_LINE( SubStr("abcdef", 10, 0) , "" ) TEST_LINE( SubStr("abcdef", 10, 1) , "" ) TEST_LINE( SubStr("abcdef", 10, 7) , "" ) TEST_LINE( SubStr("abcdef", 10) , "" ) +#ifndef __XPP__ TEST_LINE( SubStr("abcdef", -10, -1) , "" ) TEST_LINE( SubStr("abcdef", -10, 0) , "" ) TEST_LINE( SubStr("abcdef", -10, 1) , "a" ) TEST_LINE( SubStr("abcdef", -10, 7) , "abcdef" ) TEST_LINE( SubStr("abcdef", -10, 15) , "abcdef" ) TEST_LINE( SubStr("abcdef", -10) , "abcdef" ) +#endif TEST_LINE( SubStr("ab" + Chr(0) + "def", 2, 3) , "b" + Chr(0) + "d" ) TEST_LINE( SubStr("abc" + Chr(0) + "def", 3, 1) , "c" ) TEST_LINE( SubStr("abc" + Chr(0) + "def", 4, 1) , "" + Chr(0) + "" ) @@ -548,8 +562,10 @@ FUNCTION Main_STR() TEST_LINE( Pad(@scString, 10) , "HELLO " ) /* Bug in CA-Cl*pper, it will return "" */ TEST_LINE( Pad(scString, @snIntP) , "HELLO " ) /* Bug in CA-Cl*pper, it will return "" */ #endif +#ifndef __XPP__ TEST_LINE( Pad("abcdef", "A") , "" ) TEST_LINE( Pad("abcdef", -5) , "" ) +#endif TEST_LINE( Pad("abcdef", 0) , "" ) TEST_LINE( Pad("abcdef", 5) , "abcde" ) TEST_LINE( Pad("abcdef", 10) , "abcdef " ) @@ -573,8 +589,10 @@ FUNCTION Main_STR() TEST_LINE( PadR(@scString, 10) , "HELLO " ) /* Bug in CA-Cl*pper, it will return "" */ TEST_LINE( PadR(scString, @snIntP) , "HELLO " ) /* Bug in CA-Cl*pper, it will return "" */ #endif +#ifndef __XPP__ TEST_LINE( PadR("abcdef", "A") , "" ) TEST_LINE( PadR("abcdef", -5) , "" ) +#endif TEST_LINE( PadR("abcdef", 0) , "" ) TEST_LINE( PadR("abcdef", 5) , "abcde" ) TEST_LINE( PadR("abcdef", 10) , "abcdef " ) @@ -598,8 +616,10 @@ FUNCTION Main_STR() TEST_LINE( PadL(@scString, 10) , " HELLO" ) /* Bug in CA-Cl*pper, it will return "" */ TEST_LINE( PadL(scString, @snIntP) , " HELLO" ) /* Bug in CA-Cl*pper, it will return "" */ #endif +#ifndef __XPP__ TEST_LINE( PadL("abcdef", "A") , "" ) TEST_LINE( PadL("abcdef", -5) , "" ) +#endif TEST_LINE( PadL("abcdef", 0) , "" ) TEST_LINE( PadL("abcdef", 5) , "abcde" ) /* QUESTION: CA-Cl*pper "bug", should return: "bcdef" ? */ TEST_LINE( PadL("abcdef", 10) , " abcdef" ) @@ -623,8 +643,10 @@ FUNCTION Main_STR() TEST_LINE( PadC(@scString, 10) , " HELLO " ) /* Bug in CA-Cl*pper, it will return "" */ TEST_LINE( PadC(scString, @snIntP) , " HELLO " ) /* Bug in CA-Cl*pper, it will return "" */ #endif +#ifndef __XPP__ TEST_LINE( PadC("abcdef", "A") , "" ) TEST_LINE( PadC("abcdef", -5) , "" ) +#endif TEST_LINE( PadC("abcdef", 0) , "" ) TEST_LINE( PadC("abcdef", 2) , "ab" ) /* QUESTION: CA-Cl*pper "bug", should return: "cd" ? */ TEST_LINE( PadC("abcdef", 5) , "abcde" ) @@ -635,8 +657,10 @@ FUNCTION Main_STR() /* STUFF() */ +#ifndef __XPP__ TEST_LINE( Stuff() , "" ) TEST_LINE( Stuff( 100 ) , "" ) +#endif TEST_LINE( Stuff("ABCDEF", -6, -5, "xyz") , "ABCDEFxyz" ) TEST_LINE( Stuff("ABCDEF", -6, -2, "xyz") , "ABCDEFxyz" ) TEST_LINE( Stuff("ABCDEF", -6, 0, "xyz") , "ABCDEFxyz" ) @@ -726,6 +750,7 @@ FUNCTION Main_STR() 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" ) @@ -739,6 +764,7 @@ FUNCTION Main_STR() 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" ) @@ -763,6 +789,7 @@ FUNCTION Main_STR() 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" ) @@ -775,6 +802,7 @@ FUNCTION Main_STR() TEST_LINE( Str(-100000, 5, -1) , "*****" ) TEST_LINE( Str(-100000, 6, -1) , "******" ) TEST_LINE( Str(-100000, 8, -1) , " -100000" ) +#endif /* STRZERO() */ @@ -814,6 +842,7 @@ FUNCTION Main_STR() 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" ) @@ -827,6 +856,7 @@ FUNCTION Main_STR() 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" ) @@ -849,6 +879,7 @@ FUNCTION Main_STR() 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" ) @@ -860,6 +891,7 @@ FUNCTION Main_STR() TEST_LINE( StrZero(-100000, 5, -1) , "*****" ) TEST_LINE( StrZero(-100000, 6, -1) , "******" ) TEST_LINE( StrZero(-100000, 8, -1) , "-0100000" ) +#endif RETURN NIL @@ -1087,10 +1119,10 @@ FUNCTION Exact_Str() SET( _SET_EXACT, old_exact ) RETURN NIL -#ifdef __HARBOUR__ - 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" ) @@ -1099,6 +1131,8 @@ FUNCTION New_STRINGS() TEST_LINE( HB_ValToStr( .F. ) , ".F." ) TEST_LINE( HB_ValToStr( .T. ) , ".T." ) +#endif + RETURN NIL FUNCTION Long_STRINGS() @@ -1109,7 +1143,5 @@ FUNCTION Long_STRINGS() RETURN NIL -#endif - /* Don't change the position of this #include. */ #include "rt_init.ch" diff --git a/harbour/utils/hbtest/rt_trans.prg b/harbour/utils/hbtest/rt_trans.prg index f13dba7cb9..4039770a58 100644 --- a/harbour/utils/hbtest/rt_trans.prg +++ b/harbour/utils/hbtest/rt_trans.prg @@ -58,35 +58,51 @@ FUNCTION Main_TRANS() TEST_LINE( Transform( "", "" ) , "" ) TEST_LINE( Transform( "", "@" ) , "" ) +#ifndef __XPP__ TEST_LINE( Transform( "", NIL ) , "" ) +#endif TEST_LINE( Transform( "", 100 ) , "E BASE 1122 Argument error TRANSFORM F:S" ) TEST_LINE( Transform( "hello", "" ) , "hello" ) TEST_LINE( Transform( "hello", "@" ) , "hello" ) +#ifndef __XPP__ TEST_LINE( Transform( "hello", NIL ) , "hello" ) +#endif TEST_LINE( Transform( "hello", 100 ) , "E BASE 1122 Argument error TRANSFORM F:S" ) TEST_LINE( Transform( 100.2, "" ) , " 100.2" ) TEST_LINE( Transform( 100.2, "@" ) , " 100.2" ) +#ifndef __XPP__ TEST_LINE( Transform( 100.2, NIL ) , " 100.2" ) +#endif TEST_LINE( Transform( 100.2, 100 ) , "E BASE 1122 Argument error TRANSFORM F:S" ) TEST_LINE( Transform( 100.20, "" ) , " 100.20" ) TEST_LINE( Transform( 100.20, "@" ) , " 100.20" ) +#ifndef __XPP__ TEST_LINE( Transform( 100.20, NIL ) , " 100.20" ) +#endif TEST_LINE( Transform( 100.20, 100 ) , "E BASE 1122 Argument error TRANSFORM F:S" ) TEST_LINE( Transform( Val("100.2"), "" ) , "100.2" ) TEST_LINE( Transform( Val("100.2"), "@" ) , "100.2" ) +#ifndef __XPP__ TEST_LINE( Transform( Val("100.2"), NIL ) , "100.2" ) +#endif TEST_LINE( Transform( Val("100.2"), 100 ) , "E BASE 1122 Argument error TRANSFORM F:S" ) TEST_LINE( Transform( Val("100.20"), "" ) , "100.20" ) // TEST_LINE( Transform( Val("100.20"), "@" ) , "100.20" ) +#ifndef __XPP__ TEST_LINE( Transform( Val("100.20"), NIL ) , "100.20" ) +#endif TEST_LINE( Transform( Val("100.20"), 100 ) , "E BASE 1122 Argument error TRANSFORM F:S" ) TEST_LINE( Transform( sdDate, "" ) , "1984.03.25" ) TEST_LINE( Transform( sdDate, "@" ) , "1984.03.25" ) +#ifndef __XPP__ TEST_LINE( Transform( sdDate, NIL ) , "1984.03.25" ) +#endif TEST_LINE( Transform( sdDate, 100 ) , "E BASE 1122 Argument error TRANSFORM F:S" ) TEST_LINE( Transform( .T., "" ) , "T" ) TEST_LINE( Transform( .T., "@" ) , "T" ) +#ifndef __XPP__ TEST_LINE( Transform( .F., NIL ) , "F" ) +#endif TEST_LINE( Transform( .F., 100 ) , "E BASE 1122 Argument error TRANSFORM F:S" ) TEST_LINE( Transform( scStringM , "!!!!!" ) , "HELLO" ) @@ -96,7 +112,9 @@ FUNCTION Main_TRANS() TEST_LINE( Transform( @scStringM, "@!" ) , "HELLO" ) /* Bug in CA-Cl*pper, it returns: "E BASE 1122 Argument error TRANSFORM F:S" */ #endif TEST_LINE( Transform( scStringM , "" ) , "Hello" ) +#ifndef __XPP__ TEST_LINE( Transform( scStringM , NIL ) , "Hello" ) +#endif TEST_LINE( Transform( scStringM , 100 ) , "E BASE 1122 Argument error TRANSFORM F:S" ) TEST_LINE( Transform("abcdef", "@! !lkm!") , "ABkmE" ) @@ -264,7 +282,9 @@ FUNCTION Main_TRANS() TEST_LINE( Transform("abcdefghijklmnopqrstuvwxyz", "@! abcdefghijklmnopqrstuvwxyz") , "AbcdefghijkLmNopqrstuvwXYz" ) // Harbour PP fails on this. #ifndef __HARBOUR__ +#ifndef __XPP__ TEST_LINE( Transform("abcdefghijklmnopqrstuvwxyz", "@! `~!@#$%^&*()_+-={}[]\|;':") , "`~C@E$%^&*()_+-={}[]\|;':" ) +#endif #endif TEST_LINE( Transform("abcdefghijklmnopqrstuvwxyz", "@! ,./<>?") , ",./<>?" ) TEST_LINE( Transform("abcdefghijklmnopqrstuvwxyz", "@R! ,./<>?" ) , ",./<>?ABCDEFGHIJKLMNOPQRSTUVWXYZ" ) @@ -397,7 +417,9 @@ FUNCTION Main_TRANS() TEST_LINE( Transform(0, "@B(X $99999") , "$ 0" ) TEST_LINE( Transform(0, "@B(ZX $99999") , " " ) +#ifndef __XPP__ TEST_LINE( Transform(sdDate, NIL) , "84.03.25" ) +#endif TEST_LINE( Transform(sdDate, "") , "84.03.25" ) TEST_LINE( Transform(sdDate, "@Z") , " " )