--- 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').