RegressionTests__StreamTests.st
changeset 1249 3b882caff8e6
parent 1213 0de4acfc2597
child 1250 e428a40b92ce
--- a/RegressionTests__StreamTests.st	Wed Nov 19 14:50:24 2014 +0100
+++ b/RegressionTests__StreamTests.st	Thu Dec 04 17:35:03 2014 +0100
@@ -267,6 +267,111 @@
      self run:#test05_readAlphanumericWords
      self new test05_readAlphanumericWords
     "
+!
+
+test06_writeStream
+    |s|
+
+         "0123456789012345678901"
+    s := WriteStream on:(String new).
+    self assert:(s position == 0).
+    self assert:(s readLimit == 0).
+    s nextPut:$a.
+    self assert:(s position == 1).
+    self assert:(s contents = 'a').
+    self assert:(s readLimit == 1).
+
+    s nextPut:$b.
+    self assert:(s position == 2).
+    self assert:(s contents = 'ab').
+    self assert:(s readLimit == 2).
+
+    s nextPut:$c.
+    self assert:(s position == 3).
+    "/ self assert:(s contents = 'abc').
+    self assert:(s readLimit == 3).
+
+    "/ fill to right before it has to resize
+    s position to:(s collection size) do:[:i | s nextPut:$0+(i\\10)].
+    self assert:(s contents = ('abc345678901234567890' copyTo:s size)).
+
+    "
+     self run:#test06_writeStream
+     self new test06_writeStream
+    "
+!
+
+test07_writeStream
+    |s|
+
+         "0123456789012345678901"
+    s := '' writeStream.
+    s nextPut:$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'.       
+    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'.       
+
+    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'.       
+
+    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).       
+
+    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 run:#test07_writeStream
+     self new test07_writeStream
+    "
+!
+
+test08_writeStream
+    |s|
+
+         "0123456789012345678901"
+    s := '' writeStream.
+    s nextPutAll:'hello '.
+    s nextPutAll:'1234world012345' startingAt:5 to:9.
+    self assert:( s contents = 'hello world' ). 
+
+    "
+     self run:#test08_writeStream
+     self new test08_writeStream
+    "
+!
+
+test09_writeStreamErrors
+    |s|
+
+    s := '' writeStream.
+    self should:[ s nextPutAll:nil ] raise:Error.
+    self assert:( s contents = '' ). 
+
+    "
+     self run:#test09_writeStreamErrors
+     self new test09_writeStreamErrors
+    "
 ! !
 
 !StreamTests class methodsFor:'documentation'!