--- a/RegressionTests__StreamTests.st Wed Jun 29 13:00:17 2016 +0000
+++ b/RegressionTests__StreamTests.st Wed Jun 29 15:55:29 2016 +0200
@@ -1,6 +1,6 @@
"{ Encoding: utf8 }"
-"{ Package: 'exept:regression' }"
+"{ Package: 'stx:goodies/regression' }"
"{ NameSpace: RegressionTests }"
@@ -18,7 +18,7 @@
documentation to be added.
[author:]
- cg
+ cg
[instance variables:]
@@ -33,10 +33,10 @@
coveredClassNames
^ #(
- 'PositionableStream'
- 'ReadStream'
- 'WriteStream'
- 'Stream'
+ 'PositionableStream'
+ 'ReadStream'
+ 'WriteStream'
+ 'Stream'
)
"Created: / 16-09-2011 / 14:56:05 / cg"
@@ -46,9 +46,9 @@
setUp
(Smalltalk classNamed:'stx_libcompat') isNil ifTrue:[
- (Smalltalk loadPackage:'stx:libcompat') ifFalse:[
- self error:'libcompat cannot be loaded'.
- ].
+ (Smalltalk loadPackage:'stx:libcompat') ifFalse:[
+ self error:'libcompat cannot be loaded'.
+ ].
].
(Smalltalk classNamed:'stx_libcompat') load.
! !
@@ -94,88 +94,88 @@
test02_readStream
{
- #($a $b $c $d $a $b $c $d $a $b $c $d $a $b $c $d) .
- #[97 98 99 100 97 98 99 100 97 98 99 100] .
- 'abcdabcdabcdabcd' .
- 'abcdabcdabcdabcd' asUnicode16String .
- 'abcdabcdabcdabcd' asUnicode32String .
+ #($a $b $c $d $a $b $c $d $a $b $c $d $a $b $c $d) .
+ #[97 98 99 100 97 98 99 100 97 98 99 100] .
+ 'abcdabcdabcdabcd' .
+ 'abcdabcdabcdabcd' asUnicode16String .
+ 'abcdabcdabcdabcd' asUnicode32String .
} do:[:coll|
- |s e t|
+ |s e t|
- s := coll readStream.
+ s := coll readStream.
- "/ initial state?
- self assert:(s atEnd not).
- self assert:(s position == 0).
- "/ peek returns the correct value
- e := s peek.
- self assert:(e asInteger == 97).
+ "/ initial state?
+ self assert:(s atEnd not).
+ self assert:(s position == 0).
+ "/ peek returns the correct value
+ e := s peek.
+ self assert:(e asInteger == 97).
- "/ peek should not change any state
- self assert:(s atEnd not).
- self assert:(s position == 0).
- e := s next.
- self assert:(e asInteger == 97).
- self assert:(s position == 1).
- self assert:(s atEnd not).
+ "/ peek should not change any state
+ self assert:(s atEnd not).
+ self assert:(s position == 0).
+ e := s next.
+ self assert:(e asInteger == 97).
+ self assert:(s position == 1).
+ self assert:(s atEnd not).
- e := s peek.
- self assert:(s position == 1).
- self assert:(e asInteger == 98).
+ e := s peek.
+ self assert:(s position == 1).
+ self assert:(e asInteger == 98).
- s position:0.
- self assert:(s atEnd not).
- self assert:(s position == 0).
- e := s peek.
- self assert:(e asInteger == 97).
+ s position:0.
+ self assert:(s atEnd not).
+ self assert:(s position == 0).
+ e := s peek.
+ self assert:(e asInteger == 97).
- s position:coll size.
- self assert:(s atEnd).
- self assert:(s position == coll size).
+ s position:coll size.
+ self assert:(s atEnd).
+ self assert:(s position == coll size).
- s position:0.
- self assert:(s position == 0).
- e := s peek.
- self assert:(e asInteger == 97).
+ s position:0.
+ self assert:(s position == 0).
+ e := s peek.
+ self assert:(e asInteger == 97).
- t := s next:2.
- self assert:(t size == 2).
- self assert:(t at:1) asInteger == 97.
- self assert:(t at:2) asInteger == 98.
- self assert:(s position == 2).
+ t := s next:2.
+ self assert:(t size == 2).
+ self assert:(t at:1) asInteger == 97.
+ self assert:(t at:2) asInteger == 98.
+ self assert:(s position == 2).
- s position:1.
- self assert:(s position == 1).
- e := s peek.
- self assert:(e asInteger == 98).
- t := s upTo:(coll at:1).
- self assert:(t size == 3).
- self assert:(t at:1) == (coll at:2).
- self assert:(t at:2) == (coll at:3).
- self assert:(t at:3) == (coll at:4).
+ s position:1.
+ self assert:(s position == 1).
+ e := s peek.
+ self assert:(e asInteger == 98).
+ t := s upTo:(coll at:1).
+ self assert:(t size == 3).
+ self assert:(t at:1) == (coll at:2).
+ self assert:(t at:2) == (coll at:3).
+ self assert:(t at:3) == (coll at:4).
- self assert:(s position == 5).
- self assert:(s peek asInteger == (coll at:2) asInteger).
+ self assert:(s position == 5).
+ self assert:(s peek asInteger == (coll at:2) asInteger).
- s position:1.
- (coll at:1) isCharacter ifTrue:[
- s skipSeparators.
- self assert:(s position == 1).
- ].
+ s position:1.
+ (coll at:1) isCharacter ifTrue:[
+ s skipSeparators.
+ self assert:(s position == 1).
+ ].
- s position:(coll size - 1).
- t := s upToEnd.
- self assert:(s position == coll size).
- self assert:(t size == 1).
- self assert:(t at:1) == (coll at:coll size).
+ s position:(coll size - 1).
+ t := s upToEnd.
+ self assert:(s position == coll size).
+ self assert:(t size == 1).
+ self assert:(t at:1) == (coll at:coll size).
- s position:0.
- (coll at:1) isCharacter ifTrue:[
- t := s nextAlphaNumericWord.
- self assert:(t asArray = coll asArray).
- self assert:(s position == coll size).
- ].
-
+ s position:0.
+ (coll at:1) isCharacter ifTrue:[
+ t := s nextAlphaNumericWord.
+ self assert:(t asArray = coll asArray).
+ self assert:(s position == coll size).
+ ].
+
].
"
@@ -186,32 +186,32 @@
test03_readStream
{
- #($a $b $c $d $ $a $b $c $d $a $b $c $d $a $b $c $d) .
- #[97 98 99 100 20 97 98 99 100 97 98 99 100] .
- 'abcd abcdabcdabcd' .
- 'abcd abcdabcdabcd' asUnicode16String .
- 'abcd abcdabcdabcd' asUnicode32String .
+ #($a $b $c $d $ $a $b $c $d $a $b $c $d $a $b $c $d) .
+ #[97 98 99 100 20 97 98 99 100 97 98 99 100] .
+ 'abcd abcdabcdabcd' .
+ 'abcd abcdabcdabcd' asUnicode16String .
+ 'abcd abcdabcdabcd' asUnicode32String .
} do:[:coll|
- |s e t|
+ |s e t|
- s := coll readStream.
+ s := coll readStream.
- s position:3.
- (coll at:1) isCharacter ifTrue:[
- s skipSeparators.
- self assert:(s position == 3).
- s next.
- s skipSeparators.
- self assert:(s position == 5).
- ].
+ s position:3.
+ (coll at:1) isCharacter ifTrue:[
+ s skipSeparators.
+ self assert:(s position == 3).
+ s next.
+ s skipSeparators.
+ self assert:(s position == 5).
+ ].
- s position:0.
- (coll at:1) isCharacter ifTrue:[
- t := s nextAlphaNumericWord.
- self assert:(t asArray = (coll asArray copyTo:4)).
- self assert:(s position == 4).
- ].
-
+ s position:0.
+ (coll at:1) isCharacter ifTrue:[
+ t := s nextAlphaNumericWord.
+ self assert:(t asArray = (coll asArray copyTo:4)).
+ self assert:(s position == 4).
+ ].
+
].
"
@@ -223,7 +223,7 @@
test04_readIntegers
|s n|
- "0123456789012345678901"
+ "0123456789012345678901"
s := '1234 56789 123 ' readStream.
self assert:((n := s nextDecimalInteger) == 1234).
self assert:(s position == 4).
@@ -253,7 +253,7 @@
test05_readAlphanumericWords
|s w|
- "0123456789012345678901"
+ "0123456789012345678901"
s := 'a234 b6789 c23 ' readStream.
self assert:((w := s nextAlphaNumericWord) = 'a234').
self assert:(s position == 4).
@@ -277,7 +277,7 @@
test06_writeStream
|s|
- "0123456789012345678901"
+ "0123456789012345678901"
s := WriteStream on:(String new).
self assert:(s position == 0).
self assert:(s readLimit == 0).
@@ -309,41 +309,41 @@
test07_writeStream
|s|
- "0123456789012345678901"
+ "0123456789012345678901"
s := '' writeStream.
s nextPut:$a.
- self assert:(s last) == $a.
- self assert:(s last:1) = 'a'.
+ self assert:(s last) == $a.
+ self assert:(s last:1) = 'a'.
s nextPut:$b.
- self assert:(s last) == $b.
- self assert:(s last:1) = 'b'.
- self assert:(s last:2) = 'ab'.
+ self assert:(s last) == $b.
+ self assert:(s last:1) = 'b'.
+ self assert:(s last:2) = 'ab'.
s nextPut:$c.
- self assert:(s last) == $c.
- self assert:(s last:1) = 'c'.
- self assert:(s last:2) = 'bc'.
- self assert:(s last:3) = 'abc'.
+ self assert:(s last) == $c.
+ self assert:(s last:1) = 'c'.
+ self assert:(s last:2) = 'bc'.
+ self assert:(s last:3) = 'abc'.
s nextPutAll:'123'.
- self assert:(s last) == $3.
- self assert:(s last:1) = '3'.
- self assert:(s last:2) = '23'.
- self assert:(s last:3) = '123'.
+ self assert:(s last) == $3.
+ self assert:(s last:1) = '3'.
+ self assert:(s last:2) = '23'.
+ self assert:(s last:3) = '123'.
s next:1 put:$4.
- self assert:(s last) == $4.
- self assert:(s last:1) = '4'.
- self assert:(s last:2) = '34'.
- self assert:(s last:3) = '234'.
- self assert:(s size == 7).
+ self assert:(s last) == $4.
+ self assert:(s last:1) = '4'.
+ self assert:(s last:2) = '34'.
+ self assert:(s last:3) = '234'.
+ self assert:(s size == 7).
s next:3 put:$5.
- self assert:(s last) == $5.
- self assert:(s last:1) = '5'.
- self assert:(s last:2) = '55'.
- self assert:(s last:3) = '555'.
- self assert:(s last:4) = '4555'.
- self assert:(s size == 10).
+ self assert:(s last) == $5.
+ self assert:(s last:1) = '5'.
+ self assert:(s last:2) = '55'.
+ self assert:(s last:3) = '555'.
+ self assert:(s last:4) = '4555'.
+ self assert:(s size == 10).
"
self run:#test07_writeStream
@@ -357,13 +357,13 @@
s := '' writeStream.
s nextPutAll:'hello '.
s nextPutAll:'1234world012345' startingAt:5 to:9.
- self assert:( s contents = 'hello world' ).
+ self assert:( s contents = 'hello world' ).
s := '' writeStream.
s nextPutAll:'hello'.
s space.
s nextPutAll:'world'.
- self assert:( s contents = 'hello world' ).
+ self assert:( s contents = 'hello world' ).
"
self run:#test08_writeStream
@@ -376,7 +376,7 @@
s := '' writeStream.
self should:[ s nextPutAll:nil ] raise:Error.
- self assert:( s contents = '' ).
+ self assert:( s contents = '' ).
"
self run:#test09_writeStreamErrors
@@ -387,7 +387,7 @@
test20_readWriteStream
|s ch string|
- "0123456789012345678901"
+ "0123456789012345678901"
s := ReadWriteStream on:(String new).
self assert:(s position == 0).
self assert:(s readLimit == 0).
@@ -431,7 +431,7 @@
test21_readWriteStreamWithPosition
|s|
- "0123456789012345678901"
+ "0123456789012345678901"
s := ReadWriteStream on:(String new).
self assert:(s position == 0).
self assert:(s readLimit == 0).
@@ -458,7 +458,7 @@
test22_readWriteStreamWithRewrite
|s|
- "0123456789012345678901"
+ "0123456789012345678901"
s := ReadWriteStream on:(String new).
self assert:(s position == 0).
self assert:(s readLimit == 0).
@@ -470,12 +470,12 @@
s position:(s position - 5).
self assert:(s position = 6).
s nextPutAll:'W'.
-
+
self assert:(s position = 7).
self assert:(s readLimit = 11).
self assert:(s contents = 'hello World').
-
+
"
self run:#test22_readWriteStreamWithRewrite
self new test21_readWriteStreamWithPosition
@@ -486,13 +486,13 @@
|testVector s val|
#(
- 0 #[ 0 0 ]
- 1 #[ 0 1 ]
- 16r7F #[ 0 16r7F ]
- 16r80 #[ 0 16r80 ]
- 16rFF #[ 0 16rFF ]
- 16r100 #[ 1 16r00 ]
- 16r7FFF #[ 16r7F 16rFF ]
+ 0 #[ 0 0 ]
+ 1 #[ 0 1 ]
+ 16r7F #[ 0 16r7F ]
+ 16r80 #[ 0 16r80 ]
+ 16rFF #[ 0 16rFF ]
+ 16r100 #[ 1 16r00 ]
+ 16r7FFF #[ 16r7F 16rFF ]
-1 #[ 16rFF 16rFF ]
-16r7F #[ 16rFF 16r81 ]
@@ -500,79 +500,79 @@
-16rFF #[ 16rFF 16r01 ]
-16r7FFF #[ 16r80 16r01 ]
-16r8000 #[ 16r80 16r00 ]
- ) pairWiseDo:[:val :expected |
- s := WriteStream on:(ByteArray new).
- s nextPutShort:val MSB:true.
- self assert:(s contents = expected).
+ ) pairWiseDo:[:val :expected |
+ s := WriteStream on:(ByteArray new).
+ s nextPutShort:val MSB:true.
+ self assert:(s contents = expected).
- s := WriteStream on:(ByteArray new).
- s nextPutShort:val MSB:false.
- self assert:(s contents reversed = expected).
+ s := WriteStream on:(ByteArray new).
+ s nextPutShort:val MSB:false.
+ self assert:(s contents reversed = expected).
- [
- s := 'testData' asFilename writeStream.
- s nextPutShort:val MSB:true.
- s close.
- self assert:('testData' asFilename binaryContentsOfEntireFile = expected).
+ [
+ s := 'testData' asFilename writeStream.
+ s nextPutShort:val MSB:true.
+ s close.
+ self assert:('testData' asFilename binaryContentsOfEntireFile = expected).
- s := 'testData' asFilename writeStream.
- s nextPutShort:val MSB:false.
- s close.
- self assert:('testData' asFilename binaryContentsOfEntireFile reversed = expected).
- ] ensure:[
- 'testData' asFilename delete
- ].
+ s := 'testData' asFilename writeStream.
+ s nextPutShort:val MSB:false.
+ s close.
+ self assert:('testData' asFilename binaryContentsOfEntireFile reversed = expected).
+ ] ensure:[
+ 'testData' asFilename delete
+ ].
].
-
+
#(
- nextPutShort:MSB: nextShortMSB:
- nextPutLong:MSB: nextLongMSB:
- nextPutHyper:MSB: nextHyperMSB:
-
- nextPutInt16:MSB: nextInt16MSB:
- nextPutInt32:MSB: nextInt32MSB:
- nextPutInt64:MSB: nextInt64MSB:
+ nextPutShort:MSB: nextShortMSB:
+ nextPutLong:MSB: nextLongMSB:
+ nextPutHyper:MSB: nextHyperMSB:
+
+ nextPutInt16:MSB: nextInt16MSB:
+ nextPutInt32:MSB: nextInt32MSB:
+ nextPutInt64:MSB: nextInt64MSB:
) pairWiseDo:[:writer :reader |
- #(true false) do:[:msb |
- testVector :=
- #(
- 0 1 -1
- 16r7f 16r80 16r81
- -16r7f -16r80 -16r81
- 16r7fff -16r7fff -16r8000
- ).
-
- s := ReadWriteStream on:(ByteArray new).
- testVector do:[:written |
- s perform:writer with:written with:msb.
- ].
+ #(true false) do:[:msb |
+ testVector :=
+ #(
+ 0 1 -1
+ 16r7f 16r80 16r81
+ -16r7f -16r80 -16r81
+ 16r7fff -16r7fff -16r8000
+ ).
- s reset.
+ s := ReadWriteStream on:(ByteArray new).
+ testVector do:[:written |
+ s perform:writer with:written with:msb.
+ ].
- testVector do:[:expected |
- self assert:(val := s perform:reader with:msb) == expected.
- ].
+ s reset.
+
+ testVector do:[:expected |
+ self assert:(val := s perform:reader with:msb) == expected.
+ ].
- "/ ----
- [
- s := 'testData' asFilename writeStream.
- testVector do:[:written |
- s perform:writer with:written with:msb.
- ].
+ "/ ----
+ [
+ s := 'testData' asFilename writeStream.
+ testVector do:[:written |
+ s perform:writer with:written with:msb.
+ ].
- s close.
- s := 'testData' asFilename readStream.
+ s close.
+ s := 'testData' asFilename readStream.
- testVector do:[:expected |
- self assert:(val := s perform:reader with:msb) == expected.
- ].
- s close.
- ] ensure:[
- 'testData' asFilename delete
- ]
- ].
+ testVector do:[:expected |
+ self assert:(val := s perform:reader with:msb) == expected.
+ ].
+ s close.
+ ] ensure:[
+ 'testData' asFilename delete
+ ]
+ ].
].
-
+
"
self run:#test30_readWriteBinary
self new test30_readWriteBinary
@@ -583,17 +583,17 @@
|s|
#(
- 0 1 #[ 0 ]
- 0 2 #[ 0 0 ]
- 0 3 #[ 0 0 0 ]
- 0 4 #[ 0 0 0 0]
- 0 6 #[ 0 0 0 0 0 0]
+ 0 1 #[ 0 ]
+ 0 2 #[ 0 0 ]
+ 0 3 #[ 0 0 0 ]
+ 0 4 #[ 0 0 0 0]
+ 0 6 #[ 0 0 0 0 0 0]
- 1 1 #[ 1 ]
- 1 2 #[ 0 1 ]
- 1 3 #[ 0 0 1 ]
- 1 4 #[ 0 0 0 1 ]
- 1 6 #[ 0 0 0 0 0 1 ]
+ 1 1 #[ 1 ]
+ 1 2 #[ 0 1 ]
+ 1 3 #[ 0 0 1 ]
+ 1 4 #[ 0 0 0 1 ]
+ 1 6 #[ 0 0 0 0 0 1 ]
16r8000 2 #[ 16r80 16r00 ]
16r8000 3 #[ 16r00 16r80 16r00 ]
@@ -609,33 +609,33 @@
16r87654321 5 #[ 16r00 16r87 16r65 16r43 16r21 ]
16r87654321 6 #[ 16r00 16r00 16r87 16r65 16r43 16r21 ]
- ) inGroupsOf:3 do:[:val :nBytes :expected |
- s := WriteStream on:(ByteArray new).
- s nextNumber:nBytes put:val MSB:true.
- self assert:(s contents = expected).
+ ) inGroupsOf:3 do:[:val :nBytes :expected |
+ s := WriteStream on:(ByteArray new).
+ s nextNumber:nBytes put:val MSB:true.
+ self assert:(s contents = expected).
- s := WriteStream on:(ByteArray new).
- s nextNumber:nBytes put:val MSB:false.
- self assert:(s contents reversed = expected).
+ s := WriteStream on:(ByteArray new).
+ s nextNumber:nBytes put:val MSB:false.
+ self assert:(s contents reversed = expected).
- "/ because external streams may have specially tuned output methods,
- "/ test them also
- [
- s := 'testData' asFilename writeStream.
- s nextNumber:nBytes put:val MSB:true.
- s close.
- self assert:('testData' asFilename binaryContentsOfEntireFile = expected).
+ "/ because external streams may have specially tuned output methods,
+ "/ test them also
+ [
+ s := 'testData' asFilename writeStream.
+ s nextNumber:nBytes put:val MSB:true.
+ s close.
+ self assert:('testData' asFilename binaryContentsOfEntireFile = expected).
- s := 'testData' asFilename writeStream.
- s nextNumber:nBytes put:val MSB:false.
- s close.
- self assert:('testData' asFilename binaryContentsOfEntireFile reversed = expected).
- ] ensure:[
- 'testData' asFilename delete
- ].
+ s := 'testData' asFilename writeStream.
+ s nextNumber:nBytes put:val MSB:false.
+ s close.
+ self assert:('testData' asFilename binaryContentsOfEntireFile reversed = expected).
+ ] ensure:[
+ 'testData' asFilename delete
+ ].
].
-
-
+
+
"
self run:#test31_readWriteBinaryIntegers
self new test31_readWriteBinaryIntegers
@@ -646,62 +646,62 @@
|fn stream lineEnd contents expected eolModeOfStream check|
eolModeOfStream :=
- [:stream |
- (stream eolMode == #nl) ifTrue:[
- lineEnd := String lf.
- ] ifFalse:[
- (stream eolMode == #crlf) ifTrue:[
- lineEnd := String crlf.
- ] ifFalse:[
- (stream eolMode == #cr) ifTrue:[
- lineEnd := String return.
- ] ifFalse:[
- self error
- ].
- ].
- ].
- ].
-
+ [:stream |
+ (stream eolMode == #nl) ifTrue:[
+ lineEnd := String lf.
+ ] ifFalse:[
+ (stream eolMode == #crlf) ifTrue:[
+ lineEnd := String crlf.
+ ] ifFalse:[
+ (stream eolMode == #cr) ifTrue:[
+ lineEnd := String return.
+ ] ifFalse:[
+ self error
+ ].
+ ].
+ ].
+ ].
+
[
- fn := Filename newTemporary.
- stream := fn writeStream.
- "/ all show the same default behavior
- self assert:(stream eolMode == #nl).
+ fn := Filename newTemporary.
+ stream := fn writeStream.
+ "/ all show the same default behavior
+ self assert:(stream eolMode == #nl).
] ensure:[
- stream close.
- fn delete.
+ stream close.
+ fn delete.
].
-
- check :=
- [:eolMode |
- fn := Filename newTemporary.
- stream := fn writeStream.
- stream eolMode:eolMode.
+
+ check :=
+ [:eolMode |
+ fn := Filename newTemporary.
+ stream := fn writeStream.
+ stream eolMode:eolMode.
+
+ [
+ lineEnd := eolModeOfStream value:stream.
- [
- lineEnd := eolModeOfStream value:stream.
-
- stream nextPutAll:'line1'; cr.
- stream nextPutLine:'line2'.
- stream nextPutAll:'line3
+ stream nextPutAll:'line1'; cr.
+ stream nextPutLine:'line2'.
+ stream nextPutAll:'line3
line4'; cr.
- stream close.
-
- contents := fn binaryContentsOfEntireFile.
- expected := ('line1*line2*line3*line4*' copyReplaceString:'*' withString:lineEnd) asByteArray.
-
- self assert:(contents = expected ).
- ] ensure:[
- stream close.
- fn delete
- ].
- ].
-
+ stream close.
+
+ contents := fn binaryContentsOfEntireFile.
+ expected := ('line1*line2*line3*line4*' copyReplaceString:'*' withString:lineEnd) asByteArray.
+
+ self assert:(contents = expected ).
+ ] ensure:[
+ stream close.
+ fn delete
+ ].
+ ].
+
check value:#lf.
check value:#nl.
check value:#crlf.
check value:#cr.
-
+
"
self run:#test40_eolMode
self new test40_eolMode