NaCl runtime fixes
[mono.git] / mono / mini / basic-math.cs
index a1e5030abefc451ab484b6c05f13232e7870e383..4482c913af6f88513c7e0465b2f6b954ce78e6da 100644 (file)
@@ -25,8 +25,8 @@ using System.Reflection;
 
 class Tests {
 
-       public static int Main () {
-               return TestDriver.RunTests (typeof (Tests));
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
        }
        
        public static int test_0_sin_precision () {
@@ -196,6 +196,22 @@ class Tests {
                                return (int)b;
                        if (Math.Min (b, a) != b)
                                return (int)b;
+               }
+
+               if (Math.Min ((ulong)5, (ulong)6) != 5)
+                       return 4;
+               if (Math.Min ((ulong)6, (ulong)5) != 5)
+                       return 5;
+
+               ulong la = (ulong)long.MaxValue + 10;
+
+               for (ulong b = 7; b <= 10; ++b) {
+                       if (Math.Min (la, b) != b)
+                               return (int)b;
+                       if (Math.Min (b, la) != b)
+                               return (int)b;
+               }
+
                return 0;
        }
 
@@ -208,6 +224,21 @@ class Tests {
                        if (Math.Max (b, a) != a)
                                return (int)b;
                }
+
+               if (Math.Max ((ulong)5, (ulong)6) != 6)
+                       return 4;
+               if (Math.Max ((ulong)6, (ulong)5) != 6)
+                       return 5;
+
+               ulong la = (ulong)long.MaxValue + 10;
+
+               for (ulong b = 7; b <= 10; ++b) {
+                       if (Math.Max (la, b) != la)
+                               return (int)b;
+                       if (Math.Max (b, la) != la)
+                               return (int)b;
+               }
+
                return 0;
        }
 
@@ -218,4 +249,41 @@ class Tests {
                        return 1;
                return 0;
        }
+
+       public static int test_0_round () {
+               if (Math.Round (5.0) != 5.0)
+                       return 1;
+
+               if (Math.Round (5.000000000000001) != 5.0)
+                       return 2;
+
+               if (Math.Round (5.499999999999999) != 5.0)
+                       return 3;
+
+               if (Math.Round (5.5) != 6.0)
+                       return 4;
+
+               if (Math.Round (5.999999999999999) != 6.0)
+                       return 5;
+
+               if (Math.Round (Double.Epsilon) != 0)
+                       return 6;
+
+               if (!Double.IsNaN (Math.Round (Double.NaN)))
+                       return 7;
+
+               if (!Double.IsPositiveInfinity (Math.Round (Double.PositiveInfinity)))
+                       return 8;
+
+               if (!Double.IsNegativeInfinity (Math.Round (Double.NegativeInfinity)))
+                       return 9;
+
+               if (Math.Round (Double.MinValue) != Double.MinValue)
+                       return 10;
+
+               if (Math.Round (Double.MaxValue) != Double.MaxValue)
+                       return 11;
+
+               return 0;
+       }
 }