From 27e3321d16070987f05496938e366168d71b2182 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 22 Oct 1999 12:16:07 +0000 Subject: [PATCH] 19991022-13:56 GMT+1 --- harbour/ChangeLog | 7 ++ harbour/tests/Makefile | 1 - harbour/tests/fileio.prg | 179 ------------------------------------- harbour/tests/rtl_test.prg | 142 +++++++++++++++++++++++++++++ 4 files changed, 149 insertions(+), 180 deletions(-) delete mode 100644 harbour/tests/fileio.prg diff --git a/harbour/ChangeLog b/harbour/ChangeLog index e193b4c032..48750fd7f3 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,10 @@ +19991022-13:56 GMT+1 Victor Szel + * tests/rtl_test.prg + - tests/fileio.prg + tests/Makefile + + Harbour level file API is now automatically tested in RTL_TEST. + - FILEIO.PRG removed. + 19991022-13:10 GMT+1 Victor Szel * source/rtl/filesys.c tests/fileio.prg diff --git a/harbour/tests/Makefile b/harbour/tests/Makefile index 211270aa23..35dc5103dd 100644 --- a/harbour/tests/Makefile +++ b/harbour/tests/Makefile @@ -66,7 +66,6 @@ PRG_SOURCES=\ dynsym.prg \ exittest.prg \ fib.prg \ - fileio.prg \ filexist.prg \ fornext.prg \ fortest.prg \ diff --git a/harbour/tests/fileio.prg b/harbour/tests/fileio.prg deleted file mode 100644 index 9576128599..0000000000 --- a/harbour/tests/fileio.prg +++ /dev/null @@ -1,179 +0,0 @@ -// -// $Id$ -// - -// Written by Victor Szel -// www - http://www.harbour-project.org -// -// Placed in the public domain - -#include "fileio.ch" - -FUNCTION Main() - LOCAL cFileName := "TEST.TXT" - LOCAL nFlags := FC_NORMAL - - LOCAL cBuffer - LOCAL fhnd - - OutSpec("FCreate( cFileName, nFlags )" , fhnd := FCreate( cFileName, nFlags ) ) - OutSpec("FWrite( fhnd, '>1234567890<' )" , FWrite( fhnd, ">1234567890<" ) ) - OutSpec("FWrite( fhnd, '(123.4567890)' )", FWrite( fhnd, "(123" + Chr(0) + "4567890)" ) ) - OutSpec("FSeek( fhnd )" , FSeek( fhnd ) ) - OutSpec("FSeek( fhnd, 5 )" , FSeek( fhnd, 5 ) ) - OutSpec("FSeek( fhnd, -1, FS_SET )" , FSeek( fhnd, -1, FS_SET ) ) - OutSpec("FSeek( fhnd, -10, FS_SET )" , FSeek( fhnd, -10, FS_SET ) ) - OutSpec("FSeek( fhnd, -100, FS_SET )" , FSeek( fhnd, -100, FS_SET ) ) - OutSpec("FWrite( fhnd, '!' )" , FWrite( fhnd, "!" ) ) - OutSpec("FSeek( fhnd, 1 )" , FSeek( fhnd, 1 ) ) - OutSpec("FWrite( fhnd, 'A' )" , FWrite( fhnd, "A" ) ) - OutSpec("FSeek( fhnd, 2, FS_SET )" , FSeek( fhnd, 2, FS_SET ) ) - OutSpec("FWrite( fhnd, 'B' )" , FWrite( fhnd, "B" ) ) - OutSpec("FSeek( fhnd, 3, FS_RELATIVE )" , FSeek( fhnd, 3, FS_RELATIVE ) ) - OutSpec("FWrite( fhnd, 'C' )" , FWrite( fhnd, "C" ) ) - OutSpec("FSeek( fhnd, -1, FS_RELATIVE )" , FSeek( fhnd, -1, FS_RELATIVE ) ) - OutSpec("FWrite( fhnd, 'D' )" , FWrite( fhnd, "D" ) ) - OutSpec("FSeek( fhnd, 3, FS_END )" , FSeek( fhnd, 3, FS_END ) ) - OutSpec("FWrite( fhnd, 'E' )" , FWrite( fhnd, "E" ) ) - OutSpec("FSeek( fhnd, -1, FS_END )" , FSeek( fhnd, -1, FS_END ) ) - OutSpec("FWrite( fhnd, 'F' )" , FWrite( fhnd, "F" ) ) - OutSpec("FSeek( fhnd, 0 )" , FSeek( fhnd, 0 ) ) - cBuffer := 1000 - OutStd("cBuffer := 1000" + Chr( 13 ) + Chr( 10 )) - OutSpec("FRead( fhnd, cBuffer )" , FRead( fhnd, cBuffer ) ) - OutSpec("FRead( fhnd, @cBuffer, 2 )" , FRead( fhnd, cBuffer, 2 ) ) - cBuffer := Space(4) - OutStd("cBuffer := Space(4)" + Chr( 13 ) + Chr( 10 )) - OutSpec("FRead( fhnd, cBuffer )" , FRead( fhnd, cBuffer ) ) - OutSpec("FRead( fhnd, cBuffer, 2 )" , FRead( fhnd, cBuffer, 2 ) ) -#ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY - OutSpec("FRead( fhnd, @cBuffer, len+1 )" , FRead( fhnd, @cBuffer, Len( cBuffer ) + 1 ) ) -#endif - OutSpec("FRead( fhnd, @cBuffer, 1000 )" , FRead( fhnd, @cBuffer, 1000 ) ) - OutSpec("FRead( fhnd, @cBuffer, 3 )" , FRead( fhnd, @cBuffer, 3 ) ) - cBuffer := Space(100) - OutStd("cBuffer := Space(100)" + Chr( 13 ) + Chr( 10 )) - OutSpec("FRead( fhnd, @cBuffer, 100 )" , FRead( fhnd, @cBuffer, 100 ) ) - OutSpec("FSeek( fhnd, 0 )" , FSeek( fhnd, 0 ) ) - OutSpec("FReadStr( fhnd, 4 )" , FReadStr( fhnd, 4 ) ) - OutSpec("FSeek( fhnd, 0 )" , FSeek( fhnd, 0 ) ) - OutSpec("FReadStr( fhnd, 100 )" , FReadStr( fhnd, 100 ) ) - OutSpec("FSeek( fhnd, 1, FS_RELATIVE )" , FSeek( fhnd, 1, FS_RELATIVE ) ) - OutSpec("FReadStr( fhnd, 2 )" , FReadStr( fhnd, 2 ) ) - OutSpec("FSeek( fhnd, -4, FS_END )" , FSeek( fhnd, -4, FS_END ) ) - OutSpec("FReadStr( fhnd, 1 )" , FReadStr( fhnd, 1 ) ) - OutSpec("FReadStr( fhnd, 20 )" , FReadStr( fhnd, 20 ) ) - OutSpec("FSeek( fhnd, 0, FS_END )" , FSeek( fhnd, 0, FS_END ) ) - OutSpec("FWrite( fhnd, '_-_-_-_-_-_-_' )", FWrite( fhnd, "_-_-_-_-_-_-_" ) ) - OutSpec("FSeek( fhnd, -4, FS_END )" , FSeek( fhnd, -4, FS_END ) ) - OutSpec("FReadStr( fhnd, 1 )" , FReadStr( fhnd, 1 ) ) - OutSpec("FReadStr( fhnd, 20 )" , FReadStr( fhnd, 20 ) ) - OutSpec("FSeek( fhnd, 3, FS_END )" , FSeek( fhnd, 3, FS_END ) ) - OutSpec("FWrite( fhnd, 'V' )" , FWrite( fhnd, "V" ) ) - OutSpec("FSeek( fhnd, -3, FS_END )" , FSeek( fhnd, -3, FS_END ) ) - OutSpec("FWrite( fhnd, 'W' )" , FWrite( fhnd, "W" ) ) - - OutSpec("FClose()" , FClose() ) - OutSpec("FClose( fhnd )" , FClose( fhnd ) ) - OutSpec("FClose( fhnd )" , FClose( fhnd ) ) - OutSpec("FErase( 'NOT_HERE.$$$' )" , FErase( 'NOT_HERE.$$$' ) ) - OutSpec("FErase( 1 )" , FErase( 1 ) ) - OutSpec("FErase( 'NOT_HERE.$$$' )" , FErase( 'NOT_HERE.$$$' ) ) - OutSpec("FRename( 'NOT_HERE.$$$', 'A' )" , FRename( 'NOT_HERE.$$$', 'A' ) ) - - nFlags := FO_READWRITE - - OutSpec("FOpen( cFileName, nFlags )" , fhnd := FOpen( cFileName, nFlags ) ) - OutSpec("FWrite( fhnd, '>1234567890<' )" , FWrite( fhnd, ">1234567890<" ) ) - OutSpec("FWrite( fhnd, '(123.4567890)' )", FWrite( fhnd, "(123" + Chr(0) + "4567890)" ) ) - OutSpec("FSeek( fhnd )" , FSeek( fhnd ) ) - OutSpec("FSeek( fhnd, 5 )" , FSeek( fhnd, 5 ) ) - OutSpec("FSeek( fhnd, -1, FS_SET )" , FSeek( fhnd, -1, FS_SET ) ) - OutSpec("FSeek( fhnd, -10, FS_SET )" , FSeek( fhnd, -10, FS_SET ) ) - OutSpec("FSeek( fhnd, -100, FS_SET )" , FSeek( fhnd, -100, FS_SET ) ) - OutSpec("FWrite( fhnd, '!' )" , FWrite( fhnd, "!" ) ) - OutSpec("FSeek( fhnd, 1 )" , FSeek( fhnd, 1 ) ) - OutSpec("FWrite( fhnd, 'A' )" , FWrite( fhnd, "A" ) ) - OutSpec("FSeek( fhnd, 2, FS_SET )" , FSeek( fhnd, 2, FS_SET ) ) - OutSpec("FWrite( fhnd, 'B' )" , FWrite( fhnd, "B" ) ) - OutSpec("FSeek( fhnd, 3, FS_RELATIVE )" , FSeek( fhnd, 3, FS_RELATIVE ) ) - OutSpec("FWrite( fhnd, 'C' )" , FWrite( fhnd, "C" ) ) - OutSpec("FSeek( fhnd, -1, FS_RELATIVE )" , FSeek( fhnd, -1, FS_RELATIVE ) ) - OutSpec("FWrite( fhnd, 'D' )" , FWrite( fhnd, "D" ) ) - OutSpec("FSeek( fhnd, 3, FS_END )" , FSeek( fhnd, 3, FS_END ) ) - OutSpec("FWrite( fhnd, 'E' )" , FWrite( fhnd, "E" ) ) - OutSpec("FSeek( fhnd, -1, FS_END )" , FSeek( fhnd, -1, FS_END ) ) - OutSpec("FWrite( fhnd, 'F' )" , FWrite( fhnd, "F" ) ) - OutSpec("FSeek( fhnd, 0 )" , FSeek( fhnd, 0 ) ) - cBuffer := 1000 - OutStd("cBuffer := 1000" + Chr( 13 ) + Chr( 10 )) - OutSpec("FRead( fhnd, cBuffer )" , FRead( fhnd, cBuffer ) ) - OutSpec("FRead( fhnd, @cBuffer, 2 )" , FRead( fhnd, cBuffer, 2 ) ) - cBuffer := Space(4) - OutStd("cBuffer := Space(4)" + Chr( 13 ) + Chr( 10 )) - OutSpec("FRead( fhnd, cBuffer )" , FRead( fhnd, cBuffer ) ) - OutSpec("FRead( fhnd, cBuffer, 2 )" , FRead( fhnd, cBuffer, 2 ) ) -#ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY - OutSpec("FRead( fhnd, @cBuffer, len+1 )" , FRead( fhnd, @cBuffer, Len( cBuffer ) + 1 ) ) -#endif - OutSpec("FRead( fhnd, @cBuffer, 1000 )" , FRead( fhnd, @cBuffer, 1000 ) ) - OutSpec("FRead( fhnd, @cBuffer, 3 )" , FRead( fhnd, @cBuffer, 3 ) ) - cBuffer := Space(100) - OutStd("cBuffer := Space(100)" + Chr( 13 ) + Chr( 10 )) - OutSpec("FRead( fhnd, @cBuffer, 100 )" , FRead( fhnd, @cBuffer, 100 ) ) - OutSpec("FSeek( fhnd, 0 )" , FSeek( fhnd, 0 ) ) - OutSpec("FReadStr( fhnd, 4 )" , FReadStr( fhnd, 4 ) ) - OutSpec("FSeek( fhnd, 0 )" , FSeek( fhnd, 0 ) ) - OutSpec("FReadStr( fhnd, 100 )" , FReadStr( fhnd, 100 ) ) - OutSpec("FSeek( fhnd, 1, FS_RELATIVE )" , FSeek( fhnd, 1, FS_RELATIVE ) ) - OutSpec("FReadStr( fhnd, 2 )" , FReadStr( fhnd, 2 ) ) - OutSpec("FSeek( fhnd, -4, FS_END )" , FSeek( fhnd, -4, FS_END ) ) - OutSpec("FReadStr( fhnd, 1 )" , FReadStr( fhnd, 1 ) ) - OutSpec("FReadStr( fhnd, 20 )" , FReadStr( fhnd, 20 ) ) - OutSpec("FSeek( fhnd, 0, FS_END )" , FSeek( fhnd, 0, FS_END ) ) - OutSpec("FWrite( fhnd, '_-_-_-_-_-_-_' )", FWrite( fhnd, "_-_-_-_-_-_-_" ) ) - OutSpec("FSeek( fhnd, -4, FS_END )" , FSeek( fhnd, -4, FS_END ) ) - OutSpec("FReadStr( fhnd, 1 )" , FReadStr( fhnd, 1 ) ) - OutSpec("FReadStr( fhnd, 20 )" , FReadStr( fhnd, 20 ) ) - OutSpec("FSeek( fhnd, 3, FS_END )" , FSeek( fhnd, 3, FS_END ) ) - OutSpec("FWrite( fhnd, 'V' )" , FWrite( fhnd, "V" ) ) - OutSpec("FSeek( fhnd, -3, FS_END )" , FSeek( fhnd, -3, FS_END ) ) - OutSpec("FWrite( fhnd, 'W' )" , FWrite( fhnd, "W" ) ) - - OutSpec("FClose()" , FClose() ) - OutSpec("FClose( fhnd )" , FClose( fhnd ) ) - OutSpec("FClose( fhnd )" , FClose( fhnd ) ) - OutSpec("FErase( 'NOT_HERE.$$$' )" , FErase( 'NOT_HERE.$$$' ) ) - OutSpec("FErase( 1 )" , FErase( 1 ) ) - OutSpec("FErase( 'NOT_HERE.$$$' )" , FErase( 'NOT_HERE.$$$' ) ) - OutSpec("FRename( 'NOT_HERE.$$$', 'A' )" , FRename( 'NOT_HERE.$$$', 'A' ) ) - - OutSpec("File( cFileName )" , File( cFileName ) ) - - RETURN NIL - -STATIC FUNCTION OutSpec( cWhat, xRetVal ) - - OutStd( PadR( cWhat, 35 ) +; - PadR( " e: " + LTrim( Str( FError() ) ), 9 ) +; - PadR( " ret: " + XToStr( xRetVal ), 35 ) ) - OutStd( Chr(13) + Chr(10) ) - - RETURN NIL - -STATIC FUNCTION XToStr( xValue ) - LOCAL cType := ValType( xValue ) - - DO CASE - CASE cType == "C" ; RETURN "$" + xValue + "$" - CASE cType == "N" ; RETURN LTrim( Str( xValue ) ) - CASE cType == "D" ; RETURN DToC( xValue ) - CASE cType == "L" ; RETURN iif( xValue, ".T.", ".F." ) - CASE cType == "O" ; RETURN xValue:className + " Object" - CASE cType == "U" ; RETURN "NIL" - CASE cType == "B" ; RETURN "{||...}" - CASE cType == "A" ; RETURN "{...}" - CASE cType == "M" ; RETURN xValue - ENDCASE - - RETURN "" diff --git a/harbour/tests/rtl_test.prg b/harbour/tests/rtl_test.prg index 69e3fcc108..1aac4d4ef6 100644 --- a/harbour/tests/rtl_test.prg +++ b/harbour/tests/rtl_test.prg @@ -49,6 +49,7 @@ /* TODO: Tests with Log(0) type of invalid values */ #include "error.ch" +#include "fileio.ch" #translate TEST_LINE( , ) => TEST_CALL( #, {|| }, ) @@ -149,6 +150,7 @@ FUNCTION Main( cPar1, cPar2 ) New_STRINGS() Long_STRINGS() #endif + Main_FILE() Main_MISC() #ifdef __HARBOUR__ Main_OPOVERL() @@ -1677,6 +1679,146 @@ STATIC FUNCTION Long_STRINGS() #endif +STATIC FUNCTION Main_FILE() + LOCAL cFileName := "$$FILEIO.TMP" + LOCAL nFlags + + LOCAL cBuff4 := Space( 4 ) + LOCAL cBuff100 := Space( 100 ) + + LOCAL fhnd + + nFlags := FC_NORMAL + fhnd := FCreate( cFileName, nFlags ) + + 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" ) + TEST_LINE( TESTFIER( FSeek( fhnd ) ) , "E: 0 R: 0" ) + 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" ) + TEST_LINE( TESTFIER( FSeek( fhnd, -100, FS_SET ) ) , "E: 25 R: 5" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "!" ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FSeek( fhnd, 1 ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "A" ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FSeek( fhnd, 2, FS_SET ) ) , "E: 0 R: 2" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "B" ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FSeek( fhnd, 3, FS_RELATIVE ) ) , "E: 0 R: 6" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "C" ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FSeek( fhnd, -1, FS_RELATIVE ) ) , "E: 0 R: 6" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "D" ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FSeek( fhnd, 3, FS_END ) ) , "E: 0 R: 28" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "E" ) ) , "E: 0 R: 1" ) + 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" ) + TEST_LINE( TESTFIER( FRead( fhnd, mnLongP ) ) , "E: 0 R: 0" ) + TEST_LINE( TESTFIER( FRead( fhnd, @mnLongP, 2 ) ) , "E: 0 R: 0" ) + TEST_LINE( TESTFIER( FRead( fhnd, cBuff4 ) ) , "E: 0 R: 0" ) + 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" ) +#endif + TEST_LINE( TESTFIER( FRead( fhnd, @cBuff4, 1000 ) ) , 'E: 0 R: 0' ) + TEST_LINE( TESTFIER( FRead( fhnd, @cBuff4, 3 ) ) , 'E: 0 R: 3' ) + TEST_LINE( TESTFIER( FRead( fhnd, @cBuff100, 100 ) ) , 'E: 0 R: 26' ) + TEST_LINE( TESTFIER( FSeek( fhnd, 0 ) ) , 'E: 0 R: 0' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 4 ) ) , 'E: 0 R: ">AB3"' ) + TEST_LINE( TESTFIER( FSeek( fhnd, 0 ) ) , 'E: 0 R: 0' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 100 ) ) , 'E: 0 R: ">AB34!D7890<(123"' ) + TEST_LINE( TESTFIER( FSeek( fhnd, 1, FS_RELATIVE ) ) , 'E: 0 R: 30' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 2 ) ) , 'E: 0 R: ""' ) + TEST_LINE( TESTFIER( FSeek( fhnd, -4, FS_END ) ) , 'E: 0 R: 25' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 1 ) ) , 'E: 0 R: ""' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 20 ) ) , 'E: 0 R: ""' ) + TEST_LINE( TESTFIER( FSeek( fhnd, 0, FS_END ) ) , 'E: 0 R: 29' ) + TEST_LINE( TESTFIER( FWrite( fhnd, "_-_-_-_-_-_-_" ) ) , 'E: 0 R: 13' ) + TEST_LINE( TESTFIER( FSeek( fhnd, -4, FS_END ) ) , 'E: 0 R: 38' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 1 ) ) , 'E: 0 R: "-"' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 20 ) ) , 'E: 0 R: "_-_"' ) + TEST_LINE( TESTFIER( FSeek( fhnd, 3, FS_END ) ) , 'E: 0 R: 45' ) + 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' ) + 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( 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' ) + + nFlags := FO_READWRITE + fhnd := FOpen( cFileName, nFlags ) + + 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" ) + TEST_LINE( TESTFIER( FSeek( fhnd ) ) , "E: 0 R: 0" ) + 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" ) + TEST_LINE( TESTFIER( FSeek( fhnd, -100, FS_SET ) ) , "E: 25 R: 5" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "!" ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FSeek( fhnd, 1 ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "A" ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FSeek( fhnd, 2, FS_SET ) ) , "E: 0 R: 2" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "B" ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FSeek( fhnd, 3, FS_RELATIVE ) ) , "E: 0 R: 6" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "C" ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FSeek( fhnd, -1, FS_RELATIVE ) ) , "E: 0 R: 6" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "D" ) ) , "E: 0 R: 1" ) + TEST_LINE( TESTFIER( FSeek( fhnd, 3, FS_END ) ) , "E: 0 R: 49" ) + TEST_LINE( TESTFIER( FWrite( fhnd, "E" ) ) , "E: 0 R: 1" ) + 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" ) + TEST_LINE( TESTFIER( FRead( fhnd, mnLongP ) ) , "E: 0 R: 0" ) + TEST_LINE( TESTFIER( FRead( fhnd, @mnLongP, 2 ) ) , "E: 0 R: 0" ) + TEST_LINE( TESTFIER( FRead( fhnd, cBuff4 ) ) , "E: 0 R: 0" ) + 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" ) +#endif + TEST_LINE( TESTFIER( FRead( fhnd, @cBuff4, 1000 ) ) , 'E: 0 R: 0' ) + TEST_LINE( TESTFIER( FRead( fhnd, @cBuff4, 3 ) ) , 'E: 0 R: 3' ) + TEST_LINE( TESTFIER( FRead( fhnd, @cBuff100, 100 ) ) , 'E: 0 R: 47' ) + TEST_LINE( TESTFIER( FSeek( fhnd, 0 ) ) , 'E: 0 R: 0' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 4 ) ) , 'E: 0 R: ">AB3"' ) + TEST_LINE( TESTFIER( FSeek( fhnd, 0 ) ) , 'E: 0 R: 0' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 100 ) ) , 'E: 0 R: ">AB34!D7890<(123"' ) + TEST_LINE( TESTFIER( FSeek( fhnd, 1, FS_RELATIVE ) ) , 'E: 0 R: 51' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 2 ) ) , 'E: 0 R: ""' ) + TEST_LINE( TESTFIER( FSeek( fhnd, -4, FS_END ) ) , 'E: 0 R: 46' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 1 ) ) , 'E: 0 R: ""' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 20 ) ) , 'E: 0 R: ""' ) + TEST_LINE( TESTFIER( FSeek( fhnd, 0, FS_END ) ) , 'E: 0 R: 50' ) + TEST_LINE( TESTFIER( FWrite( fhnd, "_-_-_-_-_-_-_" ) ) , 'E: 0 R: 13' ) + TEST_LINE( TESTFIER( FSeek( fhnd, -4, FS_END ) ) , 'E: 0 R: 59' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 1 ) ) , 'E: 0 R: "-"' ) + TEST_LINE( TESTFIER( FReadStr( fhnd, 20 ) ) , 'E: 0 R: "_-_"' ) + TEST_LINE( TESTFIER( FSeek( fhnd, 3, FS_END ) ) , 'E: 0 R: 66' ) + TEST_LINE( TESTFIER( FWrite( fhnd, "V" ) ) , 'E: 0 R: 1' ) + TEST_LINE( TESTFIER( FSeek( fhnd, -3, FS_END ) ) , 'E: 0 R: 64' ) + TEST_LINE( TESTFIER( FWrite( fhnd, "W" ) ) , 'E: 0 R: 1' ) + 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( 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( File( cFileName ) ) , "E: 2 R: .T." ) + + FErase("$$FILEIO.TMP") + + RETURN NIL + +STATIC FUNCTION TESTFIER( xRetVal ) + RETURN PadR( "E: " + LTrim( Str( FError() ) ), 9 ) + " R: " + XToStr( xRetVal ) + STATIC FUNCTION Main_MISC() /* "Samples" function tests (AMPM(), DAYS(), ELAPTIME(), ... ) */