diff --git a/repl/lib_fileio.c b/repl/lib_fileio.c index 8cfcfc4..f207fe1 100644 --- a/repl/lib_fileio.c +++ b/repl/lib_fileio.c @@ -232,8 +232,8 @@ static int nativeRead(Toy_Interpreter* interpreter, Toy_LiteralArray* arguments) case TOY_LITERAL_STRING: { char value[TOY_MAX_STRING_LENGTH] = {0}; - fread(value, sizeof(char), sizeof(value) - 1, file->fp); - value[TOY_MAX_STRING_LENGTH] = '\0'; + fread(value, sizeof(char), TOY_MAX_STRING_LENGTH - 1, file->fp); + value[TOY_MAX_STRING_LENGTH - 1] = '\0'; resultLiteral = TOY_TO_STRING_LITERAL(Toy_createRefString(value)); diff --git a/test/scripts/lib/file/inputs.txt b/test/scripts/lib/file/inputs.txt new file mode 100644 index 0000000..e8dba50 --- /dev/null +++ b/test/scripts/lib/file/inputs.txt @@ -0,0 +1,3 @@ +8 +12.5 +test diff --git a/test/scripts/lib/file/outputs.txt b/test/scripts/lib/file/outputs.txt new file mode 100644 index 0000000..8b2a4c9 --- /dev/null +++ b/test/scripts/lib/file/outputs.txt @@ -0,0 +1,2 @@ +8 +12.500000 \ No newline at end of file diff --git a/test/scripts/lib/fileio.toy b/test/scripts/lib/fileio.toy index 33ed34c..925f1e5 100644 --- a/test/scripts/lib/fileio.toy +++ b/test/scripts/lib/fileio.toy @@ -19,25 +19,27 @@ fn reset() { // test read { - // // enter test - // assert input.read(string) == "test\n", "read string failed"; + var reader = open("scripts:/lib/file/inputs.txt", "r"); - // // enter 8 - // assert input.read(int) == 8, "read int failed"; + 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"; - // // enter 12.5 - // assert input.read(float) == 12.5, "read float failed"; + // invaild types + assert input.read(type) == null, "read type failed"; + assert input.read(any) == null, "read any failed"; - // // invaild types - // assert input.read(type) == null, "read type failed"; - // assert input.read(any) == null, "read any failed"; + reader.close(); } // test write { - assert output.write(8) == true, "write int failed"; - assert output.write("\n") == true, "write string failed"; - assert output.write(12.5) == true, "write float failed"; + 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(); }