RegressionTests__FileStreamTest.st
changeset 76 90adfa44fa2c
parent 75 1a7d48169a36
child 118 2618cf1cd493
--- a/RegressionTests__FileStreamTest.st	Thu Sep 21 11:17:56 2000 +0200
+++ b/RegressionTests__FileStreamTest.st	Wed Sep 27 09:51:29 2000 +0200
@@ -388,6 +388,100 @@
     "
      self testRewrite2
     "
+!
+
+testWrite1
+    "basic writing"
+
+    self testWrite:1024.
+    self testWrite:2048.
+    self testWrite:4096.
+    self testWrite:8192.
+    self testWrite:8192*2.
+    self testWrite:8192*4.
+    self testWrite:8192*8.
+    self testWrite:8192*16.
+    self testWrite:8192*32.
+    self testWrite:8192*64.
+    self testWrite:8192*128.
+
+    "
+     self testWrite1
+    "
+!
+
+testWrite2
+    "basic writing"
+
+    10 timesRepeat:[
+        self testWrite1.
+    ].
+
+    "
+     self testWrite2
+    "
+!
+
+testWrite3
+    "basic writing"
+
+    |interruptor|
+
+    interruptor := [
+        [true] whileTrue:[
+            Delay waitForMilliseconds:10.
+        ].
+    ] forkAt:9.
+
+    [
+        50 timesRepeat:[
+            self testWrite1.
+        ].
+    ] valueNowOrOnUnwindDo:[
+        interruptor terminate
+    ].
+
+    "
+     self testWrite3
+    "
+!
+
+testWrite:size
+    "basic writing"
+
+    |file s sz buffer byte|
+
+    buffer := ByteArray new:size.
+    1 to:buffer size do:[:idx |
+        buffer at:idx put:(idx \\ 256)
+    ].
+
+    file := Filename newTemporary.
+    s := file writeStream.
+
+    s binary.
+    s nextPutAll:buffer.
+    s close.
+
+    sz := file fileSize.
+    sz ~= size ifTrue:[self error:'size mismatch'].
+
+    s := file readStream.
+    s binary.
+    1 to:size do:[:idx |
+        byte := s next.
+        byte ~~ (idx \\ 256) ifTrue:[self error:'read data mismatch'].
+    ].
+    s close.
+
+    (file binaryContentsOfEntireFile ~= buffer) ifTrue:[
+        self error:'read data mismatch2'
+    ].
+    file delete.
+
+    "
+     self testWrite:1024
+    "
 ! !
 
 !FileStreamTest class methodsFor:'documentation'!