#FEATURE
authorClaus Gittinger <cg@exept.de>
Mon, 01 Feb 2016 15:26:32 +0100
changeset 1304 7d2a27f4e21a
parent 1303 609c8210dd2c
child 1305 d8800e68af7a
#FEATURE class: RegressionTests::IntegerTest added compare checks
RegressionTests__IntegerTest.st
--- a/RegressionTests__IntegerTest.st	Wed Jan 27 19:23:09 2016 +0100
+++ b/RegressionTests__IntegerTest.st	Mon Feb 01 15:26:32 2016 +0100
@@ -1247,6 +1247,8 @@
     self assert:(2 factorial = 2).
     self assert:(10 factorial = 3628800).
     self assert:(11 factorial = 39916800).
+    self assert:(20 factorial = 2432902008176640000).
+    self assert:(50 factorial = 30414093201713378043612608166064768844377641568960512000000000000).
 
     "
      self basicNew testFactorial
@@ -1263,6 +1265,8 @@
     self assert:(6 gcd:9) = 3.
     self assert:(2 gcd:0) = 2.
     self assert:(0 gcd:2) = 2.
+    self assert:(20 factorial gcd:(5*6*7)) = (5*6*7).
+    self assert:(20 factorial gcd:(20 factorial / 20)) = (19 factorial).
 
     "
      self basicNew testGCD
@@ -1746,6 +1750,8 @@
     self assert:(2 isPowerOfTwo).
     self assert:(4 isPowerOfTwo).
     self assert:(3 isPowerOfTwo not).
+    self assert:(16r100000000000000000000000 isPowerOfTwo).
+    self assert:(16r300000000000000000000000 isPowerOfTwo not).
 
     "
      self basicNew testIsPowerOfTwo
@@ -1992,6 +1998,92 @@
     "Modified: / 4.6.1999 / 15:26:55 / cg"
 !
 
+testLargeCompare
+    "compare tests"
+
+    #(
+        ( 16r3fffffff 16r40000000 #less )
+        ( 16r40000000 16r3fffffff #greater )
+        ( 16r40000000 16r40000000 #equal )
+
+        ( 16r40000000 16r40000001 #less )
+        ( 16r40000001 16r40000000 #greater )
+        ( 16r40000001 16r40000001 #equal )
+        
+        ( 16r3fffffffffffffff 16r4000000000000000 #less )
+        ( 16r4000000000000000 16r3fffffffffffffff #greater )
+        ( 16r4000000000000000 16r4000000000000000 #equal )
+
+        ( 16r4000000000000000 16r4000000000000001 #less )
+        ( 16r4000000000000001 16r4000000000000000 #greater )
+        ( 16r4000000000000001 16r4000000000000001 #equal )
+
+        ( 16r3fffffffffffffffffffffff 16r400000000000000000000000 #less )
+        ( 16r400000000000000000000000 16r3fffffffffffffffffffffff #greater )
+        ( 16r400000000000000000000000 16r400000000000000000000000 #equal )
+
+        ( 16r400000000000000000000000 16r400000000000000000000001 #less )
+        ( 16r400000000000000000000001 16r400000000000000000000000 #greater )
+        ( 16r400000000000000000000001 16r400000000000000000000001 #equal )
+
+        ( 16r3fffffff 16r400000000000 #less )
+        ( 16r400000000000 16r3fffffff #greater )
+
+        ( 16r40000000 16r400000000001 #less )
+        ( 16r400000000001 16r40000000 #greater )
+
+        ( 16r3fffffffffffffff 16r40000000000000000000 #less )
+        ( 16r40000000000000000000 16r3fffffffffffffff #greater )
+
+        ( 16r4000000000000000 16r40000000000000000001 #less )
+        ( 16r40000000000000000001 16r4000000000000000 #greater )
+
+        ( 16r3fffffffffffffffffffffff 16r400000000000000000000000 #less )
+        ( 16r400000000000000000000000 16r3fffffffffffffffffffffff #greater )
+        ( 16r400000000000000000000000 16r400000000000000000000000 #equal )
+
+        ( 16r400000000000000000000000 16r400000000000000000000001 #less )
+        ( 16r400000000000000000000001 16r400000000000000000000000 #greater )
+        ( 16r400000000000000000000001 16r400000000000000000000001 #equal )
+    ) do:[:triple |
+        |v1 v2 expected rslt|
+        
+        v1 := triple at:1.
+        v2 := triple at:2.
+        expected := triple at:3.
+        expected == #less ifTrue:[
+            self assert:(v1 < v2).
+            self assert:(v1 <= v2).
+            self assert:(v1 > v2) not.
+            self assert:(v1 >= v2) not.
+            self assert:(v1 = v2) not.
+            self assert:(v1 ~= v2).
+        ].    
+        expected == #greater ifTrue:[
+            self assert:(v1 > v2).
+            self assert:(v1 >= v2).
+            self assert:(v1 < v2) not.
+            self assert:(v1 <= v2) not.
+            self assert:(v1 = v2) not.
+            self assert:(v1 ~= v2).
+        ].    
+        expected == #equal ifTrue:[
+            self assert:(v1 > v2) not.
+            self assert:(v1 >= v2).
+            self assert:(v1 < v2) not.
+            self assert:(v1 <= v2).
+            self assert:(v1 = v2).
+            self assert:(v1 ~= v2) not.
+        ].    
+    ].
+    self assert:(100 factorial < 101 factorial).
+    self assert:(100 factorial > 100 factorial negated).
+    
+    "
+     self basicNew testLargeCompare
+    "
+!
+
 testLargeCompression1
     |l nullBytes|