--- /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$'
+! !