diff --git a/harbour/ChangeLog.txt b/harbour/ChangeLog.txt index b4e1560e77..3193f5ac1b 100644 --- a/harbour/ChangeLog.txt +++ b/harbour/ChangeLog.txt @@ -10,6 +10,52 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2013-03-10 14:14 UTC+0100 Viktor Szakats (harbour syenar.net) + * contrib/hbtest/core.prg + + use octal notation for all non-displayable bytes. + It fixes few issues with previous escaping logic + and avoids non-displayable chars in RTE test sources + and results. + + use more space for test results, less for line numbers + + * contrib/hbtest/tests/test.prg + * adapted to above change + + added more tests + + * contrib/hbamf/tests/test.prg + * use octal notation in expected results + + * contrib/hbct/charone.c + ! WordOne(): fixed when second parameter is not passed + (previously it was a noop in this case) + + * contrib/hbct/tests/test.prg + ! typos in comments + + * utils/hbtest/hbtest.prg + + force switch to cp437 ("EN") under Harbour + * runtime configuration moved right to startup + + * contrib/hbnf/popadder.prg + * extras/gtwvw/docs/gtwvw.txt + * utils/hbtest/rt_misc.prg + * utils/hbtest/rt_str.prg + * tests/setmode.prg + ! avoid remaining non-ASCII, non-UTF8 chars in source + + * contrib/hbmisc/nconvert.prg + * contrib/hbnf/netpv.prg + * contrib/hbnf/popadder.prg + * contrib/hbnf/round.prg + * contrib/hbnf/sqzn.prg + * tests/money.prg + * tests/str.prg + * use '^' operator instead of '**' + + * contrib/hbmisc/stringp.prg + * contrib/hbwin/tests/prn2.prg + * cleanups + 2013-03-09 14:06 UTC+0100 Viktor Szakats (harbour syenar.net) * contrib/hbct/tests/charadd.prg * contrib/hbct/tests/charand.prg diff --git a/harbour/contrib/hbamf/tests/test.prg b/harbour/contrib/hbamf/tests/test.prg index 6625556959..200fcabd3c 100644 --- a/harbour/contrib/hbamf/tests/test.prg +++ b/harbour/contrib/hbamf/tests/test.prg @@ -11,34 +11,34 @@ PROCEDURE Main() hb_cdpSelect( "UTF8EX" ) - HBTEST _enc( {} ) IS "09 01 01" - HBTEST _enc( "a" ) IS "06 03 61" - HBTEST _enc( "ą" ) IS "06 05 C4 85" - HBTEST _enc( 1 ) IS "04 01" - HBTEST _enc( 1000 ) IS "04 87 68" - HBTEST _enc( 1000000 ) IS "04 BD 84 40" - HBTEST _enc( 268435455 ) IS "04 BF FF FF FF" - HBTEST _enc( 268435456 ) IS "05 41 B0 00 00 00 00 00 00" - HBTEST _enc( 268435456000 ) IS "05 42 4F 40 00 00 00 00 00" - HBTEST _enc( -1 ) IS "04 FF FF FF FF" - HBTEST _enc( 9007199254740990 ) IS "05 43 3F FF FF FF FF FF FE" - HBTEST _enc( amf3_Decode( amf3_Encode( 9007199254740990 ) ) ) IS "05 43 3F FF FF FF FF FF FE" - HBTEST _enc( 9007199254740991 ) IS "05 43 3F FF FF FF FF FF FF" - HBTEST _enc( amf3_Decode( amf3_Encode( 9007199254740991 ) ) ) IS "05 43 3F FF FF FF FF FF FF" - HBTEST _enc( 9007199254740991.00 ) IS "05 43 3F FF FF FF FF FF FF" - HBTEST _enc( 6969.69 ) IS "05 40 BB 39 B0 A3 D7 0A 3D" - HBTEST _enc( NIL ) IS "01" - HBTEST _enc( .T. ) IS "03" - HBTEST _enc( .F. ) IS "02" - HBTEST _enc( { 1, -1 } ) IS "09 05 01 04 01 04 FF FF FF FF" - HBTEST _enc( { "ONE" => 0xcafe, "TWO" => 0xbabe } ) IS "09 01 07 4F 4E 45 04 83 95 7E 07 54 57 4F 04 82 F5 3E 01" + HBTEST amf3_Encode( {} ) IS e"\011\001\001" + HBTEST amf3_Encode( "a" ) IS e"\006\003a" + HBTEST amf3_Encode( "ą" ) IS e"\006\005\304\205" + HBTEST amf3_Encode( 1 ) IS e"\004\001" + HBTEST amf3_Encode( 1000 ) IS e"\004\207h" + HBTEST amf3_Encode( 1000000 ) IS e"\004\275\204@" + HBTEST amf3_Encode( 268435455 ) IS e"\004\277\377\377\377" + HBTEST amf3_Encode( 268435456 ) IS e"\005A\260\000\000\000\000\000\000" + HBTEST amf3_Encode( 268435456000 ) IS e"\005BO@\000\000\000\000\000" + HBTEST amf3_Encode( -1 ) IS e"\004\377\377\377\377" + HBTEST amf3_Encode( 9007199254740990 ) IS e"\005C?\377\377\377\377\377\376" + HBTEST amf3_Encode( amf3_Decode( amf3_Encode( 9007199254740990 ) ) ) IS e"\005C?\377\377\377\377\377\376" + HBTEST amf3_Encode( 9007199254740991 ) IS e"\005C?\377\377\377\377\377\377" + HBTEST amf3_Encode( amf3_Decode( amf3_Encode( 9007199254740991 ) ) ) IS e"\005C?\377\377\377\377\377\377" + HBTEST amf3_Encode( 9007199254740991.00 ) IS e"\005C?\377\377\377\377\377\377" + HBTEST amf3_Encode( 6969.69 ) IS e"\005@\2739\260\243\327\012=" + HBTEST amf3_Encode( NIL ) IS e"\001" + HBTEST amf3_Encode( .T. ) IS e"\003" + HBTEST amf3_Encode( .F. ) IS e"\002" + HBTEST amf3_Encode( { 1, -1 } ) IS e"\011\005\001\004\001\004\377\377\377\377" + HBTEST amf3_Encode( { "ONE" => 0xCAFE, "TWO" => 0xBABE } ) IS e"\011\001\007ONE\004\203\225~\007TWO\004\202\365>\001" RETURN -STATIC FUNCTION _enc( a ) +#if 0 +STATIC FUNCTION _enchex( a ) /* for hex notation */ RETURN hb_StrToHex( amf3_Encode( a ), " " ) -#if 0 -STATIC FUNCTION _encsum( a ) /* for longer values */ +STATIC FUNCTION _encsum( a ) /* for longer values */ RETURN hb_NumToHex( hb_CRC( amf3_Encode( a ) ), 4 ) #endif diff --git a/harbour/contrib/hbct/charone.c b/harbour/contrib/hbct/charone.c index 3c2e3bdc0f..0690e20a8e 100644 --- a/harbour/contrib/hbct/charone.c +++ b/harbour/contrib/hbct/charone.c @@ -124,7 +124,7 @@ static void do_charone( int iSwitch ) break; case DO_CHARONE_WORDONE: - if( sStrLen > 3 && sDeleteSetLen >= 2 ) + if( sStrLen > 3 && ( pcDeleteSet == NULL || sDeleteSetLen >= 2 ) ) { const char * pcSub; char * pcRet; diff --git a/harbour/contrib/hbct/tests/test.prg b/harbour/contrib/hbct/tests/test.prg index f4e762a8dc..3ac2d6188a 100644 --- a/harbour/contrib/hbct/tests/test.prg +++ b/harbour/contrib/hbct/tests/test.prg @@ -25,12 +25,12 @@ PROCEDURE Main() HBTEST AscPos( "0123456789" ) IS 57 HBTEST AscPos( "0123456789", 1 ) IS 48 - HBTEST AscPos( "0123456789", 11 ) IS 0 // to large ! + HBTEST AscPos( "0123456789", 11 ) IS 0 // too large ! HBTEST ValPos( "1234x56789" ) IS 9 HBTEST ValPos( "1234x56789", 1 ) IS 1 - HBTEST ValPos( "1234x56789", 11 ) IS 0 // to large ! - HBTEST ValPos( "1234x56789", 5 ) IS 0 // "x" is not a digit ! + HBTEST ValPos( "1234x56789", 11 ) IS 0 // too large ! + HBTEST ValPos( "1234x56789", 5 ) IS 0 // "x" is not a digit ! HBTEST AfterAtNum( "..", "..This..is..a..test!" ) IS "test!" HBTEST AfterAtNum( "..", "..This..is..a..test!", 2 ) IS "is..a..test!" diff --git a/harbour/contrib/hbmisc/nconvert.prg b/harbour/contrib/hbmisc/nconvert.prg index aa7c3b7015..286f123555 100644 --- a/harbour/contrib/hbmisc/nconvert.prg +++ b/harbour/contrib/hbmisc/nconvert.prg @@ -148,7 +148,7 @@ FUNCTION BinToDec( cString ) LOCAL nLen := Len( cNewString ) FOR nX := 1 TO nLen - nNumber += ( At( SubStr( cNewString, nX, 1 ), "01" ) - 1 ) * ( 2 ** ( nLen - nX ) ) + nNumber += ( At( SubStr( cNewString, nX, 1 ), "01" ) - 1 ) * ( 2 ^ ( nLen - nX ) ) NEXT RETURN nNumber @@ -160,7 +160,7 @@ FUNCTION OctalToDec( cString ) LOCAL nLen := Len( cNewString ) FOR nX := 1 TO nLen - nNumber += ( At( SubStr( cNewString, nX, 1 ), "01234567" ) - 1 ) * ( 8 ** ( nLen - nX ) ) + nNumber += ( At( SubStr( cNewString, nX, 1 ), "01234567" ) - 1 ) * ( 8 ^ ( nLen - nX ) ) NEXT RETURN nNumber @@ -172,7 +172,7 @@ FUNCTION HexaToDec( cString ) LOCAL nLen := Len( cNewString ) FOR nX := 1 TO nLen - nNumber += ( At( SubStr( cNewString, nX, 1 ), "0123456789ABCDEF" ) - 1 ) * ( 16 ** ( nLen - nX ) ) + nNumber += ( At( SubStr( cNewString, nX, 1 ), "0123456789ABCDEF" ) - 1 ) * ( 16 ^ ( nLen - nX ) ) NEXT RETURN nNumber diff --git a/harbour/contrib/hbmisc/stringp.prg b/harbour/contrib/hbmisc/stringp.prg index bd2f2fe254..e4ff57a019 100644 --- a/harbour/contrib/hbmisc/stringp.prg +++ b/harbour/contrib/hbmisc/stringp.prg @@ -55,23 +55,23 @@ /* * Convert to character * - * ToChar( , [cSeparator], [lDebug] ) --> - * : Item to write - * [cSeparator] : Separator for arrays - * [lDebug] : .T. -> Write debug output + * ToChar( , [], [] ) --> + * : Item to write + * : Separator for arrays + * : .T. -> Write debug output * - * In DEBUG mode : + * In mode: * - * It will show the xItem according to the following format : + * It will show the xItem according to the following format: + * + * Numerical + * Date yyyy-mm-dd + * Character "" + * Array {, , ...} + * NIL NIL + * Logical .T. / .F. + * Object ():{:, ...} * - * Numerical - * yyyy-mm-dd Date - * "" Character - * {, , ...} Array - * NIL NIL - * .T. / .F. Boolean - * ():{:, ... } - * Object */ FUNCTION ToChar( xTxt, cSeparator, lDebug ) @@ -94,10 +94,9 @@ FUNCTION ToChar( xTxt, cSeparator, lDebug ) CASE "B" ; RETURN iif( lDebug, "Block", Eval( xTxt ) ) CASE "A" + cOut := "" IF lDebug - cOut := "{" - ELSE - cOut := "" + cOut += "{" ENDIF nLen := Len( xTxt ) FOR n := 1 TO nLen // For each item : Recurse ! diff --git a/harbour/contrib/hbnf/netpv.prg b/harbour/contrib/hbnf/netpv.prg index 514aae4d29..6b43d0ad8e 100644 --- a/harbour/contrib/hbnf/netpv.prg +++ b/harbour/contrib/hbnf/netpv.prg @@ -32,7 +32,7 @@ FUNCTION ft_NetPV( nInitialInvestment, nInterestRate, aCashFlow, nNoOfCashFlows AEval( aCashFlow, ; {| nElement, nElementNo | ; nNetPresentValue += nElement / ; - ( ( 1 + ( nInterestRate / 100 ) ) ** nElementNo ) }, ; + ( ( 1 + ( nInterestRate / 100 ) ) ^ nElementNo ) }, ; 1, nNoOfCashFlows ) RETURN nNetPresentValue -= nInitialInvestment diff --git a/harbour/contrib/hbnf/popadder.prg b/harbour/contrib/hbnf/popadder.prg index 8d9671b548..dc9d3d4341 100644 --- a/harbour/contrib/hbnf/popadder.prg +++ b/harbour/contrib/hbnf/popadder.prg @@ -428,7 +428,7 @@ STATIC FUNCTION _ftProcessNumb( aAdder, nKey ) IF lDecSet // Decimal set IF nDecDigit < nMaxDeci // Check how many decimals are allowed nDecDigit := ++nDecDigit - nNumTotal := nNumTotal + nNum / ( 10 ** nDecDigit ) + nNumTotal := nNumTotal + nNum / ( 10 ^ nDecDigit ) ENDIF ELSE nNumTotal := nNumTotal * 10 + nNum @@ -1065,7 +1065,8 @@ STATIC FUNCTION _ftStuffComma( cStrToStuff, lTrimStuffedStr ) cStrToStuff := _ftPosIns( cStrToStuff, ".", iif( "C" $ cStrToStuff .OR. ; "E" $ cStrToStuff .OR. "+" $ cStrToStuff .OR. "-" $ cStrToStuff ; .OR. "X" $ cStrToStuff .OR. "*" $ cStrToStuff .OR. ; - "" $ cStrToStuff .OR. "/" $ cStrToStuff .OR. "=" $ cStrToStuff, ; + Chr( 4 ) /* LOW-ASCII "♦" */ $ cStrToStuff .OR. ; + "/" $ cStrToStuff .OR. "=" $ cStrToStuff, ; Len( cStrToStuff ) - 1, Len( cStrToStuff ) + 1 ) ) IF cStrToStuff == " " .OR. cStrToStuff == "0" diff --git a/harbour/contrib/hbnf/round.prg b/harbour/contrib/hbnf/round.prg index 758af294d4..f1a5da7d6f 100644 --- a/harbour/contrib/hbnf/round.prg +++ b/harbour/contrib/hbnf/round.prg @@ -38,7 +38,7 @@ FUNCTION ft_Round( nNumber, nRoundToAmount, cRoundType, cRoundDirection, ; __defaultNIL( @nRoundToAmount, 2 ) __defaultNIL( @cRoundType, NEAREST_DECIMAL ) __defaultNIL( @cRoundDirection, ROUND_NORMAL ) - __defaultNIL( @nAcceptableError, 1 / ( nRoundToAmount ** 2 ) ) + __defaultNIL( @nAcceptableError, 1 / ( nRoundToAmount ^ 2 ) ) // Are We Rounding to the Nearest Whole // Number or to Zero Decimal Places?? @@ -50,7 +50,7 @@ FUNCTION ft_Round( nNumber, nRoundToAmount, cRoundType, cRoundDirection, ; IF Left( cRoundType, 1 ) == NEAREST_DECIMAL // Yes, Convert to Nearest Fraction - nRoundToAmount := 10 ** nRoundToAmount + nRoundToAmount := 10 ^ nRoundToAmount ENDIF diff --git a/harbour/contrib/hbnf/sqzn.prg b/harbour/contrib/hbnf/sqzn.prg index 3a66f1ed60..b400d77b27 100644 --- a/harbour/contrib/hbnf/sqzn.prg +++ b/harbour/contrib/hbnf/sqzn.prg @@ -27,7 +27,7 @@ FUNCTION ft_Sqzn( nValue, nSize, nDecimals ) __defaultNIL( @nSize, 10 ) __defaultNIL( @nDecimals, 0 ) - nValue := nValue * ( 10 ** nDecimals ) + nValue := nValue * ( 10 ^ nDecimals ) nSize := iif( ( nSize / 2 ) != Int( nSize / 2 ), nSize + 1, nSize ) tmpstr := Str( Abs( nValue ), nSize ) tmpstr := StrTran( tmpstr, " ", "0" ) diff --git a/harbour/contrib/hbtest/core.prg b/harbour/contrib/hbtest/core.prg index 41ad208241..b98afdf18a 100644 --- a/harbour/contrib/hbtest/core.prg +++ b/harbour/contrib/hbtest/core.prg @@ -53,8 +53,8 @@ #include "error.ch" #define TEST_RESULT_COL1_WIDTH 1 -#define TEST_RESULT_COL2_WIDTH 15 -#define TEST_RESULT_COL3_WIDTH 40 +#define TEST_RESULT_COL2_WIDTH 11 +#define TEST_RESULT_COL3_WIDTH 44 #define TEST_RESULT_COL4_WIDTH 85 THREAD STATIC t_hParams := { => } @@ -210,28 +210,51 @@ STATIC FUNCTION ErrorMessage( oError ) STATIC FUNCTION XToStr( xValue, lInString ) - STATIC sc_hReplace := { ; - Chr( 0 ) => '" + Chr( 0 ) + "', ; - Chr( 1 ) => '" + Chr( 1 ) + "', ; - Chr( 2 ) => '" + Chr( 2 ) + "', ; - Chr( 7 ) => '" + Chr( 7 ) + "', ; - Chr( 8 ) => '" + Chr( 8 ) + "', ; - Chr( 9 ) => '" + Chr( 9 ) + "', ; - Chr( 10 ) => '" + Chr( 10 ) + "', ; - Chr( 11 ) => '" + Chr( 11 ) + "', ; - Chr( 12 ) => '" + Chr( 12 ) + "', ; - Chr( 13 ) => '" + Chr( 13 ) + "' } - SWITCH ValType( xValue ) CASE "N" ; RETURN hb_ntos( xValue ) CASE "D" ; RETURN iif( lInString, "0d" + iif( Empty( xValue ), "00000000", DToS( xValue ) ), 'hb_SToD( "' + DToS( xValue ) + '" )' ) CASE "U" ; RETURN "NIL" CASE "C" - xValue := hb_StrReplace( xValue, sc_hReplace ) + xValue := __StrToExp( xValue ) RETURN iif( lInString, xValue, '"' + xValue + '"' ) CASE "M" - xValue := hb_StrReplace( xValue, sc_hReplace ) + xValue := __StrToExp( xValue ) RETURN "M:" + iif( lInString, xValue, '"' + xValue + '"' ) ENDSWITCH RETURN hb_CStr( xValue ) + +STATIC FUNCTION __StrToExp( cStr ) + + LOCAL cResult := "" + + LOCAL nLen, nPos + LOCAL nByte, cByte + + nLen := hb_BLen( cStr ) + FOR nPos := 1 TO nLen + cByte := hb_BSubStr( cStr, nPos, 1 ) + nByte := hb_BCode( cByte ) + IF ! __ByteIsDisplayable( nByte ) .OR. cByte == '"' + cResult += "\" + __ByteToOctal( nByte ) + ELSE + cResult += cByte + ENDIF + NEXT + + RETURN cResult + +STATIC FUNCTION __ByteIsDisplayable( nByte ) + RETURN nByte >= 32 .AND. nByte < 128 + +STATIC FUNCTION __ByteToOctal( nValue ) + + LOCAL cResult := "" + LOCAL nExp + + FOR nExp := 2 TO 0 STEP -1 + cResult += SubStr( "01234567", Int( nValue / ( 8 ^ nExp ) ) + 1, 1 ) + nValue %= 8 ^ nExp + NEXT + + RETURN cResult diff --git a/harbour/contrib/hbtest/tests/test.prg b/harbour/contrib/hbtest/tests/test.prg index bcf5d9513c..e7fc36c863 100644 --- a/harbour/contrib/hbtest/tests/test.prg +++ b/harbour/contrib/hbtest/tests/test.prg @@ -6,17 +6,26 @@ PROCEDURE Main() - HBTEST 2 + 2 IS 4 - HBTEST 2 + 2 IS 5 - HBTEST "a" + "b" IS "ab" - HBTEST 2 + "" IS "E 1 BASE 1081 Argument error (+) OS:0 #:0 A:2:N:2;C: F:S" - HBTEST 2 + Chr( 9 ) IS "E 1 BASE 1081 Argument error (+) OS:0 #:0 A:2:N:2;C:" + Chr( 9 ) + " F:S" - HBTEST Chr( 0 ) IS Chr( 0 ) - HBTEST 0d20111213 IS 0d20111213 - HBTEST NIL IS NIL - HBTEST .T. IS .T. - HBTEST .T. IS .F. - HBTEST .T. - .F. IS "E 1 BASE 1082 Argument error (-) OS:0 #:0 A:2:L:.T.;L:.F. F:S" - HBTEST " " + " " IS " " + HBTEST 2 + 2 IS 4 + HBTEST "a" + "b" IS "ab" + HBTEST Chr( 0 ) IS Chr( 0 ) + HBTEST 0d20111213 IS 0d20111213 + HBTEST NIL IS NIL + HBTEST .T. IS .T. + HBTEST " " + " " IS " " + + /* RTEs */ + HBTEST 2 + "" IS "E 1 BASE 1081 Argument error (+) OS:0 #:0 A:2:N:2;C: F:S" + HBTEST 2 + Chr( 9 ) IS "E 1 BASE 1081 Argument error (+) OS:0 #:0 A:2:N:2;C:\011 F:S" + HBTEST 2 + '"' IS "E 1 BASE 1081 Argument error (+) OS:0 #:0 A:2:N:2;C:\042 F:S" + HBTEST 2 + "'" IS "E 1 BASE 1081 Argument error (+) OS:0 #:0 A:2:N:2;C:' F:S" + HBTEST "" + 0d20111213 IS "E 1 BASE 1081 Argument error (+) OS:0 #:0 A:2:C:;D:0d20111213 F:S" + HBTEST .T. - .F. IS "E 1 BASE 1082 Argument error (-) OS:0 #:0 A:2:L:.T.;L:.F. F:S" + + /* mismatches */ + HBTEST hb_BChar( 254 ) IS hb_BChar( 255 ) + HBTEST 0d20111213 IS 0d20111214 + HBTEST 2 + 2 IS 5 + HBTEST .T. IS .F. RETURN diff --git a/harbour/contrib/hbwin/tests/prn2.prg b/harbour/contrib/hbwin/tests/prn2.prg index 268193c089..c7a0d3122b 100644 --- a/harbour/contrib/hbwin/tests/prn2.prg +++ b/harbour/contrib/hbwin/tests/prn2.prg @@ -34,10 +34,19 @@ PROCEDURE Main() STATIC PROCEDURE PrnTest( cPrinter, cFileName ) + LOCAL lDelete + IF Empty( cFileName ) - hb_MemoWrit( cFileName := "_hbtest.prn", "Hello World!" + Chr( 12 ) ) + hb_MemoWrit( cFileName := hb_FNameExtSet( __FILE__, ".prn" ), "Hello World!" + Chr( 12 ) ) + lDelete := .T. + ELSE + lDelete := .F. ENDIF Alert( "win_PrintFileRaw() returned: " + hb_ntos( win_PrintFileRaw( cPrinter, cFileName, "testing raw printing" ) ) ) + IF lDelete + FErase( cFileName ) + ENDIF + RETURN diff --git a/harbour/extras/gtwvw/docs/gtwvw.txt b/harbour/extras/gtwvw/docs/gtwvw.txt index 9a547783ed..ad3924d2cf 100644 --- a/harbour/extras/gtwvw/docs/gtwvw.txt +++ b/harbour/extras/gtwvw/docs/gtwvw.txt @@ -66,10 +66,10 @@ GTWVW was initially created based on: based on Bcc ConIO Video subsystem by Copyright 2002 Marek Paliwoda - Copyright 2002 Przemysaw Czerpak + Copyright 2002 Przemyslaw Czerpak Video subsystem for Win32 compilers Copyright 1999-2000 Paul Tucker - Copyright 2002 Przemysaw Czerpak + Copyright 2002 Przemyslaw Czerpak The following parts are Copyright of the individual authors. www - http://www.harbour-project.org diff --git a/harbour/tests/money.prg b/harbour/tests/money.prg index 1b54d2aa92..adaa272f58 100644 --- a/harbour/tests/money.prg +++ b/harbour/tests/money.prg @@ -75,7 +75,7 @@ METHOD new( nValue, nDec ) CLASS Money hb_default( @nValue, 0 ) ::nDec := nDec - ::nMul := Int( 10 ** nDec ) + ::nMul := Int( 10 ^ nDec ) ::Set( nValue ) RETURN Self diff --git a/harbour/tests/setmode.prg b/harbour/tests/setmode.prg index 9f32d5d686..1a25c3a551 100644 --- a/harbour/tests/setmode.prg +++ b/harbour/tests/setmode.prg @@ -65,7 +65,7 @@ PROCEDURE TESTBOX( cMode ) @ 0, 3 SAY cMode @ MaxRow(), 3 SAY " Press a key " - @ 8, 0 SAY Replicate( " ", 20 ) + @ 8, 0 SAY Replicate( Chr( 25 ) /* LOW-ASCII "↓" */ + " ", 20 ) @ 9, 0 SAY Replicate( "0123456789", 20 ) FOR nRow := 0 TO MaxRow() diff --git a/harbour/tests/str.prg b/harbour/tests/str.prg index b730caef0a..7bf74b5d9c 100644 --- a/harbour/tests/str.prg +++ b/harbour/tests/str.prg @@ -38,7 +38,7 @@ PROCEDURE test() ?? "3: " ?? a % b - ?? a ** b + ?? a ^ b ? c := a * b @@ -70,7 +70,7 @@ PROCEDURE test() FOR nI := 1 TO 20 ? ?? Str( 6 + nI ) + ": " - ?? 10 ** nI + ( 1.02 * 1.02 ) + ?? 10 ^ nI + ( 1.02 * 1.02 ) NEXT ? diff --git a/harbour/utils/hbtest/hbtest.prg b/harbour/utils/hbtest/hbtest.prg index 1514622033..5dd736ed9c 100644 --- a/harbour/utils/hbtest/hbtest.prg +++ b/harbour/utils/hbtest/hbtest.prg @@ -203,13 +203,26 @@ STATIC PROCEDURE TEST_BEGIN( cParam ) s_nStartTime := Seconds() - s_lShowAll := ; - "/ALL" $ Upper( cParam ) .OR. ; - "-ALL" $ Upper( cParam ) + /* Set up the initial state */ - s_aSkipList := ListToNArray( CMDLGetValue( Upper( cParam ), "/SKIP:", "" ) ) +#ifdef __HARBOUR__ + hb_cdpSelect( "EN" ) + hb_langSelect( "en" ) +#endif + Set( _SET_DATEFORMAT, "yyyy-mm-dd" ) + SET EXACT OFF + + FErase( "NOT_HERE.$$$" ) + + /* Options */ + + s_lShowAll := ; + "/all" $ Lower( cParam ) .OR. ; + "-all" $ Lower( cParam ) + + s_aSkipList := ListToNArray( CMDLGetValue( Lower( cParam ), "/skip:", "" ) ) IF Empty( s_aSkipList ) - s_aSkipList := ListToNArray( CMDLGetValue( Upper( cParam ), "-SKIP:", "" ) ) + s_aSkipList := ListToNArray( CMDLGetValue( Lower( cParam ), "-skip:", "" ) ) ENDIF /* Detect presence of shortcutting optimization */ @@ -225,16 +238,6 @@ STATIC PROCEDURE TEST_BEGIN( cParam ) s_nPass := 0 s_nFail := 0 - /* Set up the initial state */ - -#ifdef __HARBOUR__ - hb_langSelect( "en" ) -#endif - Set( _SET_DATEFORMAT, "yyyy-mm-dd" ) - SET EXACT OFF - - FErase( "NOT_HERE.$$$" ) - /* Feedback */ OutMsg( s_nFhnd, ; @@ -247,7 +250,7 @@ STATIC PROCEDURE TEST_BEGIN( cParam ) OutMsg( s_nFhnd, ; " OS: " + OS() + hb_eol() +; " Date, Time: " + DToC( Date() ) + " " + Time() + hb_eol() +; - "Shortcut opt.: " + iif( s_lShortcut, "ON", "OFF" ) + hb_eol() +; + "Shortcut opt.: " + iif( s_lShortcut, "On", "Off" ) + hb_eol() +; " Switches: " + cParam + hb_eol() +; "===========================================================================" + hb_eol() ) diff --git a/harbour/utils/hbtest/rt_misc.prg b/harbour/utils/hbtest/rt_misc.prg index 65211731bf..2cfa28f1f4 100644 --- a/harbour/utils/hbtest/rt_misc.prg +++ b/harbour/utils/hbtest/rt_misc.prg @@ -402,8 +402,8 @@ PROCEDURE Main_MISC() HBTEST SoundEx( "Cold" ) IS "C430" HBTEST SoundEx( "Colt" ) IS "C430" HBTEST SoundEx( "C" + Chr( 0 ) + "olt" ) IS "C430" - HBTEST SoundEx( "A" ) IS "A000" HBTEST SoundEx( "12345" ) IS "0000" + HBTEST SoundEx( Chr( 181 ) + Chr( 160 ) + "A" + Chr( 144 ) + Chr( 130 ) ) IS "A000" #endif /* NATION functions (do not exist in 5.2e US) */ @@ -615,10 +615,11 @@ PROCEDURE Main_MISC() HBTEST Descend( NIL ) IS NIL HBTEST Descend( { "A", "B" } ) IS NIL #ifdef __HARBOUR__ - HBTEST Descend( @scString ) IS "" /* Bug in CA-Cl*pper, it will return NIL */ + HBTEST Descend( @scString ) IS Chr( 184 ) + Chr( 187 ) + Chr( 180 ) + Chr( 180 ) + Chr( 177 ) /* Bug in CA-Cl*pper, it will return NIL */ + #endif - HBTEST Descend( scString ) IS "" - HBTEST Descend( scString ) IS "" + HBTEST Descend( scString ) IS Chr( 184 ) + Chr( 187 ) + Chr( 180 ) + Chr( 180 ) + Chr( 177 ) + HBTEST Descend( scString ) IS Chr( 184 ) + Chr( 187 ) + Chr( 180 ) + Chr( 180 ) + Chr( 177 ) HBTEST Descend( Descend( scString ) ) IS "HELLO" HBTEST Descend( .F. ) IS .T. HBTEST Descend( .T. ) IS .F. @@ -637,8 +638,8 @@ PROCEDURE Main_MISC() HBTEST Descend( -100000 ) IS 100000.00 HBTEST Descend( "" ) IS "" HBTEST Descend( Chr( 0 ) ) IS Chr( 0 ) - HBTEST Descend( Chr( 0 ) + "Hello" ) IS Chr( 0 ) + "" - HBTEST Descend( "Hello" + Chr( 0 ) + "wo" ) IS "" + Chr( 0 ) + "" + HBTEST Descend( Chr( 0 ) + "Hello" ) IS Chr( 0 ) + Chr( 184 ) + Chr( 155 ) + Chr( 148 ) + Chr( 148 ) + Chr( 145 ) + HBTEST Descend( "Hello" + Chr( 0 ) + "wo" ) IS Chr( 184 ) + Chr( 155 ) + Chr( 148 ) + Chr( 148 ) + Chr( 145 ) + Chr( 0 ) + Chr( 137 ) + Chr( 145 ) HBTEST Descend( hb_SToD( "" ) ) IS 5231808 HBTEST Descend( hb_SToD( "01000101" ) ) IS 3474223 HBTEST Descend( hb_SToD( "19801220" ) ) IS 2787214 @@ -775,8 +776,8 @@ PROCEDURE Main_MISC() HBTEST I2Bin( 0 ) IS Chr( 0 ) + Chr( 0 ) HBTEST I2Bin( 16961 ) IS "AB" HBTEST I2Bin( 16706 ) IS "BA" - HBTEST I2Bin( 255 ) IS "" + Chr( 0 ) - HBTEST I2Bin( -1 ) IS "" + HBTEST I2Bin( 255 ) IS Chr( 255 ) + Chr( 0 ) + HBTEST I2Bin( -1 ) IS Chr( 255 ) + Chr( 255 ) HBTEST I2Bin( 0 ) IS Chr( 0 ) + Chr( 0 ) HBTEST I2Bin( 1 ) IS Chr( 1 ) + Chr( 0 ) HBTEST I2Bin( 65 ) IS "A" + Chr( 0 ) @@ -791,8 +792,8 @@ PROCEDURE Main_MISC() HBTEST L2Bin( 0 ) IS Chr( 0 ) + Chr( 0 ) + Chr( 0 ) + Chr( 0 ) HBTEST L2Bin( 1145258561 ) IS "ABCD" HBTEST L2Bin( 1094861636 ) IS "DCBA" - HBTEST L2Bin( 255 ) IS "" + Chr( 0 ) + Chr( 0 ) + Chr( 0 ) - HBTEST L2Bin( 16777215 ) IS "" + Chr( 0 ) + HBTEST L2Bin( 255 ) IS Chr( 255 ) + Chr( 0 ) + Chr( 0 ) + Chr( 0 ) + HBTEST L2Bin( 16777215 ) IS Chr( 255 ) + Chr( 255 ) + Chr( 255 ) + Chr( 0 ) HBTEST L2Bin( -1 ) IS Chr( 255 ) + Chr( 255 ) + Chr( 255 ) + Chr( 255 ) HBTEST L2Bin( 0 ) IS Chr( 0 ) + Chr( 0 ) + Chr( 0 ) + Chr( 0 ) HBTEST L2Bin( 1 ) IS Chr( 1 ) + Chr( 0 ) + Chr( 0 ) + Chr( 0 ) @@ -876,7 +877,7 @@ PROCEDURE Main_MISC() HBTEST MemoTran( "M"+CR+"s"+CR+LF+"w"+SO+"w"+SO+LF+"h"+CR, "111", "222" ) IS "M" + Chr( 13 ) + "s1w" + Chr( 141 ) + "w2h" + Chr( 13 ) HBTEST MemoTran( "M"+CR+"s"+CR+LF+"w"+SO+"w"+SO+LF+"h"+CR, "", "" ) IS "M" + Chr( 13 ) + "s" + Chr( 0 ) + "w" + Chr( 141 ) + "w" + Chr( 0 ) + "h" + Chr( 13 ) - /* MEMOWRITE()/MemoRead() */ + /* MemoWrit()/MemoRead() */ #ifndef __XPP__ HBTEST MemoWrit() IS .F. @@ -1102,8 +1103,8 @@ PROCEDURE Main_OPOVERL() HBTEST oString .AND. "TST" IS "Hello AND TST" HBTEST oString .OR. "TST" IS "Hello OR TST" ENDIF - HBTEST .NOT. oString IS "" - HBTEST !oString IS "" + HBTEST .NOT. oString IS Chr( 184 ) + Chr( 155 ) + Chr( 148 ) + Chr( 148 ) + Chr( 145 ) + HBTEST ! oString IS Chr( 184 ) + Chr( 155 ) + Chr( 148 ) + Chr( 148 ) + Chr( 145 ) HBTEST oString++ IS "HB_TSTRING Object" HBTEST oString:cValue IS "Hello " HBTEST oString-- IS "HB_TSTRING Object" diff --git a/harbour/utils/hbtest/rt_str.prg b/harbour/utils/hbtest/rt_str.prg index ac05507fc8..f11abe4909 100644 --- a/harbour/utils/hbtest/rt_str.prg +++ b/harbour/utils/hbtest/rt_str.prg @@ -187,9 +187,9 @@ PROCEDURE Main_STR() HBTEST Chr( NIL ) IS "E 1 BASE 1104 Argument error (CHR) OS:0 #:0 A:1:U:NIL F:S" HBTEST Chr( "A" ) IS "E 1 BASE 1104 Argument error (CHR) OS:0 #:0 A:1:C:A F:S" HBTEST Chr( "ADDDDDD" ) IS "E 1 BASE 1104 Argument error (CHR) OS:0 #:0 A:1:C:ADDDDDD F:S" - HBTEST Chr( -10000000.0 ) IS "" - HBTEST Chr( -100000 ) IS "`" - HBTEST Chr( -65 ) IS "" + HBTEST Chr( -10000000.0 ) IS Chr( 128 ) + HBTEST Chr( -100000 ) IS Chr( 96 ) + HBTEST Chr( -65 ) IS Chr( 191 ) HBTEST Chr( snIntP1 ) IS "A" #ifdef __HARBOUR__ HBTEST Chr( @snIntP1 ) IS "A" /* Bug in CA-Cl*pper, it returns: "E 1 BASE 1104 Argument error (CHR) OS:0 #:0 A:1:U:65 F:S" */ @@ -206,19 +206,19 @@ PROCEDURE Main_STR() HBTEST Chr( 66.4 ) IS "B" HBTEST Chr( 66.5 ) IS "B" HBTEST Chr( 66.6 ) IS "B" - HBTEST Chr( 255 ) IS "" + HBTEST Chr( 255 ) IS Chr( 255 ) /* somewhat pointless test ;) */ HBTEST Chr( 256 ) IS "" /* Due to a bug in CA-Cl*pper compiler optimizer. It should return Chr( 0 ) */ HBTEST Chr( 256.0 ) IS Chr( 0 ) HBTEST Chr( 256.1 ) IS Chr( 0 ) HBTEST Chr( ( 256 ) ) IS Chr( 0 ) /* Double paranthesis should be used here to avoid the optimizer of the CA-Cl*pper compiler */ - HBTEST Chr( 257 ) IS "" + HBTEST Chr( 257 ) IS Chr( 1 ) HBTEST Chr( ( 512 ) ) IS Chr( 0 ) /* Double paranthesis should be used here to avoid the optimizer of the CA-Cl*pper compiler */ - HBTEST Chr( 1023 ) IS "" + HBTEST Chr( 1023 ) IS Chr( 255 ) HBTEST Chr( ( 1024 ) ) IS Chr( 0 ) /* Double paranthesis should be used here to avoid the optimizer of the CA-Cl*pper compiler */ - HBTEST Chr( 1025 ) IS "" - HBTEST Chr( 1000 ) IS "" - HBTEST Chr( 100000 ) IS "" - HBTEST Chr( 100000.0 ) IS "" + HBTEST Chr( 1025 ) IS Chr( 1 ) + HBTEST Chr( 1000 ) IS Chr( 232 ) + HBTEST Chr( 100000 ) IS Chr( 160 ) + HBTEST Chr( 100000.0 ) IS Chr( 160 ) #ifdef __HARBOUR__ /* enable Harbour extensions and test correct results results */ #pragma -kh+ @@ -229,19 +229,19 @@ PROCEDURE Main_STR() HBTEST Chr( 66.4 ) IS "B" HBTEST Chr( 66.5 ) IS "B" HBTEST Chr( 66.6 ) IS "B" - HBTEST Chr( 255 ) IS "" + HBTEST Chr( 255 ) IS Chr( 255 ) HBTEST Chr( 256 ) IS Chr( 0 ) HBTEST Chr( 256.0 ) IS Chr( 0 ) HBTEST Chr( 256.1 ) IS Chr( 0 ) HBTEST Chr( ( 256 ) ) IS Chr( 0 ) - HBTEST Chr( 257 ) IS "" + HBTEST Chr( 257 ) IS Chr( 1 ) HBTEST Chr( ( 512 ) ) IS Chr( 0 ) - HBTEST Chr( 1023 ) IS "" + HBTEST Chr( 1023 ) IS Chr( 255 ) HBTEST Chr( ( 1024 ) ) IS Chr( 0 ) - HBTEST Chr( 1025 ) IS "" - HBTEST Chr( 1000 ) IS "" - HBTEST Chr( 100000 ) IS "" - HBTEST Chr( 100000.0 ) IS "" + HBTEST Chr( 1025 ) IS Chr( 1 ) + HBTEST Chr( 1000 ) IS Chr( 232 ) + HBTEST Chr( 100000 ) IS Chr( 160 ) + HBTEST Chr( 100000.0 ) IS Chr( 160 ) #endif /* Asc() */ @@ -325,8 +325,8 @@ PROCEDURE Main_STR() HBTEST IsUpper( "K" ) IS .T. HBTEST IsUpper( "Z" ) IS .T. HBTEST IsUpper( "z" ) IS .F. - HBTEST IsUpper( "" ) IS .F. - HBTEST IsUpper( "" ) IS .F. + HBTEST IsUpper( Chr( 153 ) ) IS .F. + HBTEST IsUpper( Chr( 148 ) ) IS .F. /* IsLower() */ @@ -345,8 +345,8 @@ PROCEDURE Main_STR() HBTEST IsLower( "K" ) IS .F. HBTEST IsLower( "Z" ) IS .F. HBTEST IsLower( "z" ) IS .T. - HBTEST IsLower( "" ) IS .F. - HBTEST IsLower( "" ) IS .F. + HBTEST IsLower( Chr( 153 ) ) IS .F. + HBTEST IsLower( Chr( 148 ) ) IS .F. /* AllTrim() */ @@ -478,8 +478,8 @@ PROCEDURE Main_STR() HBTEST Upper( "AazazA" ) IS "AAZAZA" HBTEST Upper( "Aaz" + Chr( 0 ) + "zA" ) IS "AAZ" + Chr( 0 ) + "ZA" HBTEST Upper( "z" ) IS "Z" - HBTEST Upper( "" ) IS "" - HBTEST Upper( "Hrbor 8-) " ) IS "HRBOR 8-) " + HBTEST Upper( Chr( 160 ) + Chr( 181 ) ) IS Chr( 160 ) + Chr( 181 ) + HBTEST Upper( "H" + Chr( 160 ) + "rbor 8-) " + Chr( 181 ) ) IS "H" + Chr( 160 ) + "RBOR 8-) " + Chr( 181 ) /* Lower() */ @@ -497,8 +497,8 @@ PROCEDURE Main_STR() HBTEST Lower( "AazazA" ) IS "aazaza" HBTEST Lower( "Aaz" + Chr( 0 ) + "zA" ) IS "aaz" + Chr( 0 ) + "za" HBTEST Lower( "z" ) IS "z" - HBTEST Lower( "" ) IS "" - HBTEST Lower( "Hrbor 8-) " ) IS "hrbor 8-) " + HBTEST Lower( Chr( 160 ) + Chr( 181 ) ) IS Chr( 160 ) + Chr( 181 ) + HBTEST Lower( "H" + Chr( 160 ) + "rbor 8-) " + Chr( 181 ) ) IS "h" + Chr( 160 ) + "rbor 8-) " + Chr( 181 ) /* At() */