diff options
Diffstat (limited to '404stream.mu')
-rw-r--r-- | 404stream.mu | 46 |
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?" +} |