checkin from browser
authorClaus Gittinger <cg@exept.de>
Tue, 26 Oct 1999 22:34:42 +0200
changeset 41 7b7d7890a939
parent 40 17d7ab809846
child 42 b7e57becd932
checkin from browser
RegressionTests__IntegerTest.st
--- 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
     "