# HG changeset patch # User Claus Gittinger # Date 1456515500 -3600 # Node ID c591f48b955de521c8a44c85e1b28027c6bcfd2e # Parent df8bc748b1f4093edea77bd5e8eed6c3d7d0507d #FEATURE class: RegressionTests::IntegerTest added: #testDivision4 diff -r df8bc748b1f4 -r c591f48b955d 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').