[MS.Build] simplify IBuildEngine.Build() implementation, and build the argument proje...
[mono.git] / mono / tests / checked.cs
old mode 100755 (executable)
new mode 100644 (file)
index d268de7..f0ee569
@@ -1,7 +1,4 @@
 using System;\r
-using System.Data;\r
-using \r
-System.Data.SqlTypes;\r
 \r
 namespace test {\r
        public class tester {\r
@@ -10,6 +7,7 @@ namespace test {
                public static int Main () {\r
                        float a  = 1e20f;\r
                        int i = 0;\r
+                       uint ui = 0;\r
 \r
                        bool exception = false;\r
 \r
@@ -27,7 +25,7 @@ namespace test {
 \r
 \r
                        if (!exception)\r
-                               return -1;\r
+                               return 1;\r
 \r
                        exception = false;\r
 \r
@@ -39,11 +37,12 @@ namespace test {
                                        i = (int)a;\r
                                }\r
                        } catch (Exception) {\r
-                               return -2;\r
+                               return 2;\r
                        }\r
 \r
+\r
                        if (i != 100000)\r
-                               return -3;\r
+                               return 3;\r
                \r
                        exception = false;\r
 \r
@@ -59,10 +58,131 @@ namespace test {
                        }\r
                        catch (Exception) {\r
                        }                       \r
+                       exception = false;\r
+\r
+\r
+                       a  = -1e30f;\r
+                       try {\r
+                               uint b = (uint) a;\r
+                               checked {\r
+                                       ui = (uint)a;\r
+                               }\r
+\r
+                               Console.WriteLine("No Exception");\r
+                       } \r
+                       catch (OverflowException) {\r
+                               exception = true;\r
+                       }\r
+                       catch (Exception) {\r
+                       }\r
+\r
 \r
                        if (!exception)\r
-                               return -4;\r
+                               return 4;\r
 \r
+                       a  = 1e5f;\r
+                       try {\r
+                               uint b = (uint) a;\r
+                               checked {\r
+                                       ui = (uint)a;\r
+                               }\r
+                       } \r
+                       catch (Exception) {\r
+                               return 5;\r
+                       }\r
+\r
+                       if (ui != 100000)\r
+                               return 6;\r
+\r
+                       // Check mul.ovf\r
+                       checked {\r
+                               int l;\r
+                               int m;\r
+\r
+                               int[][] cases = new int [][] { \r
+                                       new int [] {0, 0, 0},\r
+                                       new int [] {-5, 0, 0},\r
+                                       new int [] {3, -5, -15},\r
+                                       new int [] {3, 5, 15},\r
+                                       new int [] {-3, -5, 15},\r
+                                       new int [] {-3, 5, -15},\r
+                                       new int [] {-1, 32767, -32767},\r
+                                       new int [] {32767, -1, -32767}};\r
+\r
+\r
+                               for (int j = 0; j < cases.Length; ++j)\r
+                                       if (cases [j][0] * cases [j][1] != cases [j][2])\r
+                                               return 7 + j;\r
+                       }\r
+\r
+                       checked {\r
+                               int j;\r
+                               int k;\r
+\r
+                               j = k = 0;\r
+                               if (j * k != 0)\r
+                                       return 20;\r
+\r
+                               j = -5;\r
+                               k = 0;\r
+                               if (j * k != 0)\r
+                                       return 21;\r
+\r
+                               j = 0;\r
+                               k = -5;\r
+                               if (j * k != 0)\r
+                                       return 22;\r
+\r
+                               j = 3;\r
+                               k = -5;\r
+                               if (j * k != -15)\r
+                                       return 23;\r
+\r
+                               j = 3;\r
+                               k = 5;\r
+                               if (j * k != 15)\r
+                                       return 24;\r
+\r
+                               j = -3;\r
+                               k = -5;\r
+                               if (j * k != 15)\r
+                                       return 25;\r
+\r
+                               j = -3;\r
+                               k = 5;\r
+                               if (j * k != -15)\r
+                                       return 26;\r
+\r
+                               j = -1;\r
+                               k = 32767;\r
+                               if (j * k != -32767)\r
+                                       return 27;\r
+                               \r
+                               j = 32767;\r
+                               k = -1;\r
+                               if (j * k != -32767)\r
+                                       return 28;\r
+                       }\r
+\r
+                       checked {\r
+                               long l;\r
+                               long m;\r
+\r
+                               long[][] cases = new long [][] { \r
+                                       new long [] {0, 0, 0},\r
+                                       new long [] {-5, 0, 0},\r
+                                       new long [] {3, -5, -15},\r
+                                       new long [] {3, 5, 15},\r
+                                       new long [] {-3, -5, 15},\r
+                                       new long [] {-3, 5, -15},\r
+                                       new long [] {-1, 2147483647, -2147483647},\r
+                                       new long [] {2147483647, -1, -2147483647}};\r
+\r
+                               for (int j = 0; j < cases.Length; ++j)\r
+                                       if (cases [j][0] * cases [j][1] != cases [j][2])\r
+                                               return 29 + j;\r
+                       }\r
+                               \r
                        Console.WriteLine("test-ok");\r
 \r
                        return 0;\r