diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 48750fd7f3..50ccc4b4b8 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,25 @@ +19991022-15:16 GMT+1 Victor Szel + * tests/rtl_test.prg + - tests/filexist.prg (removed) + - tests/val.prg (removed) + - tests/strcmp.prg (removed) + - tests/instr.prg (removed) + - tests/syserror.prg (removed) + - tests/operat.prg (removed) + tests/Makefile + + Rest of File() tests moved to RTL_TEST, so FILEXITS.PRG could be removed + + One ValType() test moved to RTL_TEST, so VAL.PRG could be removed + + STRCMP.PRG tests moved to RTL_TEST + + INSTR.PRG tests moved to RTL_TEST + + SYSERROR.PRG tests moved to RTL_TEST + + OPERAT.PRG tests moved to RTL_TEST + + Some new operator precedence and inline inc/dec op. tests added. + * Small cleanup in RTL_TEST. + ; All newly added tests passes. + * tests/tstcolor.prg + + Some tests added for the SetColor() bug fixed yesterday. + ! RETURN added to suppress warning. + 19991022-13:56 GMT+1 Victor Szel * tests/rtl_test.prg - tests/fileio.prg diff --git a/harbour/tests/Makefile b/harbour/tests/Makefile index 35dc5103dd..6add7bfc9f 100644 --- a/harbour/tests/Makefile +++ b/harbour/tests/Makefile @@ -66,7 +66,6 @@ PRG_SOURCES=\ dynsym.prg \ exittest.prg \ fib.prg \ - filexist.prg \ fornext.prg \ fortest.prg \ funcarr.prg \ @@ -79,7 +78,6 @@ PRG_SOURCES=\ initexit.prg \ inkeytst.prg \ inline.prg \ - instr.prg \ iotest.prg \ iotest2.prg \ longdev.prg \ @@ -96,7 +94,6 @@ PRG_SOURCES=\ objarr.prg \ objasign.prg \ objects.prg \ - operat.prg \ os.prg \ output.prg \ overload.prg \ @@ -120,13 +117,11 @@ PRG_SOURCES=\ statinit.prg \ statfun.prg \ statics.prg \ - strcmp.prg \ strdelim.prg \ strings.prg \ strings2.prg \ strings3.prg \ strip.prg \ - syserror.prg \ t1.prg \ test.prg \ test_all.prg \ @@ -150,7 +145,6 @@ PRG_SOURCES=\ testwarn.prg \ tstalias.prg \ tstcolor.prg \ - val.prg \ version.prg \ while.prg \ diff --git a/harbour/tests/filexist.prg b/harbour/tests/filexist.prg deleted file mode 100644 index 3cc770d33e..0000000000 --- a/harbour/tests/filexist.prg +++ /dev/null @@ -1,20 +0,0 @@ -// -// $Id$ -// - -// test of file function -function main - -if file("filexist.prg") == .t. - qout("file exist test works") -else - qout("file exist test fails") -endif - -if file("filxxist.prg") == .f. - qout("file exist test works") -else - qout("file exist test fails") -endif - -return nil diff --git a/harbour/tests/instr.prg b/harbour/tests/instr.prg deleted file mode 100644 index 21f6b711e2..0000000000 --- a/harbour/tests/instr.prg +++ /dev/null @@ -1,22 +0,0 @@ -// -// $Id$ -// - - -/* test of instring $ operator */ - -function main -qout( "test of instring $ operator ") -qout('"d" $ "bcde" ', "d" $ "bcde",.t.) -qout('"D" $ "BCDE" ', "D" $ "BCDE",.t.) - -qout('"a" $ "bcde" ', "a" $ "bcde",.f.) -qout('"d" $ "BCDE" ', "d" $ "BCDE",.f.) -qout('"D" $ "bcde" ', "D" $ "bcde",.f.) - -qout('"de" $ "bcde"', "de" $ "bcde",.t.) -qout('"bd" $ "bcde"', "bd" $ "bcde",.f.) -qout('"BD" $ "bcde"', "BD" $ "bcde",.f.) - -return nil - diff --git a/harbour/tests/operat.prg b/harbour/tests/operat.prg deleted file mode 100644 index 71ad75da79..0000000000 --- a/harbour/tests/operat.prg +++ /dev/null @@ -1,45 +0,0 @@ -// -// $Id$ -// - -// Testing Harbour operators management - -#define CRLF Chr( 13 ) + Chr( 10 ) - -function Main() - - local a := 1 - local b := 2 - local c := 3 - - QOut( "testing Harbour operators management" ) - - QQOut( "a = ", a, CRLF ) - QQOut( "b = ", b, CRLF ) - QQOut( "c = ", c, CRLF ) - - QQOut( "a + b = ", a + b, CRLF ) // 3 - QQOut( "b - a = ", b - a, CRLF ) // 1 - QQOut( "b * c = ", b * c, CRLF ) // 6 - QQOut( "b * c / 2 = ", b * c / 2, CRLF ) // 3 - - QQOut( "a += b = ", a += b, CRLF ) // 3 - QQOut( "a = ", a, CRLF ) // 3 - QQOut( "a -= b = ", a -= b, CRLF ) // 1 - QQOut( "a = ", a, CRLF ) // 1 - - QQOut( "a < b ", a < b, CRLF ) // TRUE - QQOut( "a > b ", a > b, CRLF ) // FALSE - QQOut( "a + b <= c ", a + b <= c, CRLF) // TRUE - QQOut( "a + b >= c ", a + b >= c, CRLF) // TRUE - - QQOut( "a *= b = ", a *= b, CRLF ) // 2 - QQOut( "a /= b = ", a /= b, CRLF ) // 1 - QQOut( "a = ", a, CRLF ) // 1 - - QQOut( "b ** 3 = ", b ** 3, CRLF ) // 8 - QQOut( "b ^ 3 = ", b ^ 3, CRLF ) // 8 - - QQOut( "8 % 3 = ", 8 % 3, CRLF ) // 2 - -return nil diff --git a/harbour/tests/rtl_test.prg b/harbour/tests/rtl_test.prg index 1aac4d4ef6..8ab4d88058 100644 --- a/harbour/tests/rtl_test.prg +++ b/harbour/tests/rtl_test.prg @@ -164,6 +164,7 @@ FUNCTION Main( cPar1, cPar2 ) RETURN NIL STATIC FUNCTION Main_HVM() + LOCAL nA, nB, nC /* NOTE: CA-Cl*pper PP fails on these TEST_LINE( "1" .AND. "2" , "E BASE 1066 Argument error conditional " ) @@ -192,6 +193,7 @@ STATIC FUNCTION Main_HVM() TEST_LINE( ValType( suNIL ) , "U" ) TEST_LINE( ValType( sbBlock ) , "B" ) TEST_LINE( ValType( saArray ) , "A" ) + TEST_LINE( ValType( { 1, 2, 3 } ) , "A" ) #ifdef __HARBOUR__ TEST_LINE( ValType( @scString ) , "C" ) /* Bug in CA-Cl*pper, it will return "U" */ TEST_LINE( ValType( @scStringE ) , "C" ) /* Bug in CA-Cl*pper, it will return "U" */ @@ -324,6 +326,14 @@ STATIC FUNCTION Main_HVM() TEST_LINE( "A" <= "Z" , .T. ) TEST_LINE( "Z" <= " " , .F. ) TEST_LINE( Chr(0) <= " " , .T. ) + TEST_LINE( "Hallo" <= "Hello" , .T. ) + TEST_LINE( "Hello" <= "Hello" , .T. ) + TEST_LINE( "Hell" <= "Hello" , .T. ) + TEST_LINE( "Hellow" <= "Hello" , .T. ) + TEST_LINE( "J" <= "Hello" , .F. ) + TEST_LINE( "" <= "Hello" , .T. ) + TEST_LINE( "J" <= "" , .T. ) + TEST_LINE( "" <= "" , .T. ) /* < */ @@ -348,6 +358,14 @@ STATIC FUNCTION Main_HVM() TEST_LINE( "A" < "Z" , .T. ) TEST_LINE( "Z" < "A" , .F. ) TEST_LINE( Chr(0) < " " , .T. ) + TEST_LINE( "Hallo" < "Hello" , .T. ) + TEST_LINE( "Hello" < "Hello" , .F. ) + TEST_LINE( "Hell" < "Hello" , .T. ) + TEST_LINE( "Hellow" < "Hello" , .F. ) + TEST_LINE( "J" < "Hello" , .F. ) + TEST_LINE( "" < "Hello" , .T. ) + TEST_LINE( "J" < "" , .F. ) + TEST_LINE( "" < "" , .F. ) /* >= */ @@ -372,6 +390,14 @@ STATIC FUNCTION Main_HVM() TEST_LINE( "A" >= "Z" , .F. ) TEST_LINE( "Z" >= "A" , .T. ) TEST_LINE( Chr(0) >= " " , .F. ) + TEST_LINE( "Hallo" >= "Hello" , .F. ) + TEST_LINE( "Hello" >= "Hello" , .T. ) + TEST_LINE( "Hell" >= "Hello" , .F. ) + TEST_LINE( "Hellow" >= "Hello" , .T. ) + TEST_LINE( "J" >= "Hello" , .T. ) + TEST_LINE( "" >= "Hello" , .F. ) + TEST_LINE( "J" >= "" , .T. ) + TEST_LINE( "" >= "" , .T. ) /* > */ @@ -396,6 +422,14 @@ STATIC FUNCTION Main_HVM() TEST_LINE( "A" > "Z" , .F. ) TEST_LINE( "Z" > "A" , .T. ) TEST_LINE( Chr(0) > " " , .F. ) + TEST_LINE( "Hallo" > "Hello" , .F. ) + TEST_LINE( "Hello" > "Hello" , .F. ) + TEST_LINE( "Hell" > "Hello" , .F. ) + TEST_LINE( "Hellow" > "Hello" , .F. ) + TEST_LINE( "J" > "Hello" , .T. ) + TEST_LINE( "" > "Hello" , .F. ) + TEST_LINE( "J" > "" , .F. ) + TEST_LINE( "" > "" , .F. ) /* =, == */ @@ -421,6 +455,14 @@ STATIC FUNCTION Main_HVM() TEST_LINE( "Z" == "A" , .F. ) TEST_LINE( "A" == "A " , .F. ) TEST_LINE( "AA" == "A" , .F. ) + TEST_LINE( "Hallo" == "Hello" , .F. ) + TEST_LINE( "Hello" == "Hello" , .T. ) + TEST_LINE( "Hell" == "Hello" , .F. ) + TEST_LINE( "Hellow" == "Hello" , .F. ) + TEST_LINE( "J" == "Hello" , .F. ) + TEST_LINE( "" == "Hello" , .F. ) + TEST_LINE( "J" == "" , .F. ) + TEST_LINE( "" == "" , .T. ) TEST_LINE( scString = scString , .T. ) TEST_LINE( scString = scStringE , .T. ) @@ -456,6 +498,14 @@ STATIC FUNCTION Main_HVM() TEST_LINE( "Z" != "A" , .T. ) TEST_LINE( "A" != "A " , .T. ) TEST_LINE( "AA" != "A" , .F. ) + TEST_LINE( "Hallo" != "Hello" , .T. ) + TEST_LINE( "Hello" != "Hello" , .F. ) + TEST_LINE( "Hell" != "Hello" , .T. ) + TEST_LINE( "Hellow" != "Hello" , .F. ) + TEST_LINE( "J" != "Hello" , .T. ) + TEST_LINE( "" != "Hello" , .T. ) + TEST_LINE( "J" != "" , .F. ) + TEST_LINE( "" != "" , .F. ) TEST_LINE( scString != scString , .F. ) TEST_LINE( scString != scStringE , .F. ) @@ -591,6 +641,50 @@ STATIC FUNCTION Main_HVM() TEST_LINE( 1 ^ NIL , "E BASE 1088 Argument error ^ F:S" ) TEST_LINE( 1 % NIL , "E BASE 1085 Argument error % F:S" ) + /* The order of these tests is relevant, don't change it */ + + nA := 1 + nB := 2 + nC := 3 + + TEST_LINE( nA , 1 ) + TEST_LINE( nB , 2 ) + TEST_LINE( nC , 3 ) + + TEST_LINE( nA + nB , 3 ) + TEST_LINE( nB - nA , 1 ) + TEST_LINE( nB * nC , 6 ) + TEST_LINE( nB * nC / 2 , 3 ) + TEST_LINE( nA += nB , 3 ) + TEST_LINE( nA , 3 ) + TEST_LINE( nA -= nB , 1 ) + TEST_LINE( nA , 1 ) + TEST_LINE( nA < nB , .T. ) + TEST_LINE( nA > nB , .F. ) + TEST_LINE( nA + nB <= nC , .T. ) + TEST_LINE( nA + nB >= nC , .T. ) + TEST_LINE( nA *= nB , 2 ) + TEST_LINE( nA /= nB , 1 ) + TEST_LINE( nA , 1 ) + TEST_LINE( nB ** 3 , 8 ) + TEST_LINE( nB ^ 3 , 8 ) + TEST_LINE( 8 % 3 , 2 ) + TEST_LINE( nA++ , 1 ) + TEST_LINE( nA , 2 ) + TEST_LINE( ++nA , 3 ) + TEST_LINE( nA , 3 ) + TEST_LINE( nA-- , 3 ) + TEST_LINE( nA , 2 ) + TEST_LINE( --nA , 1 ) + TEST_LINE( nA , 1 ) + + /* Operator precedence */ + + TEST_LINE( 1 + 2 * 3 / 4 - 2 ** 2 ^ 3 , -61.50 ) + TEST_LINE( 1 + 2 * 3 / 4 - 2 ** 2 ^ 3 == 2 , .F. ) + + /* */ + TEST_LINE( -Month(sdDate) , -1 ) TEST_LINE( Str(-(Month(sdDate))) , " -1" ) TEST_LINE( Str(-(Val("10"))) , " -10" ) @@ -607,6 +701,15 @@ STATIC FUNCTION Main_HVM() TEST_LINE( scString $ 1 , "E BASE 1109 Argument error $ F:S" ) TEST_LINE( 1 $ "AA" , "E BASE 1109 Argument error $ F:S" ) + TEST_LINE( "d" $ "bcde" , .T. ) + TEST_LINE( "D" $ "BCDE" , .T. ) + TEST_LINE( "a" $ "bcde" , .F. ) + TEST_LINE( "d" $ "BCDE" , .F. ) + TEST_LINE( "D" $ "bcde" , .F. ) + TEST_LINE( "de" $ "bcde" , .T. ) + TEST_LINE( "bd" $ "bcde" , .F. ) + TEST_LINE( "BD" $ "bcde" , .F. ) + IF TEST_OPT_Z() /* With the shortcut optimalization *ON* */ @@ -1679,6 +1782,9 @@ STATIC FUNCTION Long_STRINGS() #endif +/* NOTE: The order of the tests is relevant here, so don't + rearrange them. */ + STATIC FUNCTION Main_FILE() LOCAL cFileName := "$$FILEIO.TMP" LOCAL nFlags @@ -1744,10 +1850,10 @@ STATIC FUNCTION Main_FILE() TEST_LINE( TESTFIER( FClose() ) , 'E: 0 R: .F.' ) 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' ) + TEST_LINE( TESTFIER( FErase( "NOT_HERE.$$$" ) ) , 'E: 2 R: -1' ) TEST_LINE( TESTFIER( FErase( 1 ) ) , 'E: 3 R: -1' ) - TEST_LINE( TESTFIER( FErase( 'NOT_HERE.$$$' ) ) , 'E: 2 R: -1' ) - TEST_LINE( TESTFIER( FRename( 'NOT_HERE.$$$', 'A' ) ) , 'E: 2 R: -1' ) + TEST_LINE( TESTFIER( FErase( "NOT_HERE.$$$" ) ) , 'E: 2 R: -1' ) + TEST_LINE( TESTFIER( FRename( "NOT_HERE.$$$", 'A' ) ) , 'E: 2 R: -1' ) nFlags := FO_READWRITE fhnd := FOpen( cFileName, nFlags ) @@ -1805,12 +1911,13 @@ STATIC FUNCTION Main_FILE() TEST_LINE( TESTFIER( FClose() ) , 'E: 0 R: .F.' ) 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' ) + TEST_LINE( TESTFIER( FErase( "NOT_HERE.$$$" ) ) , 'E: 2 R: -1' ) TEST_LINE( TESTFIER( FErase( 1 ) ) , 'E: 3 R: -1' ) - TEST_LINE( TESTFIER( FErase( 'NOT_HERE.$$$' ) ) , 'E: 2 R: -1' ) - TEST_LINE( TESTFIER( FRename( 'NOT_HERE.$$$', 'A' ) ) , 'E: 2 R: -1' ) + TEST_LINE( TESTFIER( FErase( "NOT_HERE.$$$" ) ) , 'E: 2 R: -1' ) + TEST_LINE( TESTFIER( FRename( "NOT_HERE.$$$", 'A' ) ) , 'E: 2 R: -1' ) TEST_LINE( TESTFIER( File( cFileName ) ) , "E: 2 R: .T." ) + TEST_LINE( TESTFIER( File( "NOT_HERE.$$$" ) ) , "E: 2 R: .F." ) FErase("$$FILEIO.TMP") @@ -1820,6 +1927,20 @@ STATIC FUNCTION TESTFIER( xRetVal ) RETURN PadR( "E: " + LTrim( Str( FError() ) ), 9 ) + " R: " + XToStr( xRetVal ) STATIC FUNCTION Main_MISC() + LOCAL oError + + /* Some random error object tests taken from the separate test source */ + + oError := ErrorNew() + TEST_LINE( oError:ClassName() , "ERROR" ) + oError:Description = "Its description" + TEST_LINE( oError:Description , "Its description" ) +#ifdef __CLIPPER__ + TEST_LINE( Len( oError ) , 7 ) +#endif +#ifdef __HARBOUR__ + TEST_LINE( Len( oError ) , 14 ) +#endif /* "Samples" function tests (AMPM(), DAYS(), ELAPTIME(), ... ) */ @@ -2215,7 +2336,7 @@ STATIC FUNCTION Main_MISC() TEST_LINE( __CopyFile("$$COPYFR.TMP") , "E BASE 2010 Argument error __COPYFILE " ) TEST_LINE( __CopyFile("$$COPYFR.TMP", "$$COPYTO.TMP") , NIL ) - TEST_LINE( __CopyFile("_NOTHERE.$$$", "$$COPYTO.TMP") , "E BASE 2012 Open error _NOTHERE.$$$ F:DR" ) + TEST_LINE( __CopyFile("NOT_HERE.$$$", "$$COPYTO.TMP") , "E BASE 2012 Open error NOT_HERE.$$$ F:DR" ) TEST_LINE( __CopyFile("$$COPYFR.TMP", "*INVALID*.") , "E BASE 2012 Create error *INVALID*. F:DR" ) FErase("$$COPYFR.TMP") @@ -2749,6 +2870,8 @@ STATIC FUNCTION TEST_BEGIN( cParam ) SET CENTURY ON SET EXACT OFF + FErase( "NOT_HERE.$$$" ) + /* Feedback */ /* NOTE: The 0 parameter of Version() will force Harbour to include the diff --git a/harbour/tests/strcmp.prg b/harbour/tests/strcmp.prg deleted file mode 100644 index 0ba2c8a09f..0000000000 --- a/harbour/tests/strcmp.prg +++ /dev/null @@ -1,52 +0,0 @@ -// -// $Id$ -// - -// -// OurStrCmp() tests -// -// Date : 24/4/99 Time : 17:50 -// -// Written by Eddie Runia -// www - http://www.harbour-project.org -// -// Placed in the public domain -// - -procedure main() - - local CRLF := chr(13)+chr(10) - - QQOut( "Testing . ='Hello'", CRLF ) - - QQOut( ":", CRLF ) - - QQOut( " Hallo Hello Hell Hellow J 1'' 2'' all'' ", CRLF) - - QQOut( "==", "Hallo" == "Hello", " ", "Hello" == "Hello", " ", ; - "Hell" == "Hello", " ", "Hellow"== "Hello", " ", ; - "J" == "Hello", " ", "" == "Hello", " ", ; - "J" == "" , " ", "" == "" , CRLF ) - QQOut( "!=", "Hallo" != "Hello", " ", "Hello" != "Hello", " ", ; - "Hell" != "Hello", " ", "Hellow"!= "Hello", " ", ; - "J" != "Hello", " ", "" != "Hello", " ", ; - "J" != "" , " ", "" != "" , CRLF ) - QQOut( "> ", "Hallo" > "Hello", " ", "Hello" > "Hello", " ", ; - "Hell" > "Hello", " ", "Hellow"> "Hello", " ", ; - "J" > "Hello", " ", "" > "Hello", " ", ; - "J" > "" , " ", "" > "" , CRLF ) - QQOut( ">=", "Hallo" >= "Hello", " ", "Hello" >= "Hello", " ", ; - "Hell" >= "Hello", " ", "Hellow">= "Hello", " ", ; - "J" >= "Hello", " ", "" >= "Hello", " ", ; - "J" >= "" , " ", "" >= "" , CRLF ) - QQOut( "<=", "Hallo" <= "Hello", " ", "Hello" <= "Hello", " ", ; - "Hell" <= "Hello", " ", "Hellow"<= "Hello", " ", ; - "J" <= "Hello", " ", "" <= "Hello", " ", ; - "J" <= "" , " ", "" <= "" , CRLF ) - QQOut( "< ", "Hallo" < "Hello", " ", "Hello" < "Hello", " ", ; - "Hell" < "Hello", " ", "Hellow"< "Hello", " ", ; - "J" < "Hello", " ", "" < "Hello", " ", ; - "J" < "" , " ", "" < "" , CRLF ) -return - - diff --git a/harbour/tests/syserror.prg b/harbour/tests/syserror.prg deleted file mode 100644 index 0aa0dd7abb..0000000000 --- a/harbour/tests/syserror.prg +++ /dev/null @@ -1,18 +0,0 @@ -// -// $Id$ -// - -// Testing the Harbour related error system functions - -function Main() - - local oError := ErrorNew() - - QOut( oError:ClassName() ) // Be aware this will print ERROR - - oError:Description = "Its description" - - QOut( oError:Description ) - QOut( Len( oError ) ) - -return nil diff --git a/harbour/tests/tstcolor.prg b/harbour/tests/tstcolor.prg index 88c6e7cc22..893ebfb6b6 100644 --- a/harbour/tests/tstcolor.prg +++ b/harbour/tests/tstcolor.prg @@ -22,10 +22,28 @@ proc main Local cColor := "r+/bg*,rg*/ng+,w/n,b+/w,rg/b,w+/n*" -? "original set ", set(_SET_COLOR ) -? "should match ", setColor( cColor ) -? "input 1 ", cColor -? "return ", setColor("1/7,9/15") -? "input 2 ", "1/7,9/15" -? "return ", setColor() -? "final set ", set(_SET_COLOR ) + ? "original set ", set(_SET_COLOR ) + ? "should match ", setColor( cColor ) + ? "input 1 ", cColor + ? "return ", setColor("1/7,9/15") + ? "input 2 ", "1/7,9/15" + ? "return ", setColor() + ? "final set ", set(_SET_COLOR ) + + SetColor("BG/N, N/BG") + ? "Hello1" + ColorSelect( CLR_ENHANCED ) + ? "Hello2" + ColorSelect( CLR_STANDARD ) + ? "Hello3" + ColorSelect( CLR_ENHANCED ) + SetColor("GR/N, N/GR") + ? "Hello4" + ColorSelect( CLR_ENHANCED ) + ? "Hello5" + ColorSelect( CLR_STANDARD ) + ? "Hello6" + SetColor("B/N, N/B") + ? "Hello7" + + RETURN diff --git a/harbour/tests/val.prg b/harbour/tests/val.prg deleted file mode 100644 index 3162aab9e9..0000000000 --- a/harbour/tests/val.prg +++ /dev/null @@ -1,11 +0,0 @@ -// -// $Id$ -// - -// Testing ValType - -function Main() - - QOut( ValType( { 1, 2, 3 } ) ) - -return nil