import fileio; var PATH: string const = "scripts:/lib/file/fileio.txt"; // reset file to orginal state fn reset() { var writer = open(PATH, "w"); writer.write("Hello, World!\n"); writer.close(); } // test global constants { assert MAX_FILENAME_SIZE > 0, "MAX_FILENAME_SIZE failed"; assert MAX_FILES_OPEN > 0, "MAX_FILES_OPEN failed"; assert END_OF_FILE == -1, "END_OF_FILE failed"; } // test read { var reader = open("scripts:/lib/file/inputs.txt", "r"); assert reader.read(int) == 8, "read int failed"; assert reader.read(float) == 12.5, "read float failed"; assert reader.read(string) == "\ntest\n", "read string failed"; // invaild types assert input.read(type) == null, "read type failed"; assert input.read(any) == null, "read any failed"; reader.close(); } // test write { var writer = open("scripts:/lib/file/outputs.txt", "w"); assert writer.write(8) == true, "write int failed"; assert writer.write("\n") == true, "write string failed"; assert writer.write(12.5) == true, "write float failed"; writer.close(); } // test open and close { var reader = open(PATH, "r"); assert reader != null, "open failed in reading mode"; assert reader.close() == true, "close failed"; var file = open("scripts:/doesNotExist", "r"); assert file == null, "open failed on nonexisting file"; } // test write { var writer = open(PATH, "w"); assert writer != null, "open failed in writing mode"; assert writer.read(string) != null, "read in writing mode failed"; assert writer.write("writen text") == true, "write in writing mode failed"; writer.close(); reset(); } // test append { var appender = open(PATH, "a"); assert appender != null, "open failed on appending file"; assert appender.write("appended text") == true, "append failed"; appender.close(); reset(); } // test read extended { var reader = open(PATH, "r+"); assert reader != null, "open failed on read extended mode"; assert reader.write("writen text") == true, "write in read extended failed"; assert reader.read(string) == "d!\n", "read in read extended failed"; reader.close(); reset(); } // test write extended { var writer = open(PATH, "w+"); assert writer != null, "open failed on write extended mode"; assert writer.write("writen text") == true, "write in write extended failed"; writer.seek("bgn", 0); assert writer.read(string) == "writen text", "read in write extended failed"; writer.close(); reset(); } // test rename { var reader = open(PATH, "r"); assert reader.rename("scripts:/lib/file/newName.txt") == true, "rename failed"; reader.rename(PATH); reader.close(); } // test seek { var reader = open(PATH, "r"); assert reader.seek("bgn", 6) == true, "seek operation failed"; var contents = reader.read(string); assert contents == " World!\n", "seek failed to move file position"; reader.close(); } // test accessors { var reader = open(PATH, "r"); assert reader.error() == false, "error failed"; assert reader.completed() == false, "completed failed"; assert reader.position() == 0, "position failed"; assert reader.size() == 14, "size failed"; assert reader.mode() == "r", "mode failed"; reader.read(string); assert reader.error() == false, "error failed"; assert reader.completed() == true, "completed after read failed"; assert reader.position() == 14, "position failed"; assert reader.size() == 14, "size failed"; assert reader.mode() == "r", "mode failed"; reader.close(); } print "All good";