program Hoi;

{
  Description: Test file to test the consistency of
               the following Functions:

               AppPath, DirectoryExists, FileExists, ExeExt,
               DirectorySeperator, OpenFile, CreateFile, RewriteFile,
               WriteFileString, ReadFileString, SetFileCharPointer,
               FileSize, EndOfFile, FileContents.

  Notes:
               Needs: GetFiles.

	       Bugs:
			Using ./test as TestPath crashes on Linux.
  Usage:
               Run it. Set the TestPath to a different directory if you are on Windows. :)
}

Const

    fsFromBeginning = 0; // offset must be pos or 0
    fsFromCurrent = 1; // offset pos or neg
    fsFromEnd = 2; // offset only neg or 0

var
  s, s2: string;
  testPath : string;
  myFile, myFile2: Integer;

begin
  testPath := scriptpath +'Test';
  s := ScriptPath;
  Writeln('Our current path is: ' + s);
 { If DirectoryExists(s) Then
    writeln('Directory ' + s + ' exists.');    }

 { If FileExists(s + DirectorySeperator + 'Cogat' + ExeExt) Then
    writeln('We exist!');       }

  myFile := CreateFile(TestPath);
  WriteFileString(myFile, 'wat');
  WriteFileString(myFile, 'watnumber2');
  CloseFile(myFile);

  myFile := OpenFile(TestPath, False);
  ReadFileString(myFile, s2, 2);
  writeln('s2: ' + s2);
  CloseFile(myFile);

  myFile := CreateFile(TestPath + '2');
  WriteFileString(myFile, 'wat222');

  CloseFile(myFile);

  // TestPath now contains; 'watwatnumber2'. We will make it write 'number',
  // and then 2.
  myFile := OpenFile(TestPath, False);
  SetFileCharPointer(myFile, 6, fsFromBeginning);
  ReadFileString(myFile, s2, 6);
  writeln('s2: ' + s2);
  s2 := '';

  SetFileCharPointer(myFile, -1, fsFromEnd);
  ReadFileString(myFile, s2, 1);
  writeln('s2: ' + s2);
  CloseFile(myFile);

  // myFile2 should be -1.
  myFile := RewriteFile(TestPath, False);
  myFile2 := RewriteFile(TestPath, False);
  writeln(inttostr(myFile) + ' : ' + inttostr(myFile2));

  // myFile2 should be -1.
  myFile2 := OpenFile(TestPath, False);
  writeln(inttostr(myFile) + ' : ' + inttostr(myFile2));

  // Now, we will test EndOfFile, and FileSize.

  While Not EndOfFile(myFile) Do
  Begin
    ReadFileString(myFile, s2, 1);
    Writeln(s2);
  End;

  CloseFile(myFile);

  //Writeln(FileContents(TestPath));
  writeln('wat');
end.
