RegressionTests__StreamTests.st
changeset 1387 4ea7fe91cef7
parent 1311 b45b95e640f9
child 1400 3ba502e13bff
--- a/RegressionTests__StreamTests.st	Sun Apr 10 13:32:44 2016 +0200
+++ b/RegressionTests__StreamTests.st	Sun Apr 10 17:32:21 2016 +0200
@@ -516,6 +516,69 @@
      self run:#test30_readWriteBinary
      self new test30_readWriteBinary
     "
+!
+
+test31_readWriteBinaryIntegers
+    |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]
+
+        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 ]
+       16r8000  4 #[ 16r00 16r00 16r80 16r00 ]
+       16r8000  5 #[ 16r00 16r00 16r00 16r80 16r00 ]
+       16r8000  6 #[ 16r00 16r00 16r00 16r00 16r80 16r00 ]
+
+       16r12345678  4 #[ 16r12 16r34 16r56 16r78 ]
+       16r12345678  5 #[ 16r00 16r12 16r34 16r56 16r78 ]
+       16r12345678  6 #[ 16r00 16r00 16r12 16r34 16r56 16r78 ]
+
+       16r87654321  4 #[ 16r87 16r65 16r43 16r21 ]
+       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).
+
+        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).
+
+            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
+    "
 ! !
 
 !StreamTests class methodsFor:'documentation'!