about summary refs log tree commit diff stats
path: root/404stream.mu
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-08-02 17:45:46 -0700
committerKartik Agaram <vc@akkartik.com>2020-08-02 17:45:46 -0700
commit9ee9f37dc78430ca32e00d4d4223b178150c5fee (patch)
tree9ddf6f3b4dbfc0339baef1a25ac08c7aad58effb /404stream.mu
parentecc31a492825cd2e6ac5d64ee0a9cd22d248e83c (diff)
downloadmu-9ee9f37dc78430ca32e00d4d4223b178150c5fee.tar.gz
6708
Diffstat (limited to '404stream.mu')
-rw-r--r--404stream.mu46
1 files changed, 46 insertions, 0 deletions
diff --git a/404stream.mu b/404stream.mu
new file mode 100644
index 00000000..bf4ae883
--- /dev/null
+++ b/404stream.mu
@@ -0,0 +1,46 @@
+# Tests for Mu's stream primitives.
+
+fn test-stream {
+  # - write an int to a stream, then read it back
+  # step 1: initialize
+  var s: (stream int 4)
+  var s2/ecx: (addr stream int 4) <- address s
+  var tmp/eax: boolean <- stream-empty? s2
+  check-true tmp, "F - test-stream/empty?/0"
+  tmp <- stream-full? s2
+  check-false tmp, "F - test-stream/full?/0"
+  # step 2: write to stream
+  var x: int
+  copy-to x, 0x34
+  var x2/edx: (addr int) <- address x
+  write-to-stream s2, x2
+  tmp <- stream-empty? s2
+  check-false tmp, "F - test-stream/empty?/1"
+  tmp <- stream-full? s2
+  check-false tmp, "F - test-stream/full?/1"
+  # step 3: modify the value written (should make no difference)
+  copy-to x, 0
+  # step 4: read back
+  var y: int
+  var y2/ebx: (addr int) <- address y
+  read-from-stream s2, y2
+  tmp <- stream-empty? s2
+  check-true tmp, "F - test-stream/empty?/2"
+  tmp <- stream-full? s2
+  check-false tmp, "F - test-stream/full?/2"
+  # we read back what was written
+  check-ints-equal y, 0x34, "F - test-stream"
+}
+
+fn test-stream-full {
+  # write an int to a stream of capacity 1
+  var s: (stream int 1)
+  var s2/ecx: (addr stream int 1) <- address s
+  var tmp/eax: boolean <- stream-full? s2
+  check-false tmp, "F - test-stream-full?/pre"
+  var x: int
+  var x2/edx: (addr int) <- address x
+  write-to-stream s2, x2
+  tmp <- stream-full? s2
+  check-true tmp, "F - test-stream-full?"
+}