19991022-13:56 GMT+1

This commit is contained in:
Viktor Szakats
1999-10-22 12:16:07 +00:00
parent d6ca541f25
commit 27e3321d16
4 changed files with 149 additions and 180 deletions

View File

@@ -1,3 +1,10 @@
19991022-13:56 GMT+1 Victor Szel <info@szelvesz.hu>
* 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 <info@szelvesz.hu>
* source/rtl/filesys.c
tests/fileio.prg

View File

@@ -66,7 +66,6 @@ PRG_SOURCES=\
dynsym.prg \
exittest.prg \
fib.prg \
fileio.prg \
filexist.prg \
fornext.prg \
fortest.prg \

View File

@@ -1,179 +0,0 @@
//
// $Id$
//
// Written by Victor Szel <info@szelvesz.hu>
// 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 ""

View File

@@ -49,6 +49,7 @@
/* TODO: Tests with Log(0) type of invalid values */
#include "error.ch"
#include "fileio.ch"
#translate TEST_LINE( <x>, <result> ) => TEST_CALL( #<x>, {|| <x> }, <result> )
@@ -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(), ... ) */