summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--lib/bio/test/bio-skipto.myr26
-rw-r--r--lib/bio/test/bld.sub8
-rw-r--r--lib/bio/test/data/bio-skipto1
4 files changed, 36 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 48f2b28..76ac5a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,5 +31,6 @@ lib/regex/redump
# test outputs
*.log
**/test/*
+!**/test/data/*
!**/test/*.myr
!**/test/runtest.sh
diff --git a/lib/bio/test/bio-skipto.myr b/lib/bio/test/bio-skipto.myr
new file mode 100644
index 0000000..6a66d9c
--- /dev/null
+++ b/lib/bio/test/bio-skipto.myr
@@ -0,0 +1,26 @@
+use std
+use bio
+
+const main = {
+ var buf : byte[16]
+ var f
+
+ /* use the expected write data as read data */
+ f = std.try(bio.open("data/bio-skipto", bio.Rd))
+
+ /* read bar from foobar */
+ bio.skipto(f, "foo")
+ bio.read(f, buf[:3])
+ std.assert(std.eq(buf[:3], "bar"), "did not read bar afer foo")
+
+ /* we're past foobar, read to eof */
+ bio.skipto(f, "foo")
+ match bio.read(f, buf[:3])
+ | `std.Err `bio.Eof: /* ok */
+ | `std.Ok _: std.fatal("expected EOF")
+ | `std.Err e: std.fatal("expected EOF, got {}\n", e)
+ ;;
+
+ std.put("success: all reads matched\n")
+}
+
diff --git a/lib/bio/test/bld.sub b/lib/bio/test/bld.sub
index 0874277..66e44e6 100644
--- a/lib/bio/test/bld.sub
+++ b/lib/bio/test/bld.sub
@@ -56,3 +56,11 @@ bin write {test} =
lib @/lib/bio:bio
;;
+
+bin skipto {test} =
+ bio-skipto.myr
+ lib @/lib/std:std
+ lib @/lib/sys:sys
+ lib @/lib/bio:bio
+;;
+
diff --git a/lib/bio/test/data/bio-skipto b/lib/bio/test/data/bio-skipto
new file mode 100644
index 0000000..3ddc867
--- /dev/null
+++ b/lib/bio/test/data/bio-skipto
@@ -0,0 +1 @@
+asdffoobarbaz