#QUALITY by cg
authorClaus Gittinger <cg@exept.de>
Fri, 21 Jul 2017 15:24:53 +0200
changeset 1641 e593c6c2e405
parent 1640 3b418a5df23b
child 1643 a2c1786fc80e
#QUALITY by cg class: RegressionTests::IntegerTest class definition added:142 methods class: RegressionTests::IntegerTest class added: #version #version_CVS
RegressionTests__IntegerTest.st
--- a/RegressionTests__IntegerTest.st	Thu Jul 20 16:54:57 2017 +0200
+++ b/RegressionTests__IntegerTest.st	Fri Jul 21 15:24:53 2017 +0200
@@ -4408,6 +4408,65 @@
     "
 !
 
+testSignExtension
+    "/ 8bit
+    self assert:( 16r80 signExtendedByteValue = -128 ).
+    self assert:( 16r7F signExtendedByteValue = 127 ).  
+    self assert:( 16rFF signExtendedByteValue = -1 ).
+
+    "/ higher bits are ignored
+    self assert:( 16rF80 signExtendedByteValue = -128 ).
+    self assert:( 16rF7F signExtendedByteValue = 127 ).  
+    self assert:( 16rFFF signExtendedByteValue = -1 ).
+
+    "/ 16bit
+    self assert:( 16r8000 signExtendedShortValue = -32768 ).
+    self assert:( 16r7FFF signExtendedShortValue = 32767 ).  
+    self assert:( 16rFFFF signExtendedShortValue = -1 ).
+
+    "/ higher bits are ignored
+    self assert:( 16rF8000 signExtendedShortValue = -32768 ).
+    self assert:( 16rF7FFF signExtendedShortValue = 32767 ).  
+    self assert:( 16rFFFFF signExtendedShortValue = -1 ).
+
+    "/ 24bit
+    self assert:( 16r800000 signExtended24BitValue = -8388608 ).
+    self assert:( 16r7FFFFF signExtended24BitValue = 8388607 ).  
+    self assert:( 16rFFFFFF signExtended24BitValue = -1 ).
+
+    "/ higher bits are ignored
+    self assert:( 16rF800000 signExtended24BitValue = -8388608 ).
+    self assert:( 16rF7FFFFF signExtended24BitValue = 8388607 ).  
+    self assert:( 16rFFFFFFF signExtended24BitValue = -1 ).
+
+    "/ 32bit
+    self assert:( 16r80000000 signExtendedLongValue = -2147483648 ).
+    self assert:( 16r7FFFFFFF signExtendedLongValue = 2147483647 ).  
+    self assert:( 16rFFFFFFFF signExtendedLongValue = -1 ).
+
+    "/ higher bits are ignored
+    self assert:( 16rF80000000 signExtendedLongValue = -2147483648 ).
+    self assert:( 16rF7FFFFFFF signExtendedLongValue = 2147483647 ).  
+    self assert:( 16rFFFFFFFFF signExtendedLongValue = -1 ).
+
+    "/ 64bit
+    self assert:( 16r8000000000000000 signExtendedLongLongValue = -9223372036854775808 ).
+    self assert:( 16r7FFFFFFFFFFFFFFF signExtendedLongLongValue = 9223372036854775807 ).  
+    self assert:( 16rFFFFFFFFFFFFFFFF signExtendedLongLongValue = -1 ).
+
+    "/ higher bits are ignored
+    self assert:( 16rF8000000000000000 signExtendedLongLongValue = -9223372036854775808 ).
+    self assert:( 16rF7FFFFFFFFFFFFFFF signExtendedLongLongValue = 9223372036854775807 ).  
+    self assert:( 16rFFFFFFFFFFFFFFFFF signExtendedLongLongValue = -1 ).
+
+    "/ arbitrary nr of bits
+    self assert:( 2r1000 signExtendedFromBit:4) = -8 .
+    self assert:( 2r0111 signExtendedFromBit:4) = 7 .  
+    self assert:( 2r1111 signExtendedFromBit:4) = -1 .
+
+    "Created: / 21-07-2017 / 15:15:53 / cg"
+!
+
 testSmallIntegerArithmetic
     "arithmetic tests.
      Notice, the arithmetic tests are both performed via regular sends