#FEATURE
authorClaus Gittinger <cg@exept.de>
Fri, 26 Feb 2016 20:38:20 +0100
changeset 1320 c591f48b955d
parent 1319 df8bc748b1f4
child 1321 8c3597ef29a3
#FEATURE class: RegressionTests::IntegerTest added: #testDivision4
RegressionTests__IntegerTest.st
--- a/RegressionTests__IntegerTest.st	Fri Feb 26 19:47:53 2016 +0100
+++ b/RegressionTests__IntegerTest.st	Fri Feb 26 20:38:20 2016 +0100
@@ -1273,6 +1273,108 @@
     "
 !
 
+testDivision4
+    "boundary conditions, wehre smallInts should be returned"
+
+    |n1 n2 r|
+    
+    n1 := 1152921504606846976.  "/ 16r1000000000000000
+    n2 := -1073741824.          "/ 16r40000000
+    r := n1 / n2.
+    self assert:(r = -1073741824).
+    self assert:(r class == SmallInteger).
+    self assert:(r == -1073741824).
+
+    n1 := 1152921504606846976.  "/ 16r1000000000000000
+    n2 := 1073741824.           "/ 16r40000000
+    r := n1 / n2.
+    self assert:(r = 1073741824).
+    SmallInteger maxBytes == 8 ifTrue:[
+        self assert:(r class == SmallInteger).
+        self assert:(r == -1073741824).
+    ].
+
+    n1 := 1152921504606846976.  "/ 16r1000000000000000
+    n2 := -536870912.           "/ 16r20000000
+    r := n1 / n2.
+    self assert:(r = -2147483648).
+    SmallInteger maxBytes == 8 ifTrue:[
+        self assert:(r class == SmallInteger).
+        self assert:(r == -2147483648).
+    ].
+
+    n1 := 1152921504606846976.  "/ 16r1000000000000000
+    n2 := 536870912.            "/ 16r20000000
+    r := n1 / n2.
+    self assert:(r = 2147483648).
+    SmallInteger maxBytes == 8 ifTrue:[
+        self assert:(r class == SmallInteger).
+        self assert:(r == -2147483648).
+    ].
+
+    n1 := 1152921504606846976.  "/ 16r1000000000000000
+    n2 := -2147483648.          "/ 16r80000000
+    r := n1 / n2.
+    self assert:(r = -536870912).
+    self assert:(r class == SmallInteger).
+    self assert:(r == -536870912).
+
+    n1 := 1152921504606846976.  "/ 16r1000000000000000
+    n2 := 2147483648.           "/ 16r80000000
+    r := n1 / n2.
+    self assert:(r = 536870912).
+    self assert:(r class == SmallInteger).
+    self assert:(r == 536870912).
+
+    n1 := 21267647932558653966460912964485513216.  "/ 16r10000000000000000000000000000000
+    n2 := -4611686018427387904.                    "/ 16r4000000000000000
+    r := n1 / n2.
+    self assert:(r = -4611686018427387904).
+    SmallInteger maxBytes == 8 ifTrue:[
+        self assert:(r class == SmallInteger).
+        self assert:(r == -4611686018427387904).
+    ].
+
+    n1 := 21267647932558653966460912964485513216.  "/ 16r10000000000000000000000000000000
+    n2 := 4611686018427387904.                     "/ 16r4000000000000000
+    r := n1 / n2.
+    self assert:(r = 4611686018427387904).
+
+    n1 := 21267647932558653966460912964485513216.  "/ 16r10000000000000000000000000000000
+    n2 := -2305843009213693952.                    "/ 16r2000000000000000
+    r := n1 / n2.
+    self assert:(r = -9223372036854775808).
+
+    n1 := 21267647932558653966460912964485513216.  "/ 16r10000000000000000000000000000000
+    n2 := 2305843009213693952.                     "/ 16r2000000000000000
+    r := n1 / n2.
+    self assert:(r = 9223372036854775808).
+
+    n1 := 21267647932558653966460912964485513216.  "/ 16r10000000000000000000000000000000
+    n2 := -9223372036854775808.                    "/ 16r8000000000000000
+    r := n1 / n2.
+    self assert:(r = -2305843009213693952).
+    SmallInteger maxBytes == 8 ifTrue:[
+        self assert:(r class == SmallInteger).
+        self assert:(r == -2305843009213693952).
+    ].
+
+    n1 := 21267647932558653966460912964485513216.  "/ 16r10000000000000000000000000000000
+    n2 := 9223372036854775808.                     "/ 16r8000000000000000
+    r := n1 / n2.
+    self assert:(r = 2305843009213693952).
+    SmallInteger maxBytes == 8 ifTrue:[
+        self assert:(r class == SmallInteger).
+        self assert:(r == 2305843009213693952).
+    ].
+
+    "
+     self new testDivision4
+    "
+
+    "Created: / 26-02-2016 / 20:21:47 / cg"
+!
+
 testEncodeDecode
     self assert:(1 encodeAsBCD hexPrintString = '1').
     self assert:(12 encodeAsBCD hexPrintString = '12').