Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mcs / tests / test-46.cs
1 //
2 // This test probes the various explicit unboxing casts
3 //
4 using System;
5
6 class X {
7         static int cast_int (object o) { return (int) o; }
8         static uint cast_uint (object o) { return (uint) o; }
9         static short cast_short (object o) { return (short) o; }
10         static char cast_char (object o) { return (char) o; }
11         static ushort cast_ushort (object o) { return (ushort) o; }
12         static byte cast_byte (object o) { return (byte) o; }
13         static sbyte cast_sbyte (object o) { return (sbyte) o; }
14         static long cast_long (object o) { return (long) o; }
15         static ulong cast_ulong (object o) { return (ulong) o; }
16         static float cast_float (object o) { return (float) o; }
17         static double cast_double (object o) { return (double) o; }
18         static bool cast_bool (object o) { return (bool) o; }
19
20         public static int Main ()
21         {
22                 if (cast_int ((object) -1) != -1)
23                         return 1;
24                 if (cast_int ((object) 1) != 1)
25                         return 2;
26                 if (cast_int ((object) Int32.MaxValue) != Int32.MaxValue)
27                         return 1;
28                 if (cast_int ((object) Int32.MinValue) != Int32.MinValue)
29                         return 2;
30                 if (cast_int ((object) 0) != 0)
31                         return 3;
32
33                 if (cast_uint ((object) (uint)0) != 0)
34                         return 4;
35                 if (cast_uint ((object) (uint) 1) != 1)
36                         return 5;
37                 if (cast_uint ((object) (uint) UInt32.MaxValue) != UInt32.MaxValue)
38                         return 6;
39                 if (cast_uint ((object) (uint) UInt32.MinValue) != UInt32.MinValue)
40                         return 7;
41
42                 if (cast_ushort ((object) (ushort) 1) != 1)
43                         return 8;
44                 if (cast_ushort ((object) (ushort) UInt16.MaxValue) != UInt16.MaxValue)
45                         return 9;
46                 if (cast_ushort ((object) (ushort) UInt16.MinValue) != UInt16.MinValue)
47                         return 10;
48                 if (cast_ushort ((object) (ushort) 0) != 0)
49                         return 11;
50
51                 if (cast_short ((object) (short)-1) != -1)
52                         return 12;
53                 if (cast_short ((object) (short) 1) != 1)
54                         return 13;
55                 if (cast_short ((object) (short) Int16.MaxValue) != Int16.MaxValue)
56                         return 14;
57                 if (cast_short ((object) (short) Int16.MinValue) != Int16.MinValue)
58                         return 15;
59                 if (cast_short ((object) (short) 0) != 0)
60                         return 16;
61
62                 if (cast_byte ((object) (byte)1) != 1)
63                         return 17;
64                 if (cast_byte ((object) (byte) Byte.MaxValue) != Byte.MaxValue)
65                         return 18;
66                 if (cast_byte ((object) (byte) Byte.MinValue) != Byte.MinValue)
67                         return 19;
68                 if (cast_byte ((object) (byte) 0) != 0)
69                         return 20;
70
71                 if (cast_sbyte ((object) (sbyte) -1) != -1)
72                         return 21;
73                 if (cast_sbyte ((object) (sbyte) 1) != 1)
74                         return 22;
75                 if (cast_sbyte ((object) (sbyte) SByte.MaxValue) != SByte.MaxValue)
76                         return 23;
77                 if (cast_sbyte ((object) (sbyte)SByte.MinValue) != SByte.MinValue)
78                         return 24;
79                 if (cast_sbyte ((object) (sbyte) 0) != 0)
80                         return 25;
81                 
82
83                 if (cast_long ((object) (long) -1) != -1)
84                         return 26;
85                 if (cast_long ((object) (long) 1) != 1)
86                         return 27;
87                 if (cast_long ((object) (long) Int64.MaxValue) != Int64.MaxValue)
88                         return 28;
89                 if (cast_long ((object) (long) Int64.MinValue) != Int64.MinValue)
90                         return 29;
91                 if (cast_long ((object) (long) 0) != 0)
92                         return 30;
93
94                 if (cast_ulong ((object) (ulong) 0) != 0)
95                         return 31;
96                 if (cast_ulong ((object) (ulong) 1) != 1)
97                         return 32;
98                 if (cast_ulong ((object) (ulong) UInt64.MaxValue) != UInt64.MaxValue)
99                         return 33;
100                 if (cast_ulong ((object) (ulong) UInt64.MinValue) != UInt64.MinValue)
101                         return 34;
102
103                 if (cast_double ((object) (double) -1) != -1)
104                         return 35;
105                 if (cast_double ((object) (double) 1) != 1)
106                         return 36;
107                 if (cast_double ((object) (double) Double.MaxValue) != Double.MaxValue)
108                         return 37;
109                 if (cast_double ((object) (double) Double.MinValue) != Double.MinValue)
110                         return 38;
111                 if (cast_double ((object) (double) 0) != 0)
112                         return 39;
113
114                 if (cast_float ((object) (float) -1) != -1)
115                         return 40;
116                 if (cast_float ((object) (float) 1) != 1)
117                         return 41;
118                 if (cast_float ((object) (float)Single.MaxValue) != Single.MaxValue)
119                         return 42;
120                 if (cast_float ((object) (float) Single.MinValue) != Single.MinValue)
121                         return 43;
122                 if (cast_float ((object) (float) 0) != 0)
123                         return 44;
124
125                 return 0;
126         }
127 }