#FEATURE
authorClaus Gittinger <cg@exept.de>
Wed, 24 Feb 2016 15:48:38 +0100
changeset 1309 546f3f8c980f
parent 1308 0514727b0371
child 1310 f98c9b95f3e7
#FEATURE class: RegressionTests::StreamTests class definition added:16 methods
RegressionTests__StreamTests.st
--- a/RegressionTests__StreamTests.st	Thu Feb 11 14:48:14 2016 +0100
+++ b/RegressionTests__StreamTests.st	Wed Feb 24 15:48:38 2016 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "{ Package: 'exept:regression' }"
 
 "{ NameSpace: RegressionTests }"
@@ -421,6 +419,73 @@
      self run:#test20_readWriteStream
      self new test20_readWriteStream
     "
+!
+
+test30_readWriteBinary
+    |testVector s val|
+
+    #(
+        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 ]
+       -16r80   #[ 16rFF 16r80 ]
+       -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).
+
+        s := WriteStream on:(ByteArray new).
+        s nextPutShort:val MSB:false.
+        self assert:(s contents reversed = expected).
+    ].
+    
+    #(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 nextPutShort:written MSB:msb.
+        ].
+
+        s reset.
+
+        testVector do:[:expected |
+            self assert:(val := s nextShortMSB:msb) == expected.
+        ].
+
+
+        s := ReadWriteStream on:(ByteArray new).
+        testVector do:[:written |
+            s nextPutLong:written MSB:msb.
+        ].
+
+        s reset.
+
+        testVector do:[:expected |
+            self assert:(val := s nextLongMSB:msb) == expected.
+        ].
+    ].
+    
+    "
+     self run:#test30_readWriteBinary
+     self new test30_readWriteBinary
+    "
 ! !
 
 !StreamTests class methodsFor:'documentation'!