initial checkin
authorStefan Vogel <sv@exept.de>
Thu, 13 Dec 2001 20:01:57 +0100
changeset 131 0977c63d056b
parent 130 93a0b6e77c51
child 132 d0cf1c1a5733
initial checkin
ReadStreamTest.st
ReadWriteStreamTest.st
WriteStreamTest.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ReadStreamTest.st	Thu Dec 13 20:01:57 2001 +0100
@@ -0,0 +1,199 @@
+"{ Package: 'exept:regression' }"
+
+"{ NameSpace: RegressionTests }"
+
+TestCase subclass:#ReadStreamTest
+	instanceVariableNames:'startPosition streamClass'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Tests-Regression'
+!
+
+!ReadStreamTest class methodsFor:'documentation'!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Stefan Vogel (stefan@zwerg)
+
+    [see also:]
+
+    [instance variables:]
+
+    [class variables:]
+"
+!
+
+history
+    "Created: / 13.12.2001 / 17:13:17 / stefan"
+! !
+
+!ReadStreamTest methodsFor:'accessing'!
+
+streamClass
+    ^ streamClass
+! !
+
+!ReadStreamTest methodsFor:'helpers'!
+
+checkPositionFor:testCollection 
+    "check for correct common behavior of Stream reading"
+
+    |stream|
+
+    stream := self streamClass on:testCollection.
+    self assert:(stream size == testCollection size).
+    testCollection size to:1 by:-1 do:[:pos | 
+        stream position:(pos + startPosition - 1).
+        self assert:(stream atEnd not).
+        self assert:(stream peek == (testCollection at:pos)).
+        self assert:(stream position == (pos + startPosition - 1)).
+        self assert:(stream next == (testCollection at:pos)).
+        self assert:(stream position == (pos + startPosition))
+    ]
+!
+
+checkReadStreamFor:testCollection 
+    "check for correct common behavior of Stream reading"
+
+    |stream|
+
+    stream := self streamClass on:testCollection.
+    stream reset. "for ReadWriteStreams"
+    self assert:(stream size == testCollection size).
+    self assert:(stream isEmpty not).
+    testCollection 
+        keysAndValuesDo:[:pos :element | 
+            self assert:(stream atEnd not).
+            self assert:(stream peek == element).
+            self assert:(stream position == (pos + startPosition - 1)).
+            self assert:(stream next == element).
+            self assert:(stream position == (pos + startPosition))
+        ].
+    self assert:(stream atEnd).
+    self assert:(stream peek isNil).
+    self assert:(stream next isNil).
+    streamClass endOfStreamSignal 
+        handle:[:ex | ex return]
+        do:[
+            self should:(stream next) raise:streamClass endOfStreamSignal.
+            self should:(stream peek) raise:streamClass endOfStreamSignal.
+            self shouldnt:(stream peekOrNil) raise:streamClass endOfStreamSignal
+        ]
+! !
+
+!ReadStreamTest methodsFor:'setup'!
+
+setUp
+    self streamClass:ReadStream
+!
+
+streamClass:aClass 
+    streamClass := aClass.
+    startPosition := streamClass zeroPosition
+! !
+
+!ReadStreamTest methodsFor:'tests'!
+
+testBasic
+    |stream|
+
+    stream := self streamClass on:''.
+    self assert:(stream isReadable).
+    self assert:(stream isPositionable).
+    self assert:(stream isWritable not).
+    self assert:(stream size == 0).
+    self assert:(stream isEmpty)
+!
+
+testPosition
+
+   self checkPositionFor:'12345'.
+   self checkPositionFor:'12345'asByteArray.
+   self checkPositionFor:#[1 2 3 4 5].
+   self checkPositionFor:#(1 2 3 4 5).
+   self checkPositionFor:#(1 2 3 4 5) asOrderedCollection.
+
+
+   "
+    (self selector:#testPosition) runCase
+   "
+!
+
+testReadStream
+
+   self checkReadStreamFor:'12345'.
+   self checkReadStreamFor:'12345'asByteArray.
+   self checkReadStreamFor:#[1 2 3 4 5].
+   self checkReadStreamFor:#(1 2 3 4 5).
+   self checkReadStreamFor:#(1 2 3 4 5) asOrderedCollection.
+
+
+   "
+    (self selector:#testReadStream) runCase
+   "
+!
+
+testSkipAny
+    |stream skipChars|
+
+    stream := self streamClass 
+                on:'some numbers1234with\in other99 stuff' withCRs.
+    skipChars := 'abcdefghijklmnopqrstuvwxyz\ ' withCRs.
+    self assert:(stream skipAny:skipChars) == $1.
+    self assert:(Integer readFrom:stream) == 1234.
+    self assert:(stream skipAny:skipChars) == $9.
+    self assert:(Integer readFrom:stream) == 99
+!
+
+testSkipSeparators
+    |stream|
+
+    stream := self streamClass on:'one      two\three' withCRs.
+    self assert:(stream skipSeparators == $o).
+    self assert:(stream nextWord = 'one').
+    self assert:(stream skipSeparators == $t).
+    self assert:(stream nextWord = 'two').
+    self assert:(stream skipSeparators == $t).
+    self assert:(stream nextWord = 'three').
+    self assert:(stream atEnd).
+    self assert:(stream skipSeparators isNil)
+!
+
+testSkipSeparatorsExceptCR
+    |stream|
+
+    stream := self streamClass on:'one      two\three' withCRs.
+    self assert:(stream skipSeparatorsExceptCR == $o).
+    self assert:(stream nextWord = 'one').
+    self assert:(stream skipSeparatorsExceptCR == $t).
+    self assert:(stream nextWord = 'two').
+    self assert:(stream skipSeparatorsExceptCR == Character cr).
+    self assert:(stream next = Character cr).
+    self assert:(stream nextWord = 'three').
+    self assert:(stream atEnd).
+    self assert:(stream skipSeparatorsExceptCR isNil)
+!
+
+testSkipSpaces
+    |stream|
+
+    stream := self streamClass on:'one      two\three' withCRs.
+    self assert:(stream skipSpaces == $o).
+    self assert:(stream nextWord = 'one').
+    self assert:(stream skipSpaces == $t).
+    self assert:(stream nextWord = 'two').
+    self assert:(stream skipSpaces == Character cr).
+    self assert:(stream next = Character cr).
+    self assert:(stream nextWord = 'three').
+    self assert:(stream atEnd).
+    self assert:(stream skipSpaces isNil)
+! !
+
+!ReadStreamTest class methodsFor:'documentation'!
+
+version
+    ^ '$Header$'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ReadWriteStreamTest.st	Thu Dec 13 20:01:57 2001 +0100
@@ -0,0 +1,41 @@
+"{ Package: 'exept:regression' }"
+
+"{ NameSpace: RegressionTests }"
+
+WriteStreamTest subclass:#ReadWriteStreamTest
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Tests-Regression'
+!
+
+
+!ReadWriteStreamTest methodsFor:'setup'!
+
+setUp
+    self streamClass:ReadWriteStream
+! !
+
+!ReadWriteStreamTest methodsFor:'tests'!
+
+testBasic
+    |stream|
+
+    stream := self streamClass on:''.
+    self assert:(stream isReadable).
+    self assert:(stream isPositionable).
+    self assert:(stream isWritable).
+    self assert:(stream size == 0).
+    self assert:(stream isEmpty)
+!
+
+testReadStream
+
+    ^ super testReadStream
+! !
+
+!ReadWriteStreamTest class methodsFor:'documentation'!
+
+version
+    ^ '$Header$'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WriteStreamTest.st	Thu Dec 13 20:01:57 2001 +0100
@@ -0,0 +1,36 @@
+"{ Package: 'exept:regression' }"
+
+"{ NameSpace: RegressionTests }"
+
+ReadStreamTest subclass:#WriteStreamTest
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Tests-Regression'
+!
+
+
+!WriteStreamTest methodsFor:'setup'!
+
+setUp
+    self streamClass:WriteStream
+! !
+
+!WriteStreamTest methodsFor:'tests'!
+
+testBasic
+    |stream|
+
+    stream := self streamClass on:''.
+    self assert:(stream isWritable).
+    self assert:(stream isPositionable).
+    self assert:(stream isReadable not).
+    self assert:(stream size == 0).
+    self assert:(stream isEmpty)
+! !
+
+!WriteStreamTest class methodsFor:'documentation'!
+
+version
+    ^ '$Header$'
+! !