--- a/RegressionTests__IntegerTest.st Tue Oct 26 22:00:54 1999 +0200
+++ b/RegressionTests__IntegerTest.st Tue Oct 26 22:34:42 1999 +0200
@@ -532,6 +532,137 @@
"Modified: / 6.6.1999 / 14:46:11 / cg"
!
+testIntegerShifts
+ "arithmetic tests.
+ Notice, the arithmetic tests are both performed via regular sends
+ and via constructed performs. The reason is to test both inlined
+ JIT-compiler code AND the regular methods code."
+
+ |n1 n2 s|
+
+ n1 := 100000.
+ n2 := n1 negated.
+ s := 1.
+
+ self test:[n1 printString = '100000'].
+ self test:[n2 printString = '-100000'].
+
+ self test:[(n1 bitShift:s) printString = '200000'].
+ self test:[(n1 bitShift:1) printString = '200000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '200000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:1) printString = '200000'].
+
+ s := s + 1.
+ self test:[(n1 bitShift:s) printString = '400000'].
+ self test:[(n1 bitShift:2) printString = '400000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '400000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:2) printString = '400000'].
+
+ s := s + 1.
+ self test:[(n1 bitShift:s) printString = '800000'].
+ self test:[(n1 bitShift:3) printString = '800000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '800000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:3) printString = '800000'].
+
+ s := s + 1.
+ self test:[(n1 bitShift:s) printString = '1600000'].
+ self test:[(n1 bitShift:4) printString = '1600000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '1600000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:4) printString = '1600000'].
+
+ s := s + 1.
+ self test:[(n1 bitShift:s) printString = '3200000'].
+ self test:[(n1 bitShift:5) printString = '3200000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '3200000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:5) printString = '3200000'].
+
+ s := s + 1.
+ self test:[(n1 bitShift:s) printString = '6400000'].
+ self test:[(n1 bitShift:6) printString = '6400000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '6400000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:6) printString = '6400000'].
+
+ s := s + 1.
+ self test:[(n1 bitShift:s) printString = '12800000'].
+ self test:[(n1 bitShift:7) printString = '12800000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '12800000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:7) printString = '12800000'].
+
+ n1 := 12800000.
+ s := -1.
+ self test:[(n1 bitShift:s) printString = '6400000'].
+ self test:[(n1 bitShift:-1) printString = '6400000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '6400000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-1) printString = '6400000'].
+
+ s := s - 1.
+ self test:[(n1 bitShift:s) printString = '3200000'].
+ self test:[(n1 bitShift:-2) printString = '3200000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '3200000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-2) printString = '3200000'].
+
+ s := s - 1.
+ self test:[(n1 bitShift:s) printString = '1600000'].
+ self test:[(n1 bitShift:-3) printString = '1600000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '1600000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-3) printString = '1600000'].
+
+ s := s - 1.
+ self test:[(n1 bitShift:s) printString = '800000'].
+ self test:[(n1 bitShift:-4) printString = '800000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '800000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-4) printString = '800000'].
+
+ s := s - 1.
+ self test:[(n1 bitShift:s) printString = '400000'].
+ self test:[(n1 bitShift:-5) printString = '400000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '400000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-5) printString = '400000'].
+
+ s := s - 1.
+ self test:[(n1 bitShift:s) printString = '200000'].
+ self test:[(n1 bitShift:-6) printString = '200000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '200000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-6) printString = '200000'].
+
+ s := s - 1.
+ self test:[(n1 bitShift:s) printString = '100000'].
+ self test:[(n1 bitShift:-7) printString = '100000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '100000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-7) printString = '100000'].
+
+ s := s - 1.
+ self test:[(n1 bitShift:s) printString = '50000'].
+ self test:[(n1 bitShift:-8) printString = '50000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '50000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-8) printString = '50000'].
+
+ s := s - 1.
+ self test:[(n1 bitShift:s) printString = '25000'].
+ self test:[(n1 bitShift:-9) printString = '25000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '25000'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-9) printString = '25000'].
+
+ s := s - 1.
+ self test:[(n1 bitShift:s) printString = '12500'].
+ self test:[(n1 bitShift:-10) printString = '12500'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '12500'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-10) printString = '12500'].
+
+ s := s - 1.
+ self test:[(n1 bitShift:s) printString = '6250'].
+ self test:[(n1 bitShift:-11) printString = '6250'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:s) printString = '6250'].
+ self test:[(n1 perform:'bitShift:' asSymbol with:-11) printString = '6250'].
+
+ "
+ self testIntegerShifts
+ "
+
+ "Created: / 6.6.1999 / 14:47:51 / cg"
+ "Modified: / 9.6.1999 / 17:49:57 / cg"
+!
+
testLargeAddition
"general conversion & arithmetic tests.
Notice, the arithmetic tests are both performed via regular sends
@@ -1221,6 +1352,141 @@
self test:[(n1 * 16) printString = '1600000'].
self test:[(n1 perform:'*' asSymbol with:16) printString = '1600000'].
+ n1 := 1.
+ n2 := 10.
+ self test:[(n1 * n2) printString = '10'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '100'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '1000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '10000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '100000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100000'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '1000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000000'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '10000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000000'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '100000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100000000'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '1000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000000000'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '10000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000000000'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '100000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100000000000'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '1000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000000000000'].
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '10000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000000000000'].
+
+ n1 := 1.
+ n2 := 10.
+ self test:[(n1 * n2) printString = '10'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '100'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '1000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '10000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '100000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100000'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '1000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000000'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '10000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000000'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '100000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100000000'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '1000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000000000'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '10000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000000000'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '100000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100000000000'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '1000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000000000000'].
+ n1 := n1 * 10.
+ self test:[(n1 * n2) printString = '10000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000000000000'].
+
+ n1 := 10.
+ n2 := 10.
+ self test:[(n1 * n2) printString = '100'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '10000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '1000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '100000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100000000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '10000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000000000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '1000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000000000000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '100000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100000000000000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '10000000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000000000000000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '1000000000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000000000000000000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '100000000000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100000000000000000000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '10000000000000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '10000000000000000000000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '1000000000000000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '1000000000000000000000000'].
+ n1 := n1 * 10.
+ n2 := n2 * 10.
+ self test:[(n1 * n2) printString = '100000000000000000000000000'].
+ self test:[(n1 perform:'*' asSymbol with:n2) printString = '100000000000000000000000000'].
+
"
self testSmallIntegerMultiplication1
"