2003-08-26 Martin Baulig <martin@ximian.com>
[mono.git] / mcs / tests / casts.cs
1 using System;
2 class Test {
3
4         static void receive_int (int a)
5         {
6                 Console.Write ("        ");
7                 Console.WriteLine (a);
8         }
9
10         static void receive_uint (uint a)
11         {
12                 Console.Write ("        ");
13                 Console.WriteLine (a);
14         }
15
16         static void receive_short (short a)
17         {
18                 Console.Write ("        ");
19                 Console.WriteLine (a);
20         }
21
22         static void receive_ushort (ushort a)
23         {
24                 Console.Write ("        ");
25                 Console.WriteLine (a);
26         }
27
28         static void receive_long (long a)
29         {
30                 Console.Write ("        ");
31                 Console.WriteLine (a);
32         }
33
34         static void receive_ulong (ulong a)
35         {
36                 Console.Write ("        ");
37                 Console.WriteLine (a);
38         }
39
40         static void receive_sbyte (sbyte a)
41         {
42                 Console.Write ("        ");
43                 Console.WriteLine (a);
44         }
45
46         static void receive_byte (byte a)
47         {
48                 Console.Write ("        ");
49                 Console.WriteLine (a);
50         }
51
52         static void receive_char (char a)
53         {
54                 Console.Write ("        ");
55                 Console.WriteLine (a);
56         }
57
58         static void probe_int()
59         {
60                 int zero = (int) 0;
61                 int min = (int) int.MinValue;
62                 int max = (int) int.MaxValue;
63
64                 Console.WriteLine ("Testing: int");
65
66                 Console.WriteLine ("   arg: int (int)");
67
68                 receive_int (unchecked((int) zero));
69                 receive_int (unchecked((int) min));
70                 receive_int (unchecked((int) max));
71                 Console.WriteLine ("   arg: uint (int)");
72
73                 receive_uint (unchecked((uint) zero));
74                 receive_uint (unchecked((uint) min));
75                 receive_uint (unchecked((uint) max));
76                 Console.WriteLine ("   arg: short (int)");
77
78                 receive_short (unchecked((short) zero));
79                 receive_short (unchecked((short) min));
80                 receive_short (unchecked((short) max));
81                 Console.WriteLine ("   arg: ushort (int)");
82
83                 receive_ushort (unchecked((ushort) zero));
84                 receive_ushort (unchecked((ushort) min));
85                 receive_ushort (unchecked((ushort) max));
86                 Console.WriteLine ("   arg: long (int)");
87
88                 receive_long (unchecked((long) zero));
89                 receive_long (unchecked((long) min));
90                 receive_long (unchecked((long) max));
91                 Console.WriteLine ("   arg: ulong (int)");
92
93                 receive_ulong (unchecked((ulong) zero));
94                 receive_ulong (unchecked((ulong) min));
95                 receive_ulong (unchecked((ulong) max));
96                 Console.WriteLine ("   arg: sbyte (int)");
97
98                 receive_sbyte (unchecked((sbyte) zero));
99                 receive_sbyte (unchecked((sbyte) min));
100                 receive_sbyte (unchecked((sbyte) max));
101                 Console.WriteLine ("   arg: byte (int)");
102
103                 receive_byte (unchecked((byte) zero));
104                 receive_byte (unchecked((byte) min));
105                 receive_byte (unchecked((byte) max));
106                 Console.WriteLine ("   arg: char (int)");
107
108                 receive_char (unchecked((char) zero));
109                 receive_char (unchecked((char) min));
110                 receive_char (unchecked((char) max));
111         }
112
113         static void probe_uint()
114         {
115                 uint zero = (uint) 0;
116                 uint min = (uint) uint.MinValue;
117                 uint max = (uint) uint.MaxValue;
118
119                 Console.WriteLine ("Testing: uint");
120
121                 Console.WriteLine ("   arg: int (uint)");
122
123                 receive_int (unchecked((int) zero));
124                 receive_int (unchecked((int) min));
125                 receive_int (unchecked((int) max));
126                 Console.WriteLine ("   arg: uint (uint)");
127
128                 receive_uint (unchecked((uint) zero));
129                 receive_uint (unchecked((uint) min));
130                 receive_uint (unchecked((uint) max));
131                 Console.WriteLine ("   arg: short (uint)");
132
133                 receive_short (unchecked((short) zero));
134                 receive_short (unchecked((short) min));
135                 receive_short (unchecked((short) max));
136                 Console.WriteLine ("   arg: ushort (uint)");
137
138                 receive_ushort (unchecked((ushort) zero));
139                 receive_ushort (unchecked((ushort) min));
140                 receive_ushort (unchecked((ushort) max));
141                 Console.WriteLine ("   arg: long (uint)");
142
143                 receive_long (unchecked((long) zero));
144                 receive_long (unchecked((long) min));
145                 receive_long (unchecked((long) max));
146                 Console.WriteLine ("   arg: ulong (uint)");
147
148                 receive_ulong (unchecked((ulong) zero));
149                 receive_ulong (unchecked((ulong) min));
150                 receive_ulong (unchecked((ulong) max));
151                 Console.WriteLine ("   arg: sbyte (uint)");
152
153                 receive_sbyte (unchecked((sbyte) zero));
154                 receive_sbyte (unchecked((sbyte) min));
155                 receive_sbyte (unchecked((sbyte) max));
156                 Console.WriteLine ("   arg: byte (uint)");
157
158                 receive_byte (unchecked((byte) zero));
159                 receive_byte (unchecked((byte) min));
160                 receive_byte (unchecked((byte) max));
161                 Console.WriteLine ("   arg: char (uint)");
162
163                 receive_char (unchecked((char) zero));
164                 receive_char (unchecked((char) min));
165                 receive_char (unchecked((char) max));
166         }
167
168         static void probe_short()
169         {
170                 short zero = (short) 0;
171                 short min = (short) short.MinValue;
172                 short max = (short) short.MaxValue;
173
174                 Console.WriteLine ("Testing: short");
175
176                 Console.WriteLine ("   arg: int (short)");
177
178                 receive_int (unchecked((int) zero));
179                 receive_int (unchecked((int) min));
180                 receive_int (unchecked((int) max));
181                 Console.WriteLine ("   arg: uint (short)");
182
183                 receive_uint (unchecked((uint) zero));
184                 receive_uint (unchecked((uint) min));
185                 receive_uint (unchecked((uint) max));
186                 Console.WriteLine ("   arg: short (short)");
187
188                 receive_short (unchecked((short) zero));
189                 receive_short (unchecked((short) min));
190                 receive_short (unchecked((short) max));
191                 Console.WriteLine ("   arg: ushort (short)");
192
193                 receive_ushort (unchecked((ushort) zero));
194                 receive_ushort (unchecked((ushort) min));
195                 receive_ushort (unchecked((ushort) max));
196                 Console.WriteLine ("   arg: long (short)");
197
198                 receive_long (unchecked((long) zero));
199                 receive_long (unchecked((long) min));
200                 receive_long (unchecked((long) max));
201                 Console.WriteLine ("   arg: ulong (short)");
202
203                 receive_ulong (unchecked((ulong) zero));
204                 receive_ulong (unchecked((ulong) min));
205                 receive_ulong (unchecked((ulong) max));
206                 Console.WriteLine ("   arg: sbyte (short)");
207
208                 receive_sbyte (unchecked((sbyte) zero));
209                 receive_sbyte (unchecked((sbyte) min));
210                 receive_sbyte (unchecked((sbyte) max));
211                 Console.WriteLine ("   arg: byte (short)");
212
213                 receive_byte (unchecked((byte) zero));
214                 receive_byte (unchecked((byte) min));
215                 receive_byte (unchecked((byte) max));
216                 Console.WriteLine ("   arg: char (short)");
217
218                 receive_char (unchecked((char) zero));
219                 receive_char (unchecked((char) min));
220                 receive_char (unchecked((char) max));
221         }
222
223         static void probe_ushort()
224         {
225                 ushort zero = (ushort) 0;
226                 ushort min = (ushort) ushort.MinValue;
227                 ushort max = (ushort) ushort.MaxValue;
228
229                 Console.WriteLine ("Testing: ushort");
230
231                 Console.WriteLine ("   arg: int (ushort)");
232
233                 receive_int (unchecked((int) zero));
234                 receive_int (unchecked((int) min));
235                 receive_int (unchecked((int) max));
236                 Console.WriteLine ("   arg: uint (ushort)");
237
238                 receive_uint (unchecked((uint) zero));
239                 receive_uint (unchecked((uint) min));
240                 receive_uint (unchecked((uint) max));
241                 Console.WriteLine ("   arg: short (ushort)");
242
243                 receive_short (unchecked((short) zero));
244                 receive_short (unchecked((short) min));
245                 receive_short (unchecked((short) max));
246                 Console.WriteLine ("   arg: ushort (ushort)");
247
248                 receive_ushort (unchecked((ushort) zero));
249                 receive_ushort (unchecked((ushort) min));
250                 receive_ushort (unchecked((ushort) max));
251                 Console.WriteLine ("   arg: long (ushort)");
252
253                 receive_long (unchecked((long) zero));
254                 receive_long (unchecked((long) min));
255                 receive_long (unchecked((long) max));
256                 Console.WriteLine ("   arg: ulong (ushort)");
257
258                 receive_ulong (unchecked((ulong) zero));
259                 receive_ulong (unchecked((ulong) min));
260                 receive_ulong (unchecked((ulong) max));
261                 Console.WriteLine ("   arg: sbyte (ushort)");
262
263                 receive_sbyte (unchecked((sbyte) zero));
264                 receive_sbyte (unchecked((sbyte) min));
265                 receive_sbyte (unchecked((sbyte) max));
266                 Console.WriteLine ("   arg: byte (ushort)");
267
268                 receive_byte (unchecked((byte) zero));
269                 receive_byte (unchecked((byte) min));
270                 receive_byte (unchecked((byte) max));
271                 Console.WriteLine ("   arg: char (ushort)");
272
273                 receive_char (unchecked((char) zero));
274                 receive_char (unchecked((char) min));
275                 receive_char (unchecked((char) max));
276         }
277
278         static void probe_long()
279         {
280                 long zero = (long) 0;
281                 long min = (long) long.MinValue;
282                 long max = (long) long.MaxValue;
283
284                 Console.WriteLine ("Testing: long");
285
286                 Console.WriteLine ("   arg: int (long)");
287
288                 receive_int (unchecked((int) zero));
289                 receive_int (unchecked((int) min));
290                 receive_int (unchecked((int) max));
291                 Console.WriteLine ("   arg: uint (long)");
292
293                 receive_uint (unchecked((uint) zero));
294                 receive_uint (unchecked((uint) min));
295                 receive_uint (unchecked((uint) max));
296                 Console.WriteLine ("   arg: short (long)");
297
298                 receive_short (unchecked((short) zero));
299                 receive_short (unchecked((short) min));
300                 receive_short (unchecked((short) max));
301                 Console.WriteLine ("   arg: ushort (long)");
302
303                 receive_ushort (unchecked((ushort) zero));
304                 receive_ushort (unchecked((ushort) min));
305                 receive_ushort (unchecked((ushort) max));
306                 Console.WriteLine ("   arg: long (long)");
307
308                 receive_long (unchecked((long) zero));
309                 receive_long (unchecked((long) min));
310                 receive_long (unchecked((long) max));
311                 Console.WriteLine ("   arg: ulong (long)");
312
313                 receive_ulong (unchecked((ulong) zero));
314                 receive_ulong (unchecked((ulong) min));
315                 receive_ulong (unchecked((ulong) max));
316                 Console.WriteLine ("   arg: sbyte (long)");
317
318                 receive_sbyte (unchecked((sbyte) zero));
319                 receive_sbyte (unchecked((sbyte) min));
320                 receive_sbyte (unchecked((sbyte) max));
321                 Console.WriteLine ("   arg: byte (long)");
322
323                 receive_byte (unchecked((byte) zero));
324                 receive_byte (unchecked((byte) min));
325                 receive_byte (unchecked((byte) max));
326                 Console.WriteLine ("   arg: char (long)");
327
328                 receive_char (unchecked((char) zero));
329                 receive_char (unchecked((char) min));
330                 receive_char (unchecked((char) max));
331         }
332
333         static void probe_ulong()
334         {
335                 ulong zero = (ulong) 0;
336                 ulong min = (ulong) ulong.MinValue;
337                 ulong max = (ulong) ulong.MaxValue;
338
339                 Console.WriteLine ("Testing: ulong");
340
341                 Console.WriteLine ("   arg: int (ulong)");
342
343                 receive_int (unchecked((int) zero));
344                 receive_int (unchecked((int) min));
345                 receive_int (unchecked((int) max));
346                 Console.WriteLine ("   arg: uint (ulong)");
347
348                 receive_uint (unchecked((uint) zero));
349                 receive_uint (unchecked((uint) min));
350                 receive_uint (unchecked((uint) max));
351                 Console.WriteLine ("   arg: short (ulong)");
352
353                 receive_short (unchecked((short) zero));
354                 receive_short (unchecked((short) min));
355                 receive_short (unchecked((short) max));
356                 Console.WriteLine ("   arg: ushort (ulong)");
357
358                 receive_ushort (unchecked((ushort) zero));
359                 receive_ushort (unchecked((ushort) min));
360                 receive_ushort (unchecked((ushort) max));
361                 Console.WriteLine ("   arg: long (ulong)");
362
363                 receive_long (unchecked((long) zero));
364                 receive_long (unchecked((long) min));
365                 receive_long (unchecked((long) max));
366                 Console.WriteLine ("   arg: ulong (ulong)");
367
368                 receive_ulong (unchecked((ulong) zero));
369                 receive_ulong (unchecked((ulong) min));
370                 receive_ulong (unchecked((ulong) max));
371                 Console.WriteLine ("   arg: sbyte (ulong)");
372
373                 receive_sbyte (unchecked((sbyte) zero));
374                 receive_sbyte (unchecked((sbyte) min));
375                 receive_sbyte (unchecked((sbyte) max));
376                 Console.WriteLine ("   arg: byte (ulong)");
377
378                 receive_byte (unchecked((byte) zero));
379                 receive_byte (unchecked((byte) min));
380                 receive_byte (unchecked((byte) max));
381                 Console.WriteLine ("   arg: char (ulong)");
382
383                 receive_char (unchecked((char) zero));
384                 receive_char (unchecked((char) min));
385                 receive_char (unchecked((char) max));
386         }
387
388         static void probe_sbyte()
389         {
390                 sbyte zero = (sbyte) 0;
391                 sbyte min = (sbyte) sbyte.MinValue;
392                 sbyte max = (sbyte) sbyte.MaxValue;
393
394                 Console.WriteLine ("Testing: sbyte");
395
396                 Console.WriteLine ("   arg: int (sbyte)");
397
398                 receive_int (unchecked((int) zero));
399                 receive_int (unchecked((int) min));
400                 receive_int (unchecked((int) max));
401                 Console.WriteLine ("   arg: uint (sbyte)");
402
403                 receive_uint (unchecked((uint) zero));
404                 receive_uint (unchecked((uint) min));
405                 receive_uint (unchecked((uint) max));
406                 Console.WriteLine ("   arg: short (sbyte)");
407
408                 receive_short (unchecked((short) zero));
409                 receive_short (unchecked((short) min));
410                 receive_short (unchecked((short) max));
411                 Console.WriteLine ("   arg: ushort (sbyte)");
412
413                 receive_ushort (unchecked((ushort) zero));
414                 receive_ushort (unchecked((ushort) min));
415                 receive_ushort (unchecked((ushort) max));
416                 Console.WriteLine ("   arg: long (sbyte)");
417
418                 receive_long (unchecked((long) zero));
419                 receive_long (unchecked((long) min));
420                 receive_long (unchecked((long) max));
421                 Console.WriteLine ("   arg: ulong (sbyte)");
422
423                 receive_ulong (unchecked((ulong) zero));
424                 receive_ulong (unchecked((ulong) min));
425                 receive_ulong (unchecked((ulong) max));
426                 Console.WriteLine ("   arg: sbyte (sbyte)");
427
428                 receive_sbyte (unchecked((sbyte) zero));
429                 receive_sbyte (unchecked((sbyte) min));
430                 receive_sbyte (unchecked((sbyte) max));
431                 Console.WriteLine ("   arg: byte (sbyte)");
432
433                 receive_byte (unchecked((byte) zero));
434                 receive_byte (unchecked((byte) min));
435                 receive_byte (unchecked((byte) max));
436                 Console.WriteLine ("   arg: char (sbyte)");
437
438                 receive_char (unchecked((char) zero));
439                 receive_char (unchecked((char) min));
440                 receive_char (unchecked((char) max));
441         }
442
443         static void probe_byte()
444         {
445                 byte zero = (byte) 0;
446                 byte min = (byte) byte.MinValue;
447                 byte max = (byte) byte.MaxValue;
448
449                 Console.WriteLine ("Testing: byte");
450
451                 Console.WriteLine ("   arg: int (byte)");
452
453                 receive_int (unchecked((int) zero));
454                 receive_int (unchecked((int) min));
455                 receive_int (unchecked((int) max));
456                 Console.WriteLine ("   arg: uint (byte)");
457
458                 receive_uint (unchecked((uint) zero));
459                 receive_uint (unchecked((uint) min));
460                 receive_uint (unchecked((uint) max));
461                 Console.WriteLine ("   arg: short (byte)");
462
463                 receive_short (unchecked((short) zero));
464                 receive_short (unchecked((short) min));
465                 receive_short (unchecked((short) max));
466                 Console.WriteLine ("   arg: ushort (byte)");
467
468                 receive_ushort (unchecked((ushort) zero));
469                 receive_ushort (unchecked((ushort) min));
470                 receive_ushort (unchecked((ushort) max));
471                 Console.WriteLine ("   arg: long (byte)");
472
473                 receive_long (unchecked((long) zero));
474                 receive_long (unchecked((long) min));
475                 receive_long (unchecked((long) max));
476                 Console.WriteLine ("   arg: ulong (byte)");
477
478                 receive_ulong (unchecked((ulong) zero));
479                 receive_ulong (unchecked((ulong) min));
480                 receive_ulong (unchecked((ulong) max));
481                 Console.WriteLine ("   arg: sbyte (byte)");
482
483                 receive_sbyte (unchecked((sbyte) zero));
484                 receive_sbyte (unchecked((sbyte) min));
485                 receive_sbyte (unchecked((sbyte) max));
486                 Console.WriteLine ("   arg: byte (byte)");
487
488                 receive_byte (unchecked((byte) zero));
489                 receive_byte (unchecked((byte) min));
490                 receive_byte (unchecked((byte) max));
491                 Console.WriteLine ("   arg: char (byte)");
492
493                 receive_char (unchecked((char) zero));
494                 receive_char (unchecked((char) min));
495                 receive_char (unchecked((char) max));
496         }
497
498         static void probe_char()
499         {
500                 char zero = (char) 0;
501                 char min = (char) char.MinValue;
502                 char max = (char) char.MaxValue;
503
504                 Console.WriteLine ("Testing: char");
505
506                 Console.WriteLine ("   arg: int (char)");
507
508                 receive_int (unchecked((int) zero));
509                 receive_int (unchecked((int) min));
510                 receive_int (unchecked((int) max));
511                 Console.WriteLine ("   arg: uint (char)");
512
513                 receive_uint (unchecked((uint) zero));
514                 receive_uint (unchecked((uint) min));
515                 receive_uint (unchecked((uint) max));
516                 Console.WriteLine ("   arg: short (char)");
517
518                 receive_short (unchecked((short) zero));
519                 receive_short (unchecked((short) min));
520                 receive_short (unchecked((short) max));
521                 Console.WriteLine ("   arg: ushort (char)");
522
523                 receive_ushort (unchecked((ushort) zero));
524                 receive_ushort (unchecked((ushort) min));
525                 receive_ushort (unchecked((ushort) max));
526                 Console.WriteLine ("   arg: long (char)");
527
528                 receive_long (unchecked((long) zero));
529                 receive_long (unchecked((long) min));
530                 receive_long (unchecked((long) max));
531                 Console.WriteLine ("   arg: ulong (char)");
532
533                 receive_ulong (unchecked((ulong) zero));
534                 receive_ulong (unchecked((ulong) min));
535                 receive_ulong (unchecked((ulong) max));
536                 Console.WriteLine ("   arg: sbyte (char)");
537
538                 receive_sbyte (unchecked((sbyte) zero));
539                 receive_sbyte (unchecked((sbyte) min));
540                 receive_sbyte (unchecked((sbyte) max));
541                 Console.WriteLine ("   arg: byte (char)");
542
543                 receive_byte (unchecked((byte) zero));
544                 receive_byte (unchecked((byte) min));
545                 receive_byte (unchecked((byte) max));
546                 Console.WriteLine ("   arg: char (char)");
547
548                 receive_char (unchecked((char) zero));
549                 receive_char (unchecked((char) min));
550                 receive_char (unchecked((char) max));
551         }
552
553         static void Main ()
554         {
555                 probe_int ();
556                 probe_uint ();
557                 probe_short ();
558                 probe_ushort ();
559                 probe_long ();
560                 probe_ulong ();
561                 probe_sbyte ();
562                 probe_byte ();
563                 probe_char ();
564         }
565 }
566