summary refs log tree commit diff stats
path: root/tests/async/tasyncfile.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/async/tasyncfile.nim')
-rw-r--r--tests/async/tasyncfile.nim61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/async/tasyncfile.nim b/tests/async/tasyncfile.nim
new file mode 100644
index 000000000..d95850c31
--- /dev/null
+++ b/tests/async/tasyncfile.nim
@@ -0,0 +1,61 @@
+discard """
+output: '''
+13
+hello humans!
+13
+'''
+"""
+import asyncfile, asyncdispatch, os
+
+proc main() {.async.} =
+  let fn = getTempDir() / "foobar.txt"
+  removeFile(fn)
+
+  # Simple write/read test.
+  block:
+    var file = openAsync(fn, fmReadWrite)
+    await file.write("testing")
+    file.setFilePos(0)
+    await file.write("foo")
+    file.setFileSize(4)
+    file.setFilePos(0)
+    let data = await file.readAll()
+    doAssert data == "foot"
+    file.close()
+
+  # Append test
+  block:
+    var file = openAsync(fn, fmAppend)
+    await file.write("\ntest2")
+    let errorTest = file.readAll()
+    yield errorTest
+    doAssert errorTest.failed
+    file.close()
+    file = openAsync(fn, fmRead)
+    let data = await file.readAll()
+
+    doAssert data == "foot\ntest2"
+    file.close()
+
+  # Issue #5531
+  block:
+    removeFile(fn)
+    var file = openAsync(fn, fmWrite)
+    await file.write("test2")
+    file.close()
+    file = openAsync(fn, fmWrite)
+    await file.write("t3")
+    file.close()
+    file = openAsync(fn, fmRead)
+    let data = await file.readAll()
+    doAssert data == "t3"
+    file.close()
+
+  # Issue #7347
+  block:
+    var file = openAsync( parentDir(currentSourcePath) / "hello.txt")
+    echo file.getFileSize()
+    echo await file.readAll()
+    echo file.getFilePos()
+
+waitFor main()