initial checkin
authorClaus Gittinger <cg@exept.de>
Wed, 12 Aug 1998 13:44:18 +0200
changeset 0 cce7631f99b0
child 1 0ad7950613c8
initial checkin
RegressionTests__FileStreamTest.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RegressionTests__FileStreamTest.st	Wed Aug 12 13:44:18 1998 +0200
@@ -0,0 +1,135 @@
+"{ NameSpace: RegressionTests }"
+
+Object subclass:#FileStreamTest
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Stream Tests'
+!
+
+
+!FileStreamTest class methodsFor:'tests'!
+
+createTestFile
+    "create a test file (100k size)"
+
+    |f bytes|
+
+    f := 'testFile' asFilename writeStream binary.
+    bytes := ByteArray new:1024.
+    1 to:bytes size do:[:i |
+        bytes at:i put:(i \\ 256).
+    ].
+
+    100 timesRepeat:[
+        f nextPutAll:bytes.
+    ].
+
+    f close.
+
+    "
+     self createTestFile
+    "
+
+    "Created: / 12.8.1998 / 13:25:25 / cg"
+!
+
+readFileExpecting:expect
+    "read test file, expect n bytes"
+
+    |f buffer n nRead|
+
+    f := 'testFile' asFilename readStream binary.
+    buffer := ByteArray new:128.
+
+    n := 0.
+    [f atEnd] whileFalse:[
+        nRead := f nextBytes:128 into:buffer.
+        n := n + nRead.
+    ].
+    f close.
+    expect ~~ n ifTrue:[
+        self halt:('got <1p>; expected:<2p>' expandMacrosWith:n with:expect)
+    ].
+
+    "Created: / 12.8.1998 / 13:29:41 / cg"
+    "Modified: / 12.8.1998 / 13:36:40 / cg"
+!
+
+test1
+    "read a file - check count read with files size."
+
+    |sz|
+
+    self createTestFile.
+
+    sz := 'testFile' asFilename fileSize.
+
+    self readFileExpecting:sz.
+
+    "
+     self test1
+    "
+
+    "Modified: / 12.8.1998 / 13:29:55 / cg"
+!
+
+test2
+    "read a file - check count read with files size.
+     Do this in 20 threads"
+
+    |sz|
+
+    self createTestFile.
+
+    sz := 'testFile' asFilename fileSize.
+
+    20 timesRepeat:[
+        [self readFileExpecting:sz. 'done' printCR.] fork.
+    ].
+
+    "
+     self test2
+    "
+
+    "Modified: / 12.8.1998 / 13:30:55 / cg"
+!
+
+test3
+    "read a file - check count read with files size.
+     Do this and interrupt the reading thread heavily"
+
+    |sz p count nLoop|
+
+    nLoop := 1000.
+
+    self createTestFile.
+
+    sz := 'testFile' asFilename fileSize.
+
+    p := [
+        nLoop timesRepeat:[
+            self readFileExpecting:sz.
+        ].
+    ] forkAt:7.
+
+    count := 0.
+    [p isDead] whileFalse:[
+        Delay waitForMilliseconds:10.
+        p interruptWith:[count := count + 1].
+    ].
+    ('read file <1p> times; interrupted <2p> times' 
+        expandMacrosWith:nLoop with:count) printCR
+
+    "
+     self test3
+    "
+
+    "Modified: / 12.8.1998 / 13:42:13 / cg"
+! !
+
+!FileStreamTest class methodsFor:'documentation'!
+
+version
+    ^ '$Header$'
+! !