class: RegressionTests::SmallIntegerTest
authorClaus Gittinger <cg@exept.de>
Thu, 06 Nov 2014 17:03:19 +0100
changeset 1223 708a62eac280
parent 1222 b476e1efa7f1
child 1224 85b0ce90c09b
class: RegressionTests::SmallIntegerTest changed: #testDivide #testMultiply #testNegation
RegressionTests__SmallIntegerTest.st
--- a/RegressionTests__SmallIntegerTest.st	Thu Nov 06 16:47:58 2014 +0100
+++ b/RegressionTests__SmallIntegerTest.st	Thu Nov 06 17:03:19 2014 +0100
@@ -19,7 +19,7 @@
 !SmallIntegerTest methodsFor:'tests-arithmetic'!
 
 testDivide
-        |zero|
+        |zero _1 _2 _3 _4 _m2 _m4|
 
         "circumvent compiler error about division by zero"
         zero := 0.
@@ -27,7 +27,24 @@
         self assert: 2 / 1 = 2.
         self assert: (3 / 2) isFraction.
         self assert: 4 / 2 = 2.
+        self assert: 4 / -2 = -2.
+        self assert: -4 / 2 = -2.
+        self assert: -4 / -2 = 2.
         self should: [ 1 / zero ] raise: ZeroDivide.
+
+        _1 := 1.
+        _2 := 2.
+        _3 := 3.
+        _4 := 4.
+        _m2 := -2.
+        _m4 := -4.
+
+        self assert: _2 / _1 = _2.
+        self assert: (_3 / _2) isFraction.
+        self assert: _4 / _2 = 2.
+        self assert: _4 / _m2 = -2.
+        self assert: _m4 / _2 = -2.
+        self assert: _m4 / _m2 = 2.
 !
 
 testMultiply
@@ -48,6 +65,19 @@
         16r40000001
         16r80000001
         16r100000001
+
+        "/ for 64 bit machines:
+        16r3fffffffffffffff
+        16r7fffffffffffffff
+        16rffffffffffffffff
+        16r2000000000000000
+        16r4000000000000000
+        16r8000000000000000
+        16r10000000000000000
+        16r2000000000000001
+        16r4000000000000001
+        16r8000000000000001
+        16r10000000000000001
     ) do:[:x |
         i := x.
         ii := i * i.
@@ -80,6 +110,19 @@
         16r40000001
         16r80000001
         16r100000001
+
+        "/ for 64bit machines:
+        16r3fffffffffffffff
+        16r7fffffffffffffff
+        16rffffffffffffffff
+        16r2000000000000000
+        16r4000000000000000
+        16r8000000000000000
+        16r10000000000000000
+        16r2000000000000001
+        16r4000000000000001
+        16r8000000000000001
+        16r10000000000000001
     ) do:[:x |
         i := x.
         iN := i negated.