class: RegressionTests::SmallIntegerTest
changed:
#testDivide
#testMultiply
#testNegation
--- 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.