svn path=/trunk/mcs/; revision=104772
[mono.git] / mcs / tests / test-646.cs
1 using System;\r
2 \r
3 // Undocumented IntPtr and UIntPtr conversion exceptions\r
4 \r
5 class Program\r
6 {\r
7         static long CastUIntPtrToInt64 (UIntPtr ptr)\r
8         {\r
9                 return (long) ptr;\r
10         }\r
11         \r
12         static uint CastIntPtrToUInt32 (IntPtr ptr)\r
13         {\r
14                 return (uint) ptr;\r
15         }\r
16         \r
17         static int Main ()\r
18         {\r
19                 if (IntPtr.Size < 8) {\r
20                         if (CastUIntPtrToInt64 (new UIntPtr (uint.MaxValue)) != uint.MaxValue)\r
21                                 return 1;\r
22                         if (CastIntPtrToUInt32 (new IntPtr (int.MaxValue)) != int.MaxValue)\r
23                                 return 2;\r
24                 } else {
25                         if (CastUIntPtrToInt64 (new UIntPtr (ulong.MaxValue)) != -1)
26                                 return 3;
27                                 \r
28                         if (CastIntPtrToUInt32 (new IntPtr (long.MaxValue)) != uint.MaxValue)\r
29                                 return 4;\r
30                 }\r
31                 \r
32                 return 0;\r
33         }\r
34 }\r