merge from trunk revisions 58933, 58935, 58936
[mono.git] / mcs / class / corlib / Test / System / ConvertTest.cs
1 // TestConvert.cs - NUnit Test Cases for System.Convert class
2 //
3 // Krister Hansson (ds99krha@thn.htu.se)
4 // Andreas Jonsson (ds99anjn@thn.htu.se)
5 // 
6 // (C) Krister Hansson & Andreas Jonsson
7 // 
8
9 using NUnit.Framework;
10 using System;
11 using System.Globalization;
12
13 namespace MonoTests.System {
14
15         [TestFixture]
16         public class ConvertTest : Assertion {
17
18                 bool boolTrue;
19                 bool boolFalse;
20                 byte tryByte;
21                 char tryChar;
22                 DateTime tryDT;
23                 decimal tryDec;
24                 double tryDbl;
25                 short tryInt16;
26                 int tryInt32;
27                 long tryInt64;
28                 object tryObj;
29                 sbyte trySByte;
30                 float tryFloat;
31                 string falseString;
32                 string trueString;
33                 string nullString;
34                 string tryStr;
35                 ushort tryUI16;
36                 uint tryUI32;
37                 ulong tryUI64;
38                 CultureInfo ci;
39
40                 [SetUp]         
41                 public void SetUp ()
42                 {
43                         boolTrue = true;
44                         boolFalse = false;
45                         tryByte = 0;
46                         tryChar = 'a';
47                         tryDT = new DateTime(2002,1,1);
48                         tryDec = 1234.2345m;
49                         tryDbl = 0;
50                         tryInt16 = 1234;
51                         tryInt32 = 12345;
52                         tryInt64 = 123456789012;
53                         tryObj = new Object();
54                         trySByte = 123;
55                         tryFloat = 1234.2345f;
56                         falseString = "false";
57                         trueString = "true";
58                         nullString = "null";
59                         tryStr = "foobar";
60                         tryUI16 = 34567;
61                         tryUI32 = 567891234;
62                         tryUI64 = 0;
63                         ci = new CultureInfo("en-US");
64                         ci.NumberFormat.NumberDecimalDigits = 3;
65                 }
66
67                 public void TestChangeType() {
68                         int iTest = 1;
69                         try {
70                                 AssertEquals("#A01", (short)12345, Convert.ChangeType(tryInt32, typeof(short)));
71                                 iTest++;
72                                 AssertEquals("#A02", 'A', Convert.ChangeType(65, typeof(char)));
73                                 iTest++;
74                                 AssertEquals("#A03", 66, Convert.ChangeType('B', typeof(int)));
75                                 iTest++;
76                                 AssertEquals("#A04", ((ulong)12345), Convert.ChangeType(tryInt32, typeof(ulong)));
77                                 
78                                 iTest++;
79                                 AssertEquals("#A05", true, Convert.ChangeType(tryDec, TypeCode.Boolean));
80                                 iTest++;
81                                 AssertEquals("#A06", 'f', Convert.ChangeType("f", TypeCode.Char));
82                                 iTest++;
83                                 AssertEquals("#A07", (decimal)123456789012, Convert.ChangeType(tryInt64, TypeCode.Decimal));
84                                 iTest++;
85                                 AssertEquals("#A08", (int)34567, Convert.ChangeType(tryUI16, TypeCode.Int32));
86
87                                 iTest++;
88                                 AssertEquals("#A09", (double)567891234, Convert.ChangeType(tryUI32, typeof(double), ci));
89                                 iTest++;
90                                 AssertEquals("#A10", (ushort)0, Convert.ChangeType(tryByte, typeof(ushort), ci));
91                                 iTest++;
92                                 AssertEquals("#A11", (decimal)567891234, Convert.ChangeType(tryUI32, typeof(decimal), ci));
93                                 iTest++;
94                                 AssertEquals("#A12", (float)1234, Convert.ChangeType(tryInt16, typeof(float), ci));
95                                 iTest++;
96                                 AssertEquals("#A13", null, Convert.ChangeType(null, null, ci));
97
98                                 iTest++;
99                                 AssertEquals("#A14", (decimal)0, Convert.ChangeType(tryByte, TypeCode.Decimal, ci));
100                                 iTest++;
101                                 AssertEquals("#A15", "f", Convert.ChangeType('f', TypeCode.String, ci));
102                                 iTest++;
103                                 AssertEquals("#A16", 'D', Convert.ChangeType(68, TypeCode.Char, ci));
104                                 iTest++;
105                                 AssertEquals("#A17", (long)34567, Convert.ChangeType(tryUI16, TypeCode.Int64, ci));
106                                 iTest++;
107                                 AssertEquals("#A18", null, Convert.ChangeType(null, TypeCode.Empty, ci));
108                         } catch (Exception e) {
109                                 Fail ("Unexpected exception at iTest = " + iTest + ": e = " + e);
110                         }
111                         
112                         try {
113                                 Convert.ChangeType(boolTrue, typeof(char));
114                                 Fail();
115                         }
116                         catch (Exception e) {
117                                 AssertEquals("#A25", typeof(InvalidCastException), e.GetType());
118                         }
119                         
120                         try {
121                                 Convert.ChangeType(tryChar, typeof(DateTime));
122                                 Fail();
123                         }
124                         catch (Exception e) {
125                                 AssertEquals("#A26", typeof(InvalidCastException), e.GetType());
126                         }
127
128                         try {
129                                 Convert.ChangeType(ci, TypeCode.String);
130                                 Fail();
131                         }
132                         catch (Exception e) {
133                                 AssertEquals("#A27", typeof(InvalidCastException), e.GetType());
134                         }
135
136                         try {
137                                 Convert.ChangeType(tryInt32, null);
138                                 Fail();
139                         }
140                         catch (Exception e) {
141                                 AssertEquals("#A28", typeof(ArgumentNullException), e.GetType());
142                         }
143
144                         try 
145                         {
146                                 Convert.ChangeType(boolTrue, typeof(DateTime), ci);
147                                 Fail();
148                         }
149                         catch (Exception e) {
150                                 AssertEquals("#A29", typeof(InvalidCastException), e.GetType());
151                         }
152                         
153                         try {
154                                 Convert.ChangeType(ci, typeof(DateTime), ci);
155                                 Fail();
156                         }
157                         catch (Exception e) {
158                                 AssertEquals("#A30", typeof(InvalidCastException), e.GetType());
159                         }
160
161                         /* Should throw ArgumentException but throws InvalidCastException
162                         try {
163                                 Convert.ChangeType(tryUI32, typeof(FormatException), ci);
164                                 Fail();
165                         }
166                         catch (Exception e) {
167                                 AssertEquals("#A??", typeof(ArgumentException), e.GetType());
168                         }*/
169
170                         try {
171                                 Convert.ChangeType(tryUI32, TypeCode.Byte, ci);
172                                 Fail();
173                         }
174                         catch (Exception e) {
175                                 AssertEquals("#A31", typeof(OverflowException), e.GetType());
176                         }
177
178                         try {
179                                 Convert.ChangeType(boolTrue, TypeCode.Char, ci);
180                                 Fail();
181                         }
182                         catch (Exception e) {
183                                 AssertEquals("#A32", typeof(InvalidCastException), e.GetType());
184                         }
185
186                         try {
187                                 Convert.ChangeType(boolTrue, null, ci);
188                                 Fail();
189                         }
190                         catch (Exception e) {
191                                 AssertEquals("#A33", typeof(ArgumentNullException), e.GetType());
192                         }
193
194                         try {
195                                 /* should fail to convert string to any enumeration type. */
196                                 Convert.ChangeType("random string", typeof(DayOfWeek));
197                                 Fail();
198                         }
199                         catch (Exception e) {
200                                 AssertEquals("#A34", typeof(InvalidCastException), e.GetType());
201                         }
202
203                 }               
204
205                 public void TestGetTypeCode() {
206                         int marker = 1;
207                         try {
208                                 AssertEquals("#B01", TypeCode.String, Convert.GetTypeCode(tryStr));
209                                 marker++;
210                                 AssertEquals("#B02", TypeCode.UInt16, Convert.GetTypeCode(tryUI16));
211                                 marker++;
212                                 AssertEquals("#B03", TypeCode.UInt32, Convert.GetTypeCode(tryUI32));
213                                 marker++;
214                                 AssertEquals("#B04", TypeCode.UInt64, Convert.GetTypeCode(tryUI64));
215                                 marker++;
216                                 AssertEquals("#B05", TypeCode.Double, Convert.GetTypeCode(tryDbl));
217                                 marker++;
218                                 AssertEquals("#B06", TypeCode.Int16, Convert.GetTypeCode(tryInt16));
219                                 marker++;
220                                 AssertEquals("#B07", TypeCode.Int64, Convert.GetTypeCode(tryInt64));
221                                 marker++;
222                                 AssertEquals("#B08", TypeCode.Object, Convert.GetTypeCode(tryObj));
223                                 marker++;
224                                 AssertEquals("#B09", TypeCode.SByte, Convert.GetTypeCode(trySByte));
225                                 marker++;
226                                 AssertEquals("#B10", TypeCode.Single, Convert.GetTypeCode(tryFloat));
227                                 marker++;
228                                 AssertEquals("#B11", TypeCode.Byte, Convert.GetTypeCode(tryByte));
229                                 marker++;
230                                 AssertEquals("#B12", TypeCode.Char, Convert.GetTypeCode(tryChar));
231                                 marker++;
232 //                              AssertEquals("#B13", TypeCode.DateTime, Convert.GetTypeCode(tryDT));
233                                 marker++;
234                                 AssertEquals("#B14", TypeCode.Decimal, Convert.GetTypeCode(tryDec));
235                                 marker++;
236                                 AssertEquals("#B15", TypeCode.Int32, Convert.GetTypeCode(tryInt32));
237                                 marker++;
238                                 AssertEquals("#B16", TypeCode.Boolean, Convert.GetTypeCode(boolTrue));
239                         } catch (Exception e) {
240                                 Fail ("Unexpected exception at " + marker + ": " + e);
241                         }
242                 }
243
244                 public void TestIsDBNull() {
245                         AssertEquals("#C01", false, Convert.IsDBNull(tryInt32));
246                         AssertEquals("#C02", true, Convert.IsDBNull(Convert.DBNull));
247                         AssertEquals("#C03", false, Convert.IsDBNull(boolTrue));
248                         AssertEquals("#C04", false, Convert.IsDBNull(tryChar));
249                         AssertEquals("#C05", false, Convert.IsDBNull(tryFloat));
250                 }
251                 
252                 public void TestToBoolean() {
253                         tryObj = (object)tryDbl;
254                         
255                         AssertEquals("#D01", true, Convert.ToBoolean(boolTrue));
256                         AssertEquals("#D02", false, Convert.ToBoolean(tryByte));
257                         AssertEquals("#D03", true, Convert.ToBoolean(tryDec));
258                         AssertEquals("#D04", false, Convert.ToBoolean(tryDbl));
259                         AssertEquals("#D05", true, Convert.ToBoolean(tryInt16));
260                         AssertEquals("#D06", true, Convert.ToBoolean(tryInt32));
261                         AssertEquals("#D07", true, Convert.ToBoolean(tryInt64));
262                         AssertEquals("#D08", false, Convert.ToBoolean(tryObj));
263                         AssertEquals("#D09", true, Convert.ToBoolean(trySByte));
264                         AssertEquals("#D10", true, Convert.ToBoolean(tryFloat));
265                         AssertEquals("#D11", true, Convert.ToBoolean(trueString));
266                         AssertEquals("#D12", false, Convert.ToBoolean(falseString));
267                         AssertEquals("#D13", true, Convert.ToBoolean(tryUI16));
268                         AssertEquals("#D14", true, Convert.ToBoolean(tryUI32));
269                         AssertEquals("#D15", false, Convert.ToBoolean(tryUI64));
270                         AssertEquals("#D16", false, Convert.ToBoolean(tryObj,ci));
271                         AssertEquals("#D17", true, Convert.ToBoolean(trueString, ci));
272                         AssertEquals("#D18", false, Convert.ToBoolean(falseString, ci));
273                         
274                         try {
275                                 Convert.ToBoolean(tryChar);
276                                 Fail();
277                         }
278                         catch (Exception e) {
279                                 AssertEquals("#D20", typeof(InvalidCastException), e.GetType());
280                         }
281                         
282                         try {
283                                 Convert.ToBoolean(tryDT);
284                                 Fail();
285                         }
286                         catch (Exception e) {
287                                 AssertEquals("#D21", typeof(InvalidCastException), e.GetType());
288                         }
289
290                         try {
291                                 Convert.ToBoolean(tryStr);
292                                 Fail();
293                         }
294                         catch (Exception e) {
295                                 AssertEquals("#D22", typeof(FormatException), e.GetType());
296                         }
297
298                         try {
299                                 Convert.ToBoolean(nullString);
300                                 Fail();
301                         }
302                         catch (Exception e) {
303                                 AssertEquals("#D23", typeof(FormatException), e.GetType());
304                         }
305                 }
306
307                 public void TestToByte() {
308                         
309                         AssertEquals("#E01", (byte)1, Convert.ToByte(boolTrue));
310                         AssertEquals("#E02", (byte)0, Convert.ToByte(boolFalse));
311                         AssertEquals("#E03", tryByte, Convert.ToByte(tryByte));
312                         AssertEquals("#E04", (byte)114, Convert.ToByte('r'));
313                         AssertEquals("#E05", (byte)201, Convert.ToByte((decimal)200.6));
314                         AssertEquals("#E06", (byte)125, Convert.ToByte((double)125.4));
315                         AssertEquals("#E07", (byte)255, Convert.ToByte((short)255));
316                         AssertEquals("#E08", (byte)254, Convert.ToByte((int)254));
317                         AssertEquals("#E09", (byte)34, Convert.ToByte((long)34));
318                         AssertEquals("#E10", (byte)1, Convert.ToByte((object)boolTrue));
319                         AssertEquals("#E11", (byte)123, Convert.ToByte((float)123.49f));
320                         AssertEquals("#E12", (byte)57, Convert.ToByte("57"));
321                         AssertEquals("#E13", (byte)75, Convert.ToByte((ushort)75));
322                         AssertEquals("#E14", (byte)184, Convert.ToByte((uint)184));
323                         AssertEquals("#E15", (byte)241, Convert.ToByte((ulong)241));
324                         AssertEquals("#E16", (byte)123, Convert.ToByte(trySByte, ci));
325                         AssertEquals("#E17", (byte)27, Convert.ToByte("011011", 2));
326                         AssertEquals("#E18", (byte)13, Convert.ToByte("15", 8));
327                         AssertEquals("#E19", (byte)27, Convert.ToByte("27", 10));
328                         AssertEquals("#E20", (byte)250, Convert.ToByte("FA", 16));
329
330                         try {
331                                 Convert.ToByte('\u03A9'); // sign of Omega on Win2k
332                                 Fail();
333                         }
334                         catch (Exception e) {
335                                 AssertEquals("#E25", typeof(OverflowException), e.GetType());
336                         }
337
338                         try {
339                                 Convert.ToByte(tryDT);
340                                 Fail();
341                         }
342                         catch (Exception e) {
343                                 AssertEquals("#D26", typeof(InvalidCastException), e.GetType());
344                         }
345
346                         try {
347                                 Convert.ToByte((decimal)22000);
348                                 Fail();
349                         }
350                         catch (Exception e) {
351                                 AssertEquals("#E27", typeof(OverflowException), e.GetType());
352                         }
353
354                         try {
355                                 Convert.ToByte((double)255.5);
356                                 Fail();
357                         }
358                         catch (Exception e) {
359                                 AssertEquals("#E28", typeof(OverflowException), e.GetType());
360                         }
361
362                         try {
363                                 Convert.ToByte(-tryInt16);
364                                 Fail();
365                         }
366                         catch (Exception e) {
367                                 AssertEquals("#E29", typeof(OverflowException), e.GetType());
368                         }
369
370                         try {
371                                 Convert.ToByte((int)-256);
372                                 Fail();
373                         }
374                         catch (Exception e) {
375                                 AssertEquals("#E30", typeof(OverflowException), e.GetType());
376                         }
377
378                         try {
379                                 Convert.ToByte(tryInt64);
380                                 Fail();
381                         }
382                         catch (Exception e) {
383                                 AssertEquals("#E31", typeof(OverflowException), e.GetType());
384                         }
385
386                         try {
387                                 Convert.ToByte((object)ci);
388                                 Fail();
389                         }
390                         catch (Exception e) {
391                                 AssertEquals("#E32", typeof(InvalidCastException), e.GetType());
392                         }
393
394                         try {
395                                 Convert.ToByte((sbyte)-1);
396                                 Fail();
397                         }
398                         catch (Exception e) {
399                                 AssertEquals("#E33", typeof(OverflowException), e.GetType());
400                         }
401
402                         try {
403                                 Convert.ToByte((float)-0.6f);           
404                                 Fail();
405                         }
406                         catch (Exception e) {
407                                 AssertEquals("#E34", typeof(OverflowException), e.GetType());
408                         }
409
410                         try {
411                                 Convert.ToByte("1a1");          
412                                 Fail();
413                         }
414                         catch (Exception e) {
415                                 AssertEquals("#E35", typeof(FormatException), e.GetType());
416                         }
417
418                         try {
419                                 Convert.ToByte("457");          
420                                 Fail();
421                         }
422                         catch (Exception e) {
423                                 AssertEquals("#E36", typeof(OverflowException), e.GetType());
424                         }
425
426                         try {
427                                 Convert.ToByte((ushort)30000);
428                                 Fail();
429                         }
430                         catch (Exception e) {
431                                 AssertEquals("#E37", typeof(OverflowException), e.GetType());
432                         }
433
434                         try {
435                                 Convert.ToByte((uint)300);
436                                 Fail();
437                         }
438                         catch (Exception e) {
439                                 AssertEquals("#E38", typeof(OverflowException), e.GetType());
440                         }
441
442                         try {
443                                 Convert.ToByte((ulong)987654321321);
444                                 Fail();
445                         }
446                         catch (Exception e) {
447                                 AssertEquals("#E39", typeof(OverflowException), e.GetType());
448                         }
449
450                         try {
451                                 Convert.ToByte("10010111", 3);
452                                 Fail();
453                         }
454                         catch (Exception e) {
455                                 AssertEquals("#E40", typeof(ArgumentException), e.GetType());
456                         }
457
458                         try {
459                                 Convert.ToByte("3F3", 16);
460                                 Fail();
461                         }
462                         catch (Exception e) {
463                                 AssertEquals("#E41", typeof(OverflowException), e.GetType());
464                         }
465                 }
466
467                 public void TestToChar(){
468                         tryByte = 58;
469                         AssertEquals("#F01", ':', Convert.ToChar(tryByte));
470                         AssertEquals("#F02", 'a', Convert.ToChar(tryChar));
471                         AssertEquals("#F03", 'A', Convert.ToChar((short)65));
472                         AssertEquals("#F04", 'x', Convert.ToChar((int)120));
473                         AssertEquals("#F05", '"', Convert.ToChar((long)34));
474                         AssertEquals("#F06", '-', Convert.ToChar((sbyte)45));
475                         AssertEquals("#F07", '@', Convert.ToChar("@"));
476                         AssertEquals("#F08", 'K', Convert.ToChar((ushort)75));
477                         AssertEquals("#F09", '=', Convert.ToChar((uint)61));
478                         // AssertEquals("#F10", 'E', Convert.ToChar((ulong)200));
479                         AssertEquals("#F11", '{', Convert.ToChar((object)trySByte, ci));
480                         AssertEquals("#F12", 'o', Convert.ToChar(tryStr.Substring(1,1), ci));
481                         
482                         try {
483                                 Convert.ToChar(boolTrue);
484                                 Fail();
485                         }
486                         catch (Exception e) {
487                                 AssertEquals("#F20", typeof(InvalidCastException), e.GetType());
488                         }
489
490                         try {
491                                 Convert.ToChar(tryDT);
492                                 Fail();
493                         }
494                         catch (Exception e) {
495                                 AssertEquals("#F21", typeof(InvalidCastException), e.GetType());
496                         }
497
498                         try {
499                                 Convert.ToChar(tryDec);
500                                 Fail();
501                         }
502                         catch (Exception e) {
503                                 AssertEquals("#F22", typeof(InvalidCastException), e.GetType());
504                         }
505
506                         try {
507                                 Convert.ToChar(tryDbl);
508                                 Fail();
509                         }
510                         catch (Exception e) {
511                                 AssertEquals("#F23", typeof(InvalidCastException), e.GetType());
512                         }
513
514                         try {
515                                 Convert.ToChar((short)-1);
516                                 Fail();
517                         }
518                         catch (Exception e) {
519                                 AssertEquals("#F24", typeof(OverflowException), e.GetType());
520                         }
521
522                         try {
523                                 Convert.ToChar(Int32.MinValue);
524                                 Fail();
525                         }
526                         catch (Exception e) {
527                                 AssertEquals("#F25", typeof(OverflowException), e.GetType());
528                         }
529
530                         try {
531                                 Convert.ToChar(Int32.MaxValue);
532                                 Fail();
533                         }
534                         catch (Exception e) {
535                                 AssertEquals("#F26", typeof(OverflowException), e.GetType());
536                         }
537
538                         try {
539                                 Convert.ToChar(tryInt64);
540                                 Fail();
541                         }
542                         catch (Exception e) {
543                                 AssertEquals("#F27", typeof(OverflowException), e.GetType());
544                         }
545
546                         try {
547                                 Convert.ToChar((long)-123);
548                                 Fail();
549                         }
550                         catch (Exception e) {
551                                 AssertEquals("#F28", typeof(OverflowException), e.GetType());
552                         }
553
554                         try {
555                                 Convert.ToChar(ci);
556                                 Fail();
557                         }
558                         catch (Exception e) {
559                                 AssertEquals("#F29", typeof(InvalidCastException), e.GetType());
560                         }
561
562                         try {
563                                 Convert.ToChar(-trySByte);
564                                 Fail();
565                         }
566                         catch (Exception e) {
567                                 AssertEquals("#F30", typeof(OverflowException), e.GetType());
568                         }
569
570                         try {
571                                 Convert.ToChar(tryFloat);
572                                 Fail();
573                         }
574                         catch (Exception e) {
575                                 AssertEquals("#F31", typeof(InvalidCastException), e.GetType());
576                         }
577
578                         try {
579                                 Convert.ToChar("foo");
580                                 Fail();
581                         }
582                         catch (Exception e) {
583                                 AssertEquals("#F32", typeof(FormatException), e.GetType());
584                         }
585                         
586                         try {
587                                 Convert.ToChar(null);
588                                 Fail();
589                         }
590                         catch (Exception e) {
591                                 AssertEquals("#F33", typeof(ArgumentNullException), e.GetType());
592                         }
593
594                         try {
595                                 Convert.ToChar(new Exception(), ci);
596                                 Fail();
597                         }
598                         catch (Exception e) {
599                                 AssertEquals("#F34", typeof(InvalidCastException), e.GetType());
600                         }
601
602                         try {
603                                 Convert.ToChar(null, ci);
604                                 Fail();
605                         }
606                         catch (Exception e) {
607                                 AssertEquals("#F35", typeof(ArgumentNullException), e.GetType());
608                         }
609
610                         try {
611                                 Convert.ToChar("", ci);
612                                 Fail();
613                         }
614                         catch (Exception e) {
615                                 AssertEquals("#F36", typeof(FormatException), e.GetType());
616                         }
617
618                         try {
619                                 Convert.ToChar(tryStr, ci);
620                                 Fail();
621                         }
622                         catch (Exception e) {
623                                 AssertEquals("#F37", typeof(FormatException), e.GetType());
624                         }
625                 }
626
627                 /*[Ignore ("http://bugzilla.ximian.com/show_bug.cgi?id=45286")]
628                 [Test]
629                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
630                 public void G22 () {
631                         Convert.ToDateTime("20002-25-01");
632                 } */
633
634                 public void TestToDateTime() {
635                         string dateString = "01/01/2002";
636                         int iTest = 1;
637                         try {
638                                 AssertEquals("#G01", tryDT, Convert.ToDateTime(tryDT));
639                                 iTest++;
640                                 AssertEquals("#G02", tryDT, Convert.ToDateTime(dateString));
641                                 iTest++;
642                                 AssertEquals("#G03", tryDT, Convert.ToDateTime(dateString, ci));
643                         } catch (Exception e) {
644                                 Fail ("Unexpected exception at iTest = " + iTest + ": e = " + e);
645                         }
646
647                         try {
648                                 Convert.ToDateTime(boolTrue);
649                                 Fail();
650                         }
651                         catch (Exception e) {
652                                 AssertEquals("#G10", typeof(InvalidCastException), e.GetType());
653                         }
654
655                         try {
656                                 Convert.ToDateTime(tryByte);
657                                 Fail();
658                         }
659                         catch (Exception e) {
660                                 AssertEquals("#G11", typeof(InvalidCastException), e.GetType());
661                         }
662
663                         try {
664                                 Convert.ToDateTime(tryChar);
665                                 Fail();
666                         }
667                         catch (Exception e) {
668                                 AssertEquals("#G12", typeof(InvalidCastException), e.GetType());
669                         }
670
671                         try {
672                                 Convert.ToDateTime(tryDec);
673                                 Fail();
674                         }
675                         catch (Exception e) {
676                                 AssertEquals("#G13", typeof(InvalidCastException), e.GetType());
677                         }
678
679                         try {
680                                 Convert.ToDateTime(tryDbl);
681                                 Fail();
682                         }
683                         catch (Exception e) {
684                                 AssertEquals("#G14", typeof(InvalidCastException), e.GetType());
685                         }
686
687                         try {
688                                 Convert.ToDateTime(tryInt16);
689                                 Fail();
690                         }
691                         catch (Exception e) {
692                                 AssertEquals("#G15", typeof(InvalidCastException), e.GetType());
693                         }
694
695                         try {
696                                 Convert.ToDateTime(tryInt32);
697                                 Fail();
698                         }
699                         catch (Exception e) {
700                                 AssertEquals("#G16", typeof(InvalidCastException), e.GetType());
701                         }
702
703                         try {
704                                 Convert.ToDateTime(tryInt64);
705                                 Fail();
706                         }
707                         catch (Exception e) {
708                                 AssertEquals("#G17", typeof(InvalidCastException), e.GetType());
709                         }
710
711                         try {
712                                 Convert.ToDateTime(ci);
713                                 Fail();
714                         }
715                         catch (Exception e) {
716                                 AssertEquals("#G18", typeof(InvalidCastException), e.GetType());
717                         }
718
719                         try {
720                                 Convert.ToDateTime(trySByte);
721                                 Fail();
722                         }
723                         catch (Exception e) {
724                                 AssertEquals("#G19", typeof(InvalidCastException), e.GetType());
725                         }
726
727                         try {
728                                 Convert.ToDateTime(tryFloat);
729                                 Fail();
730                         }
731                         catch (Exception e) {
732                                 AssertEquals("#G20", typeof(InvalidCastException), e.GetType());
733                         }
734
735                         try {
736                                 Convert.ToDateTime("20a2-01-01");
737                                 Fail();
738                         }
739                         catch (Exception e) {
740                                 AssertEquals("#G21", typeof(FormatException), e.GetType());
741                         }
742
743                         try {
744                                 Convert.ToDateTime(tryUI16);
745                                 Fail();
746                         }
747                         catch (Exception e) {
748                                 AssertEquals("#G23", typeof(InvalidCastException), e.GetType());
749                         }
750
751                         try {
752                                 Convert.ToDateTime(tryUI32);
753                                 Fail();
754                         }
755                         catch (Exception e) {
756                                 AssertEquals("#G24", typeof(InvalidCastException), e.GetType());
757                         }
758
759                         try {
760                                 Convert.ToDateTime(tryUI64);
761                                 Fail();
762                         }
763                         catch (Exception e) {
764                                 AssertEquals("#G25", typeof(InvalidCastException), e.GetType());
765                         }
766
767                         try {
768                                 Convert.ToDateTime(ci, ci);
769                                 Fail();
770                         }
771                         catch (Exception e) {
772                                 AssertEquals("#G26", typeof(InvalidCastException), e.GetType());
773                         }
774
775                         try {
776                                 Convert.ToDateTime("20a2-01-01", ci);
777                                 Fail();
778                         }
779                         catch (Exception e) {
780                                 AssertEquals("#G27", typeof(FormatException), e.GetType());
781                         }
782
783                         // this is supported by .net 1.1 (defect 41845)
784                         try {
785                                 Convert.ToDateTime("20022-01-01");
786                                 Fail();
787                         }
788                         catch (Exception e) {
789                                 AssertEquals("#G28", typeof(ArgumentOutOfRangeException), e.GetType());
790                         }
791
792                         try {
793                                 Convert.ToDateTime("2002-21-01");
794                                 Fail();
795                         }
796                         catch (Exception e) {
797                                 AssertEquals("#G29", typeof(FormatException), e.GetType());
798                         }
799
800                         try {
801                                 Convert.ToDateTime("2002-111-01");
802                                 Fail();
803                         }
804                         catch (Exception e) {
805                                 AssertEquals("#G30", typeof(FormatException), e.GetType());
806                         }
807
808                         try {
809                                 Convert.ToDateTime("2002-01-41");
810                                 Fail();
811                         }
812                         catch (Exception e) {
813                                 AssertEquals("#G31", typeof(FormatException), e.GetType());
814                         }
815
816                         try {
817                                 Convert.ToDateTime("2002-01-111");
818                                 Fail();
819                         }
820                         catch (Exception e) {
821                                 AssertEquals("#G32", typeof(FormatException), e.GetType());
822                         }
823
824                         try {
825                                 AssertEquals("#G33", tryDT, Convert.ToDateTime("2002-01-01"));
826                         } catch (Exception e) {
827                                 Fail ("Unexpected exception at #G33 " + e);
828                         }
829
830                         try {
831                                 Convert.ToDateTime("2002-01-11 34:11:11");
832                                 Fail();
833                         }
834                         catch (Exception e) {
835                                 AssertEquals("#G34", typeof(FormatException), e.GetType());
836                         }
837
838                         try {
839                                 Convert.ToDateTime("2002-01-11 11:70:11");
840                                 Fail();
841                         }
842                         catch (Exception e) {
843                                 AssertEquals("#G35", typeof(FormatException), e.GetType());
844                         }
845
846                         try {
847                                 Convert.ToDateTime("2002-01-11 11:11:70");
848                                 Fail();
849                         }
850                         catch (Exception e) {
851                                 AssertEquals("#G36", typeof(FormatException), e.GetType());
852                         }
853
854                 }
855
856                 public void TestToDecimal() {
857                         AssertEquals("#H01", (decimal)1, Convert.ToDecimal(boolTrue));
858                         AssertEquals("#H02", (decimal)0, Convert.ToDecimal(boolFalse));
859                         AssertEquals("#H03", (decimal)tryByte, Convert.ToDecimal(tryByte));
860                         AssertEquals("#H04", tryDec, Convert.ToDecimal(tryDec));
861                         AssertEquals("#H05", (decimal)tryDbl, Convert.ToDecimal(tryDbl));
862                         AssertEquals("#H06", (decimal)tryInt16, Convert.ToDecimal(tryInt16));
863                         AssertEquals("#H07", (decimal)tryInt32, Convert.ToDecimal(tryInt32));
864                         AssertEquals("#H08", (decimal)tryInt64, Convert.ToDecimal(tryInt64));
865                         AssertEquals("#H09", (decimal)trySByte, Convert.ToDecimal(trySByte));
866                         AssertEquals("#H10", (decimal)tryFloat, Convert.ToDecimal(tryFloat));
867                         string sep = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
868 //                      AssertEquals("#H11", (decimal)23456.432, Convert.ToDecimal("23456" + sep + "432"));
869 //                      Note: changed because the number were the same but with a different base
870 //                      and this isn't a Convert bug (but a Decimal bug). See #60227 for more details.
871 //                      http://bugzilla.ximian.com/show_bug.cgi?id=60227
872                         Assert ("#H11", Decimal.Equals (23456.432m, Convert.ToDecimal ("23456" + sep + "432")));
873                         AssertEquals("#H12", (decimal)tryUI16, Convert.ToDecimal(tryUI16));
874                         AssertEquals("#H13", (decimal)tryUI32, Convert.ToDecimal(tryUI32));
875                         AssertEquals("#H14", (decimal)tryUI64, Convert.ToDecimal(tryUI64));
876                         AssertEquals("#H15", (decimal)63784, Convert.ToDecimal("63784", ci));
877                         
878                         try {
879                                 Convert.ToDecimal(tryChar);
880                                 Fail();
881                         }
882                         catch (Exception e) {
883                                 AssertEquals("#H20", typeof(InvalidCastException), e.GetType());
884                         }
885
886                         try {
887                                 Convert.ToDecimal(tryDT);
888                                 Fail();
889                         }
890                         catch (Exception e) {
891                                 AssertEquals("#H21", typeof(InvalidCastException), e.GetType());
892                         }
893
894                         try {
895                                 Convert.ToDecimal(double.MaxValue);
896                                 Fail();
897                         }
898                         catch (Exception e) {
899                                 AssertEquals("#H22", typeof(OverflowException), e.GetType());
900                         }
901
902                         try {
903                                 Convert.ToDecimal(double.MinValue);
904                                 Fail();
905                         }
906                         catch (Exception e) {
907                                 AssertEquals("#H23", typeof(OverflowException), e.GetType());
908                         }
909
910                         try {
911                                 Convert.ToDecimal(ci);
912                                 Fail();
913                         }
914                         catch (Exception e) {
915                                 AssertEquals("#H24", typeof(InvalidCastException), e.GetType());
916                         }
917                         
918                         try {
919                                 Convert.ToDecimal(tryStr);
920                                 Fail();
921                         }
922                         catch (Exception e) {
923                                 AssertEquals("#H25", typeof(FormatException), e.GetType());
924                         }
925                         
926                         try {
927                                 string maxDec = decimal.MaxValue.ToString();
928                                 maxDec = maxDec + "1";                          
929                                 Convert.ToDecimal(maxDec);
930                                 Fail();
931                         }
932                         catch (Exception e) {
933                                 AssertEquals("#H26", typeof(OverflowException), e.GetType());
934                         }
935
936                         try {
937                                 Convert.ToDecimal(ci, ci);
938                                 Fail();
939                         }
940                         catch (Exception e) {
941                                 AssertEquals("#H27", typeof(InvalidCastException), e.GetType());
942                         }
943
944                         try {
945                                 Convert.ToDecimal(tryStr, ci);
946                                 Fail();
947                         }
948                         catch (Exception e) {
949                                 AssertEquals("#H28", typeof(FormatException), e.GetType());
950                         }
951                         
952                         try {
953                                 string maxDec = decimal.MaxValue.ToString();
954                                 maxDec = maxDec + "1";
955                                 Convert.ToDecimal(maxDec, ci);
956                                 Fail();
957                         }
958                         catch (Exception e) {
959                                 AssertEquals("#H29", typeof(OverflowException), e.GetType());
960                         }
961                 }
962                 
963                 public void TestToDouble() {
964                         int iTest = 1;
965                         try {
966                                 AssertEquals("#I01", (double)1, Convert.ToDouble(boolTrue));
967                                 iTest++;
968                                 AssertEquals("#I02", (double)0, Convert.ToDouble(boolFalse));
969                                 iTest++;
970                                 AssertEquals("#I03", (double)tryByte, Convert.ToDouble(tryByte));
971                                 iTest++;
972                                 AssertEquals("#I04", tryDbl, Convert.ToDouble(tryDbl));
973                                 iTest++;
974                                 AssertEquals("#I05", (double)tryDec, Convert.ToDouble(tryDec));
975                                 iTest++;
976                                 AssertEquals("#I06", (double)tryInt16, Convert.ToDouble(tryInt16));
977                                 iTest++;
978                                 AssertEquals("#I07", (double)tryInt32, Convert.ToDouble(tryInt32));
979                                 iTest++;
980                                 AssertEquals("#I08", (double)tryInt64, Convert.ToDouble(tryInt64));
981                                 iTest++;
982                                 AssertEquals("#I09", (double)trySByte, Convert.ToDouble(trySByte));
983                                 iTest++;
984                                 AssertEquals("#I10", (double)tryFloat, Convert.ToDouble(tryFloat));
985                                 iTest++;
986                                 string sep = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
987                                 AssertEquals("#I11", (double)23456.432, Convert.ToDouble("23456" + sep + "432"));
988                                 iTest++;
989                                 AssertEquals("#I12", (double)tryUI16, Convert.ToDouble(tryUI16));
990                                 iTest++;
991                                 AssertEquals("#I13", (double)tryUI32, Convert.ToDouble(tryUI32));
992                                 iTest++;
993                                 AssertEquals("#I14", (double)tryUI64, Convert.ToDouble(tryUI64));
994                                 iTest++;
995                                 AssertEquals("#H15", (double)63784, Convert.ToDouble("63784", ci));
996                         } catch (Exception e) {
997                                 Fail ("Unexpected exception at iTest = " + iTest + ": e = " + e);
998                         }
999                         
1000                         try {
1001                                 Convert.ToDouble(tryChar);
1002                                 Fail();
1003                         }
1004                         catch (Exception e) {
1005                                 AssertEquals("#I20", typeof(InvalidCastException), e.GetType());
1006                         }
1007
1008                         try {
1009                                 Convert.ToDouble(tryDT);
1010                                 Fail();
1011                         }
1012                         catch (Exception e) {
1013                                 AssertEquals("#I21", typeof(InvalidCastException), e.GetType());
1014                         }
1015
1016                         try {
1017                                 Convert.ToDouble(ci);
1018                                 Fail();
1019                         }
1020                         catch (Exception e) {
1021                                 AssertEquals("#I22", typeof(InvalidCastException), e.GetType());
1022                         }
1023                         
1024                         try {
1025                                 Convert.ToDouble(tryStr);
1026                                 Fail();
1027                         }
1028                         catch (Exception e) {
1029                                 AssertEquals("#I23", typeof(FormatException), e.GetType());
1030                         }
1031                         
1032                         try {
1033                                 string maxDec = double.MaxValue.ToString();
1034                                 maxDec = maxDec + "1";                          
1035                                 Convert.ToDouble(maxDec);
1036                                 Fail();
1037                         }
1038                         catch (Exception e) {
1039                                 AssertEquals("#I24", typeof(OverflowException), e.GetType());
1040                         }
1041
1042                         try {
1043                                 Convert.ToDouble(ci, ci);
1044                                 Fail();
1045                         }
1046                         catch (Exception e) {
1047                                 AssertEquals("#I25", typeof(InvalidCastException), e.GetType());
1048                         }
1049
1050                         try {
1051                                 Convert.ToDouble(tryStr, ci);
1052                                 Fail();
1053                         }
1054                         catch (Exception e) {
1055                                 AssertEquals("#I26", typeof(FormatException), e.GetType());
1056                         }
1057                         
1058                         try {
1059                                 string maxDec = double.MaxValue.ToString();
1060                                 maxDec = maxDec + "1";
1061                                 Convert.ToDouble(maxDec, ci);
1062                                 Fail();
1063                         }
1064                         catch (Exception e) {
1065                                 AssertEquals("#I27", typeof(OverflowException), e.GetType());
1066                         }
1067
1068                         try {
1069                                 Convert.ToDouble(tryObj, ci);
1070                                 Fail();
1071                         }
1072                         catch (Exception e) {
1073                                 AssertEquals("#I28", typeof(InvalidCastException), e.GetType());
1074                         }
1075                 }
1076
1077                 public void TestToInt16() {
1078                         AssertEquals("#J01", (short)0, Convert.ToInt16(boolFalse));
1079                         AssertEquals("#J02", (short)1, Convert.ToInt16(boolTrue));
1080                         AssertEquals("#J03", (short)97, Convert.ToInt16(tryChar));
1081                         AssertEquals("#J04", (short)1234, Convert.ToInt16(tryDec));
1082                         AssertEquals("#J05", (short)0, Convert.ToInt16(tryDbl));
1083                         AssertEquals("#J06", (short)1234, Convert.ToInt16(tryInt16));
1084                         AssertEquals("#J07", (short)12345, Convert.ToInt16(tryInt32));
1085                         AssertEquals("#J08", (short)30000, Convert.ToInt16((long)30000));
1086                         AssertEquals("#J09", (short)123, Convert.ToInt16(trySByte));
1087                         AssertEquals("#J10", (short)1234, Convert.ToInt16(tryFloat));
1088                         AssertEquals("#J11", (short)578, Convert.ToInt16("578"));
1089                         AssertEquals("#J12", (short)15500, Convert.ToInt16((ushort)15500));
1090                         AssertEquals("#J13", (short)5489, Convert.ToInt16((uint)5489));
1091                         AssertEquals("#J14", (short)9876, Convert.ToInt16((ulong)9876));
1092                         AssertEquals("#J15", (short)14, Convert.ToInt16("14", ci));
1093                         AssertEquals("#J16", (short)11, Convert.ToInt16("01011", 2));
1094                         AssertEquals("#J17", (short)1540, Convert.ToInt16("3004", 8));
1095                         AssertEquals("#J18", (short)321, Convert.ToInt16("321", 10));
1096                         AssertEquals("#J19", (short)2748, Convert.ToInt16("ABC", 16));
1097
1098                         try {
1099                                 Convert.ToInt16(char.MaxValue);
1100                                 Fail();
1101                         }
1102                         catch (Exception e) {
1103                                 AssertEquals("#J25", typeof(OverflowException), e.GetType());
1104                         }
1105
1106                         try {
1107                                 Convert.ToInt16(tryDT);
1108                                 Fail();
1109                         }
1110                         catch (Exception e) {
1111                                 AssertEquals("#J26", typeof(InvalidCastException), e.GetType());
1112                         }
1113
1114                         try {
1115                                 Convert.ToInt16((decimal)(short.MaxValue + 1));
1116                                 Fail();
1117                         }
1118                         catch (Exception e) {
1119                                 AssertEquals("#J27", typeof(OverflowException), e.GetType());
1120                         }
1121
1122                         try {
1123                                 Convert.ToInt16((decimal)(short.MinValue - 1));
1124                                 Fail();
1125                         }
1126                         catch (Exception e) {
1127                                 AssertEquals("#J28", typeof(OverflowException), e.GetType());
1128                         }
1129
1130                         try {
1131                                 Convert.ToInt16((double)(short.MaxValue + 1));
1132                                 Fail();
1133                         }
1134                         catch (Exception e) {
1135                                 AssertEquals("#J29", typeof(OverflowException), e.GetType());
1136                         }
1137
1138                         try {
1139                                 Convert.ToInt16((double)(short.MinValue - 1));
1140                                 Fail();
1141                         }
1142                         catch (Exception e) {
1143                                 AssertEquals("#J30", typeof(OverflowException), e.GetType());
1144                         }
1145
1146                         try {
1147                                 Convert.ToInt16(50000);
1148                                 Fail();
1149                         }
1150                         catch (Exception e) {
1151                                 AssertEquals("#J31", typeof(OverflowException), e.GetType());
1152                         }
1153
1154                         try {
1155                                 Convert.ToInt16(-50000);
1156                                 Fail();
1157                         }
1158                         catch (Exception e) {
1159                                 AssertEquals("#J32", typeof(OverflowException), e.GetType());
1160                         }
1161
1162                         try {
1163                                 Convert.ToInt16(tryInt64);
1164                                 Fail();
1165                         }
1166                         catch (Exception e) {
1167                                 AssertEquals("#J33", typeof(OverflowException), e.GetType());
1168                         }
1169
1170                         try {
1171                                 Convert.ToInt16(-tryInt64);
1172                                 Fail();
1173                         }
1174                         catch (Exception e) {
1175                                 AssertEquals("#J34", typeof(OverflowException), e.GetType());
1176                         }
1177
1178                         try {
1179                                 Convert.ToInt16(tryObj);
1180                                 Fail();
1181                         }
1182                         catch (Exception e) {
1183                                 AssertEquals("#J35", typeof(InvalidCastException), e.GetType());
1184                         }
1185
1186                         try {
1187                                 Convert.ToInt16((float)32767.5);
1188                                 Fail();
1189                         }
1190                         catch (Exception e) {
1191                                 AssertEquals("#J36", typeof(OverflowException), e.GetType());
1192                         }
1193
1194                         try {
1195                                 Convert.ToInt16((float)-33000.54);
1196                                 Fail();
1197                         }
1198                         catch (Exception e) {
1199                                 AssertEquals("#J37", typeof(OverflowException), e.GetType());
1200                         }
1201
1202                         try {
1203                                 Convert.ToInt16(tryStr);
1204                                 Fail();
1205                         }
1206                         catch (Exception e) {
1207                                 AssertEquals("#J38", typeof(FormatException), e.GetType());
1208                         }
1209                         
1210                         try {
1211                                 Convert.ToInt16("-33000");
1212                                 Fail();
1213                         }
1214                         catch (Exception e) {
1215                                 AssertEquals("#J39", typeof(OverflowException), e.GetType());
1216                         }
1217
1218                         try {                                                   
1219                                 Convert.ToInt16(ushort.MaxValue);
1220                                 Fail();
1221                         }
1222                         catch (Exception e) {
1223                                 AssertEquals("#J40", typeof(OverflowException), e.GetType());
1224                         }
1225
1226                         try {                                                   
1227                                 Convert.ToInt16(uint.MaxValue);
1228                                 Fail();
1229                         }
1230                         catch (Exception e) {
1231                                 AssertEquals("#J41", typeof(OverflowException), e.GetType());
1232                         }
1233
1234                         try {                                                   
1235                                 Convert.ToInt16(ulong.MaxValue);
1236                                 Fail();
1237                         }
1238                         catch (Exception e) {
1239                                 AssertEquals("#J42", typeof(OverflowException), e.GetType());
1240                         }
1241
1242                         try {
1243                                 Convert.ToInt16(tryObj, ci);
1244                                 Fail();
1245                         }
1246                         catch (Exception e) {
1247                                 AssertEquals("#J43", typeof(InvalidCastException), e.GetType());
1248                         }
1249
1250                         try {
1251                                 Convert.ToInt16(tryStr, ci);
1252                                 Fail();
1253                         }
1254                         catch (Exception e) {
1255                                 AssertEquals("#J44", typeof(FormatException), e.GetType());
1256                         }
1257                         
1258                         try {
1259                                 Convert.ToInt16("-33000", ci);
1260                                 Fail();
1261                         }
1262                         catch (Exception e) {
1263                                 AssertEquals("#J45", typeof(OverflowException), e.GetType());
1264                         }
1265
1266                         try {
1267                                 Convert.ToInt16("321", 11);
1268                                 Fail();
1269                         }
1270                         catch (Exception e) {
1271                                 AssertEquals("#J46", typeof(ArgumentException), e.GetType());
1272                         }
1273
1274                         try {
1275                                 Convert.ToInt16("D8BF1", 16);
1276                                 Fail();
1277                         }
1278                         catch (Exception e) {
1279                                 AssertEquals("#J47", typeof(OverflowException), e.GetType());
1280                         }
1281                 }
1282
1283                 public void TestToInt32() {
1284                         long tryMax = long.MaxValue;
1285                         long tryMin = long.MinValue;
1286                         AssertEquals("#K01", (int)0, Convert.ToInt32(boolFalse));
1287                         AssertEquals("#K02", (int)1, Convert.ToInt32(boolTrue));
1288                         AssertEquals("#K03", (int)0, Convert.ToInt32(tryByte));
1289                         AssertEquals("#K04", (int)97, Convert.ToInt32(tryChar));
1290                         AssertEquals("#K05", (int)1234, Convert.ToInt32(tryDec));
1291                         AssertEquals("#K06", (int)0, Convert.ToInt32(tryDbl));
1292                         AssertEquals("#K07", (int)1234, Convert.ToInt32(tryInt16));
1293                         AssertEquals("#K08", (int)12345, Convert.ToInt32(tryInt32));
1294                         AssertEquals("#K09", (int)60000, Convert.ToInt32((long)60000));
1295                         AssertEquals("#K10", (int)123, Convert.ToInt32(trySByte));
1296                         AssertEquals("#K11", (int)1234, Convert.ToInt32(tryFloat));
1297                         AssertEquals("#K12", (int)9876, Convert.ToInt32((string)"9876"));
1298                         AssertEquals("#K13", (int)34567, Convert.ToInt32(tryUI16));
1299                         AssertEquals("#K14", (int)567891234, Convert.ToInt32(tryUI32));
1300                         AssertEquals("#K15", (int)0, Convert.ToInt32(tryUI64));
1301                         AssertEquals("#K16", (int)123, Convert.ToInt32("123", ci));
1302                         AssertEquals("#K17", (int)128, Convert.ToInt32("10000000", 2));
1303                         AssertEquals("#K18", (int)302, Convert.ToInt32("456", 8));
1304                         AssertEquals("#K19", (int)456, Convert.ToInt32("456", 10));
1305                         AssertEquals("#K20", (int)1110, Convert.ToInt32("456", 16));
1306
1307                         try {                                                   
1308                                 Convert.ToInt32(tryDT);
1309                                 Fail();
1310                         }
1311                         catch (Exception e) {
1312                                 AssertEquals("#K25", typeof(InvalidCastException), e.GetType());
1313                         }
1314
1315                         try {                           
1316                                 Convert.ToInt32((decimal)tryMax);
1317                                 Fail();
1318                         }
1319                         catch (Exception e) {
1320                                 AssertEquals("#K26", typeof(OverflowException), e.GetType());
1321                         }
1322
1323                         try {
1324                                 Convert.ToInt32((decimal)tryMin);
1325                                 Fail();
1326                         }
1327                         catch (Exception e) {
1328                                 AssertEquals("#K27", typeof(OverflowException), e.GetType());
1329                         }
1330
1331                         try {
1332                                 Convert.ToInt32((double)tryMax);
1333                                 Fail();
1334                         }
1335                         catch (Exception e) {
1336                                 AssertEquals("#K28", typeof(OverflowException), e.GetType());
1337                         }
1338
1339                         try {
1340                                 Convert.ToInt32((double)tryMin);
1341                                 Fail();
1342                         }
1343                         catch (Exception e) {
1344                                 AssertEquals("#K29", typeof(OverflowException), e.GetType());
1345                         }
1346
1347                         try {                                                   
1348                                 Convert.ToInt32(tryInt64);
1349                                 Fail();
1350                         }
1351                         catch (Exception e) {
1352                                 AssertEquals("#K30", typeof(OverflowException), e.GetType());
1353                         }
1354
1355                         try {
1356                                 Convert.ToInt32(-tryInt64);
1357                                 Fail();
1358                         }
1359                         catch (Exception e) {
1360                                 AssertEquals("#K31", typeof(OverflowException), e.GetType());
1361                         }
1362
1363                         try {
1364                                 Convert.ToInt32(tryObj);
1365                                 Fail();
1366                         }
1367                         catch (Exception e) {
1368                                 AssertEquals("#K32", typeof(InvalidCastException), e.GetType());
1369                         }
1370
1371                         try {
1372                                 Convert.ToInt32((float)tryMax);
1373                                 Fail();
1374                         }
1375                         catch (Exception e) {
1376                                 AssertEquals("#K33", typeof(OverflowException), e.GetType());
1377                         }
1378
1379                         try {
1380                                 Convert.ToInt32((float)tryMin);
1381                                 Fail();
1382                         }
1383                         catch (Exception e) {
1384                                 AssertEquals("#K34", typeof(OverflowException), e.GetType());
1385                         }
1386                         
1387                         try {
1388                                 Convert.ToInt32(tryStr, ci);
1389                                 Fail();
1390                         }
1391                         catch (Exception e) {
1392                                 AssertEquals("#K35", typeof(FormatException), e.GetType());
1393                         }
1394
1395                         try {
1396                                 Convert.ToInt32("-46565465123");
1397                                 Fail();
1398                         }
1399                         catch (Exception e) {
1400                                 AssertEquals("#K36", typeof(OverflowException), e.GetType());
1401                         }
1402
1403                         try {
1404                                 Convert.ToInt32("46565465123");
1405                                 Fail();
1406                         }
1407                         catch (Exception e) {
1408                                 AssertEquals("#K37", typeof(OverflowException), e.GetType());
1409                         }
1410
1411                         try {
1412                                 Convert.ToInt32((uint)tryMax);
1413                                 Fail();
1414                         }
1415                         catch (Exception e) {
1416                                 AssertEquals("#K38", typeof(OverflowException), e.GetType());
1417                         }
1418
1419                         try {
1420                                 Convert.ToInt32((ulong)tryMax);
1421                                 Fail();
1422                         }
1423                         catch (Exception e) {
1424                                 AssertEquals("#K39", typeof(OverflowException), e.GetType());
1425                         }
1426
1427                         try {
1428                                 Convert.ToInt32(tryObj, ci);
1429                                 Fail();
1430                         }
1431                         catch (Exception e) {
1432                                 AssertEquals("#K40", typeof(InvalidCastException), e.GetType());
1433                         }
1434
1435                         try {
1436                                 Convert.ToInt32(tryStr, ci);
1437                                 Fail();
1438                         }
1439                         catch (Exception e) {
1440                                 AssertEquals("#K41", typeof(FormatException), e.GetType());
1441                         }
1442
1443                         try {
1444                                 Convert.ToInt32("-46565465123", ci);
1445                                 Fail();
1446                         }
1447                         catch (Exception e) {
1448                                 AssertEquals("#K42", typeof(OverflowException), e.GetType());
1449                         }
1450                         
1451                         try {
1452                                 Convert.ToInt32("654", 9);
1453                                 Fail();
1454                         }
1455                         catch (Exception e) {
1456                                 AssertEquals("#K43", typeof(ArgumentException), e.GetType());
1457                         }
1458                 }
1459
1460                 public void TestToInt64() {
1461                         decimal longMax = long.MaxValue;
1462                         longMax += 1000000;
1463                         decimal longMin = long.MinValue;
1464                         longMin -= 1000000;
1465
1466                         AssertEquals("#L01", (long)0, Convert.ToInt64(boolFalse));
1467                         AssertEquals("#L02", (long)1, Convert.ToInt64(boolTrue));
1468                         AssertEquals("#L03", (long)97, Convert.ToInt64(tryChar));
1469                         AssertEquals("#L04", (long)1234, Convert.ToInt64(tryDec));
1470                         AssertEquals("#L05", (long)0, Convert.ToInt64(tryDbl));
1471                         AssertEquals("#L06", (long)1234, Convert.ToInt64(tryInt16));
1472                         AssertEquals("#L07", (long)12345, Convert.ToInt64(tryInt32));
1473                         AssertEquals("#L08", (long)123456789012, Convert.ToInt64(tryInt64));
1474                         AssertEquals("#L09", (long)123, Convert.ToInt64(trySByte));
1475                         AssertEquals("#L10", (long)1234, Convert.ToInt64(tryFloat));
1476                         AssertEquals("#L11", (long)564897, Convert.ToInt64("564897"));
1477                         AssertEquals("#L12", (long)34567, Convert.ToInt64(tryUI16));
1478                         AssertEquals("#L13", (long)567891234, Convert.ToInt64(tryUI32));
1479                         AssertEquals("#L14", (long)0, Convert.ToInt64(tryUI64));
1480                         AssertEquals("#L15", (long)-2548751, Convert.ToInt64("-2548751", ci));
1481                         AssertEquals("#L16", (long)24987562, Convert.ToInt64("1011111010100011110101010", 2));
1482                         AssertEquals("#L17", (long)-24578965, Convert.ToInt64("1777777777777642172153", 8));
1483                         AssertEquals("#L18", (long)248759757, Convert.ToInt64("248759757", 10));
1484                         AssertEquals("#L19", (long)256, Convert.ToInt64("100", 16));
1485
1486                         try {
1487                                 Convert.ToInt64(tryDT);
1488                                 Fail();
1489                         }
1490                         catch (Exception e) {
1491                                 AssertEquals("#L20", typeof(InvalidCastException), e.GetType());
1492                         }
1493
1494                         try {
1495                                 Convert.ToInt64((decimal)longMax + 1);
1496                                 Fail();
1497                         }
1498                         catch (Exception e) {
1499                                 AssertEquals("#L21", typeof(OverflowException), e.GetType());
1500                         }
1501
1502                         try {
1503                                 Convert.ToInt64((decimal)longMin);
1504                                 Fail();
1505                         }
1506                         catch (Exception e) {
1507                                 AssertEquals("#L24", typeof(OverflowException), e.GetType());
1508                         }
1509
1510                         try {
1511                                 Convert.ToInt64((double)longMax);
1512                                 Fail();
1513                         }
1514                         catch (Exception e) {
1515                                 AssertEquals("#L25:"+longMax, typeof(OverflowException), e.GetType());
1516                         }
1517
1518                         try {
1519                                 Convert.ToInt64((double)longMin);
1520                                 Fail();
1521                         }
1522                         catch (Exception e) {
1523                                 AssertEquals("#L26", typeof(OverflowException), e.GetType());
1524                         }
1525
1526                         try {
1527                                 Convert.ToInt64(new Exception());
1528                                 Fail();
1529                         }
1530                         catch (Exception e) {
1531                                 AssertEquals("#L27", typeof(InvalidCastException), e.GetType());
1532                         }
1533
1534                         try {
1535                                 Convert.ToInt64(((float)longMax)*100);
1536                                 Fail();
1537                         }
1538                         catch (Exception e) {
1539                                 AssertEquals("#L28:"+longMax, typeof(OverflowException), e.GetType());
1540                         }
1541
1542                         try {
1543                                 Convert.ToInt64(((float)longMin)*100);
1544                                 Fail();
1545                         }
1546                         catch (Exception e) {
1547                                 AssertEquals("#L29", typeof(OverflowException), e.GetType());
1548                         }
1549
1550                         try {
1551                                 Convert.ToInt64("-567b3");
1552                                 Fail();
1553                         }
1554                         catch (Exception e) {
1555                                 AssertEquals("#L30", typeof(FormatException), e.GetType());
1556                         }
1557
1558                         try {
1559                                 Convert.ToInt64(longMax.ToString());
1560                                 Fail();
1561                         }
1562                         catch (Exception e) {
1563                                 AssertEquals("#L31:", typeof(OverflowException), e.GetType());
1564                         }
1565
1566                         try {
1567                                 Convert.ToInt64(ulong.MaxValue);
1568                                 Fail();
1569                         }
1570                         catch (Exception e) {
1571                                 AssertEquals("#L32", typeof(OverflowException), e.GetType());
1572                         }
1573
1574                         try {
1575                                 Convert.ToInt64(tryStr, ci);
1576                                 Fail();
1577                         }
1578                         catch (Exception e) {
1579                                 AssertEquals("#L32b", typeof(FormatException), e.GetType());
1580                         }
1581                         
1582                         try {
1583                                 Convert.ToInt64(longMin.ToString(), ci);
1584                                 Fail();
1585                         }
1586                         catch (Exception e) {
1587                                 AssertEquals("#L33", typeof(OverflowException), e.GetType());
1588                         }
1589
1590                         try {
1591                                 Convert.ToInt64("321", 11);
1592                                 Fail();
1593                         }
1594                         catch (Exception e) {
1595                                 AssertEquals("#L34", typeof(ArgumentException), e.GetType());
1596                         }
1597                 }
1598
1599                 public void TestToSByte() {
1600                         int iTest = 1;
1601                         try {
1602                                 AssertEquals("#M01", (sbyte)0, Convert.ToSByte(boolFalse));
1603                                 iTest++;
1604                                 AssertEquals("#M02", (sbyte)1, Convert.ToSByte(boolTrue));
1605                                 iTest++;
1606                                 AssertEquals("#M03", (sbyte)97, Convert.ToSByte(tryChar));
1607                                 iTest++;
1608                                 AssertEquals("#M04", (sbyte)15, Convert.ToSByte((decimal)15));
1609                                 iTest++;
1610                                 AssertEquals("#M05", (sbyte)0, Convert.ToSByte(tryDbl));
1611                                 iTest++;
1612                                 AssertEquals("#M06", (sbyte)127, Convert.ToSByte((short)127));
1613                                 iTest++;
1614                                 AssertEquals("#M07", (sbyte)-128, Convert.ToSByte((int)-128));
1615                                 iTest++;
1616                                 AssertEquals("#M08", (sbyte)30, Convert.ToSByte((long)30));
1617                                 iTest++;
1618                                 AssertEquals("#M09", (sbyte)123, Convert.ToSByte(trySByte));
1619                                 iTest++;
1620                                 AssertEquals("#M10", (sbyte)12, Convert.ToSByte((float)12.46987f));
1621                                 iTest++;
1622                                 AssertEquals("#M11", (sbyte)1, Convert.ToSByte("1"));
1623                                 iTest++;
1624                                 AssertEquals("#M12", (sbyte)99, Convert.ToSByte((ushort)99));
1625                                 iTest++;
1626                                 AssertEquals("#M13", (sbyte)54, Convert.ToSByte((uint)54));
1627                                 iTest++;
1628                                 AssertEquals("#M14", (sbyte)127, Convert.ToSByte((ulong)127));
1629                                 iTest++;
1630                                 AssertEquals("#M15", (sbyte)14, Convert.ToSByte("14", ci));
1631                                 iTest++;
1632                                 AssertEquals("#M16", (sbyte)11, Convert.ToSByte("01011", 2));
1633                                 iTest++;
1634                                 AssertEquals("#M17", (sbyte)5, Convert.ToSByte("5", 8));
1635                                 iTest++;
1636                                 AssertEquals("#M18", (sbyte)100, Convert.ToSByte("100", 10));
1637                                 iTest++;
1638                                 AssertEquals("#M19", (sbyte)-1, Convert.ToSByte("FF", 16));
1639                         } catch (Exception e) {
1640                                 Fail ("Unexpected exception at iTest = " + iTest + ": e = " + e);
1641                         }
1642
1643                         try {
1644                                 Convert.ToSByte((byte)200);
1645                                 Fail();
1646                         }
1647                         catch (Exception e) {
1648                                 AssertEquals("#M25", typeof(OverflowException), e.GetType());
1649                         }
1650
1651                         try {
1652                                 Convert.ToSByte((char)130);
1653                                 Fail();
1654                         }
1655                         catch (Exception e) {
1656                                 AssertEquals("#M26", typeof(OverflowException), e.GetType());
1657                         }
1658
1659                         try {
1660                                 Convert.ToSByte(tryDT);
1661                                 Fail();
1662                         }
1663                         catch (Exception e) {
1664                                 AssertEquals("#M27", typeof(InvalidCastException), e.GetType());
1665                         }
1666
1667                         try {
1668                                 Convert.ToSByte((decimal)127.5m);
1669                                 Fail();
1670                         }
1671                         catch (Exception e) {
1672                                 AssertEquals("#M28", typeof(OverflowException), e.GetType());
1673                         }
1674
1675                         try {
1676                                 Convert.ToSByte((decimal)-200m);
1677                                 Fail();
1678                         }
1679                         catch (Exception e) {
1680                                 AssertEquals("#M29", typeof(OverflowException), e.GetType());
1681                         }
1682
1683                         try {
1684                                 Convert.ToSByte((double)150);
1685                                 Fail();
1686                         }
1687                         catch (Exception e) {
1688                                 AssertEquals("#M30", typeof(OverflowException), e.GetType());
1689                         }
1690
1691                         try {
1692                                 Convert.ToSByte((double)-128.6);
1693                                 Fail();
1694                         }
1695                         catch (Exception e) {
1696                                 AssertEquals("#M31", typeof(OverflowException), e.GetType());
1697                         }
1698
1699                         try {
1700                                 Convert.ToSByte((short)150);
1701                                 Fail();
1702                         }
1703                         catch (Exception e) {
1704                                 AssertEquals("#M32", typeof(OverflowException), e.GetType());
1705                         }
1706
1707                         try {
1708                                 Convert.ToSByte((short)-300);
1709                                 Fail();
1710                         }
1711                         catch (Exception e) {
1712                                 AssertEquals("#M33", typeof(OverflowException), e.GetType());
1713                         }
1714
1715                         try {
1716                                 Convert.ToSByte((int)1500);
1717                                 Fail();
1718                         }
1719                         catch (Exception e) {
1720                                 AssertEquals("#M34", typeof(OverflowException), e.GetType());
1721                         }
1722
1723                         try {
1724                                 Convert.ToSByte((int)-1286);
1725                                 Fail();
1726                         }
1727                         catch (Exception e) {
1728                                 AssertEquals("#M35", typeof(OverflowException), e.GetType());
1729                         }
1730
1731                         try {
1732                                 Convert.ToSByte((long)128);
1733                                 Fail();
1734                         }
1735                         catch (Exception e) {
1736                                 AssertEquals("#M36", typeof(OverflowException), e.GetType());
1737                         }
1738
1739                         try {
1740                                 Convert.ToSByte((long)-129);
1741                                 Fail();
1742                         }
1743                         catch (Exception e) {
1744                                 AssertEquals("#M37", typeof(OverflowException), e.GetType());
1745                         }
1746
1747                         try {
1748                                 Convert.ToSByte(new NumberFormatInfo());
1749                                 Fail();
1750                         }
1751                         catch (Exception e) {
1752                                 AssertEquals("#M38", typeof(InvalidCastException), e.GetType());
1753                         }
1754
1755                         try {
1756                                 Convert.ToSByte((float)333);
1757                                 Fail();
1758                         }
1759                         catch (Exception e) {
1760                                 AssertEquals("#M39", typeof(OverflowException), e.GetType());
1761                         }
1762
1763                         try {
1764                                 Convert.ToSByte((float)-666);
1765                                 Fail();
1766                         }
1767                         catch (Exception e) {
1768                                 AssertEquals("#M40", typeof(OverflowException), e.GetType());
1769                         }
1770
1771                         try {
1772                                 Convert.ToSByte("B3");
1773                                 Fail();
1774                         }
1775                         catch (Exception e) {
1776                                 AssertEquals("#M41", typeof(FormatException), e.GetType());
1777                         }
1778
1779                         try {
1780                                 Convert.ToSByte("251");
1781                                 Fail();
1782                         }
1783                         catch (Exception e) {
1784                                 AssertEquals("#M42", typeof(OverflowException), e.GetType());
1785                         }
1786
1787                         try {
1788                                 Convert.ToSByte(ushort.MaxValue);
1789                                 Fail();
1790                         }
1791                         catch (Exception e) {
1792                                 AssertEquals("#M43", typeof(OverflowException), e.GetType());
1793                         }
1794
1795                         try {
1796                                 Convert.ToSByte((uint)600);
1797                                 Fail();
1798                         }
1799                         catch (Exception e) {
1800                                 AssertEquals("#M44", typeof(OverflowException), e.GetType());
1801                         }
1802
1803                         try {
1804                                 Convert.ToSByte(ulong.MaxValue);
1805                                 Fail();
1806                         }
1807                         catch (Exception e) {
1808                                 AssertEquals("#M45", typeof(OverflowException), e.GetType());
1809                         }
1810
1811                         try {
1812                                 Convert.ToSByte(ci, ci);
1813                                 Fail();
1814                         }
1815                         catch (Exception e) {
1816                                 AssertEquals("#M46", typeof(InvalidCastException), e.GetType());
1817                         }
1818
1819                         try {
1820                                 Convert.ToSByte(tryStr, ci);
1821                                 Fail();
1822                         }
1823                         catch (Exception e) {
1824                                 AssertEquals("#M47", typeof(FormatException), e.GetType());
1825                         }
1826                         
1827                         try {
1828                                 Convert.ToSByte("325", ci);
1829                                 Fail();
1830                         }
1831                         catch (Exception e) {
1832                                 AssertEquals("#M48", typeof(OverflowException), e.GetType());
1833                         }
1834
1835                         try {
1836                                 Convert.ToSByte("5D", 15);
1837                                 Fail();
1838                         }
1839                         catch (Exception e) {
1840                                 AssertEquals("#M49", typeof(ArgumentException), e.GetType());
1841                         }
1842                         
1843                         try {                                                   
1844                                 Convert.ToSByte("111111111", 2);
1845                                 Fail();
1846                         }
1847                         catch (Exception e) {
1848                                 AssertEquals("#M50", typeof(OverflowException), e.GetType());
1849                         }
1850                 }
1851
1852                 public void TestToSingle() {
1853                         int iTest = 1;
1854                         try {
1855                                 AssertEquals("#N01", (float)0, Convert.ToSingle(boolFalse));
1856                                 iTest++;
1857                                 AssertEquals("#N02", (float)1, Convert.ToSingle(boolTrue));
1858                                 iTest++;
1859                                 AssertEquals("#N03", (float)0, Convert.ToSingle(tryByte));
1860                                 iTest++;
1861                                 AssertEquals("#N04", (float)1234,234, Convert.ToSingle(tryDec));
1862                                 iTest++;
1863                                 AssertEquals("#N05", (float)0, Convert.ToSingle(tryDbl));
1864                                 iTest++;
1865                                 AssertEquals("#N06", (float)1234, Convert.ToSingle(tryInt16));
1866                                 iTest++;
1867                                 AssertEquals("#N07", (float)12345, Convert.ToSingle(tryInt32));
1868                                 iTest++;
1869                                 AssertEquals("#N08", (float)123456789012, Convert.ToSingle(tryInt64));
1870                                 iTest++;
1871                                 AssertEquals("#N09", (float)123, Convert.ToSingle(trySByte));
1872                                 iTest++;
1873                                 AssertEquals("#N10", (float)1234,2345, Convert.ToSingle(tryFloat));
1874                                 iTest++;
1875                                 AssertEquals("#N11", (float)987, Convert.ToSingle("987"));
1876                                 iTest++;
1877                                 AssertEquals("#N12", (float)34567, Convert.ToSingle(tryUI16));
1878                                 iTest++;
1879                                 AssertEquals("#N13", (float)567891234, Convert.ToSingle(tryUI32));
1880                                 iTest++;
1881                                 AssertEquals("#N14", (float)0, Convert.ToSingle(tryUI64));
1882                                 iTest++;
1883                                 AssertEquals("#N15", (float)654.234, Convert.ToSingle("654.234", ci));
1884                         } catch (Exception e) {
1885                                 Fail ("Unexpected exception at iTest = " + iTest + ": e = " + e);
1886                         }
1887
1888                         try {
1889                                 Convert.ToSingle(tryChar);
1890                                 Fail();
1891                         }
1892                         catch (Exception e) {
1893                                 AssertEquals("#N25", typeof(InvalidCastException), e.GetType());
1894                         }
1895
1896                         try {
1897                                 Convert.ToSingle(tryDT);
1898                                 Fail();
1899                         }
1900                         catch (Exception e) {
1901                                 AssertEquals("#N26", typeof(InvalidCastException), e.GetType());
1902                         }
1903
1904                         try {
1905                                 Convert.ToSingle(tryObj);
1906                                 Fail();
1907                         }
1908                         catch (Exception e) {
1909                                 AssertEquals("#N27", typeof(InvalidCastException), e.GetType());
1910                         }
1911                         
1912                         try {
1913                                 Convert.ToSingle("A345H");
1914                                 Fail();
1915                         }
1916                         catch (Exception e) {
1917                                 AssertEquals("#N28", typeof(FormatException), e.GetType());
1918                         }
1919                         
1920                         try {
1921                                 Convert.ToSingle(double.MaxValue.ToString());
1922                                 Fail();
1923                         }
1924                         catch (Exception e) {
1925                                 AssertEquals("#N29", typeof(OverflowException), e.GetType());
1926                         }
1927
1928                         try {
1929                                 Convert.ToSingle(tryObj, ci);
1930                                 Fail();
1931                         }
1932                         catch (Exception e) {
1933                                 AssertEquals("#N30", typeof(InvalidCastException), e.GetType());
1934                         }
1935
1936                         try {
1937                                 Convert.ToSingle("J345K", ci);
1938                                 Fail();
1939                         }
1940                         catch (Exception e) {
1941                                 AssertEquals("#N31", typeof(FormatException), e.GetType());
1942                         }
1943
1944                         try {
1945                                 Convert.ToSingle("11000000000000000000000000000000000000000000000", ci);
1946                                 Fail();
1947                         }
1948                         catch (Exception e) {
1949                                 AssertEquals("#N32", typeof(OverflowException), e.GetType());
1950                         }
1951                 }
1952
1953                 public void TestToString() {
1954                         
1955                         tryByte = 123;
1956                         AssertEquals("#O01", "False", Convert.ToString(boolFalse));
1957                         AssertEquals("#O02", "True", Convert.ToString(boolTrue));
1958                         AssertEquals("#O03", "123", Convert.ToString(tryByte));
1959                         AssertEquals("#O04", "a", Convert.ToString(tryChar));
1960                         AssertEquals("#O05", tryDT.ToString(), Convert.ToString(tryDT));
1961                         AssertEquals("#O06", tryDec.ToString(), Convert.ToString(tryDec));
1962                         AssertEquals("#O07", tryDbl.ToString(), Convert.ToString(tryDbl));
1963                         AssertEquals("#O08", "1234", Convert.ToString(tryInt16));
1964                         AssertEquals("#O09", "12345", Convert.ToString(tryInt32));
1965                         AssertEquals("#O10", "123456789012", Convert.ToString(tryInt64));
1966                         AssertEquals("#O11", "123", Convert.ToString(trySByte));
1967                         AssertEquals("#O12", tryFloat.ToString(), Convert.ToString(tryFloat));
1968                         AssertEquals("#O13", "foobar", Convert.ToString(tryStr));
1969                         AssertEquals("#O14", "34567", Convert.ToString(tryUI16));
1970                         AssertEquals("#O15", "567891234", Convert.ToString(tryUI32));
1971                         AssertEquals("#O16", "True", Convert.ToString(boolTrue, ci));
1972                         AssertEquals("#O17", "False", Convert.ToString(boolFalse, ci));
1973                         AssertEquals("#O18", "123", Convert.ToString(tryByte, ci));
1974                         AssertEquals("#O19", "1111011", Convert.ToString(tryByte, 2));
1975                         AssertEquals("#O20", "173", Convert.ToString(tryByte, 8));
1976                         AssertEquals("#O21", "123", Convert.ToString(tryByte, 10));
1977                         AssertEquals("#O22", "7b", Convert.ToString(tryByte, 16));
1978                         AssertEquals("#O23", "a", Convert.ToString(tryChar, ci));
1979                         AssertEquals("#O24", tryDT.ToString(ci), Convert.ToString(tryDT, ci));
1980                         AssertEquals("#O25", tryDec.ToString(ci), Convert.ToString(tryDec,ci));
1981                         AssertEquals("#O26", tryDbl.ToString(ci), Convert.ToString(tryDbl, ci));
1982                         AssertEquals("#O27", "1234", Convert.ToString(tryInt16, ci));
1983                         AssertEquals("#O28", "10011010010", Convert.ToString(tryInt16, 2));
1984                         AssertEquals("#O29", "2322", Convert.ToString(tryInt16, 8));
1985                         AssertEquals("#O30", "1234", Convert.ToString(tryInt16, 10));
1986                         AssertEquals("#O31", "4d2", Convert.ToString(tryInt16, 16));
1987                         AssertEquals("#O32", "12345", Convert.ToString(tryInt32, ci));
1988                         AssertEquals("#O33", "11000000111001", Convert.ToString(tryInt32, 2));
1989                         AssertEquals("#O34", "30071", Convert.ToString(tryInt32, 8));
1990                         AssertEquals("#O35", "12345", Convert.ToString(tryInt32, 10));
1991                         AssertEquals("#O36", "3039", Convert.ToString(tryInt32, 16));
1992                         AssertEquals("#O37", "123456789012", Convert.ToString(tryInt64, ci));
1993                         AssertEquals("#O38", "1110010111110100110010001101000010100",
1994                                 Convert.ToString(tryInt64, 2));
1995                         AssertEquals("#O39", "1627646215024", Convert.ToString(tryInt64, 8));
1996                         AssertEquals("#O40", "123456789012", Convert.ToString(tryInt64, 10));
1997                         AssertEquals("#O41", "1cbe991a14", Convert.ToString(tryInt64, 16));
1998                         AssertEquals("#O42", "123", Convert.ToString((trySByte), ci));
1999                         AssertEquals("#O43", tryFloat.ToString(ci), Convert.ToString((tryFloat), ci));
2000                         AssertEquals("#O44", "foobar", Convert.ToString((tryStr), ci));
2001                         AssertEquals("#O45", "34567", Convert.ToString((tryUI16), ci));
2002                         AssertEquals("#O46", "567891234", Convert.ToString((tryUI32), ci));
2003                         AssertEquals("#O47", "0", Convert.ToString(tryUI64));
2004                         AssertEquals("#O48", "0", Convert.ToString((tryUI64), ci));
2005
2006                         try {
2007                                 Convert.ToString(tryInt16, 5);
2008                                 Fail();
2009                         }
2010                         catch (Exception e) {
2011                                 AssertEquals("#O55", typeof(ArgumentException), e.GetType());
2012                         }
2013
2014                         try {
2015                                 Convert.ToString(tryInt32, 17);
2016                                 Fail();
2017                         }
2018                         catch (Exception e) {
2019                                 AssertEquals("#O56", typeof(ArgumentException), e.GetType());
2020                         }
2021
2022                         try {
2023                                 Convert.ToString(tryInt64, 1);
2024                                 Fail();
2025                         }
2026                         catch (Exception e) {
2027                                 AssertEquals("#O57", typeof(ArgumentException), e.GetType());
2028                         }                       
2029                 }
2030
2031                 public void TestToUInt16() {
2032                         AssertEquals("#P01", (ushort)0, Convert.ToUInt16(boolFalse));
2033                         AssertEquals("#P02", (ushort)1, Convert.ToUInt16(boolTrue));
2034                         AssertEquals("#P03", (ushort)0, Convert.ToUInt16(tryByte));
2035                         AssertEquals("#P04", (ushort)97, Convert.ToUInt16(tryChar));
2036                         AssertEquals("#P05", (ushort)1234, Convert.ToUInt16(tryDec));
2037                         AssertEquals("#P06", (ushort)0, Convert.ToUInt16(tryDbl));
2038                         AssertEquals("#P07", (ushort)1234, Convert.ToUInt16(tryInt16));
2039                         AssertEquals("#P08", (ushort)12345, Convert.ToUInt16(tryInt32));
2040                         AssertEquals("#P09", (ushort)43752, Convert.ToUInt16((long)43752));
2041                         AssertEquals("#P10", (ushort)123, Convert.ToUInt16(trySByte));
2042                         AssertEquals("#P11", (ushort)1234, Convert.ToUInt16(tryFloat));
2043                         AssertEquals("#P12", (ushort)123, Convert.ToUInt16((string)"123"));
2044                         AssertEquals("#P13", (ushort)34567, Convert.ToUInt16(tryUI16));
2045                         AssertEquals("#P14", (ushort)56789, Convert.ToUInt16((uint)56789));
2046                         AssertEquals("#P15", (ushort)0, Convert.ToUInt16(tryUI64));
2047                         AssertEquals("#P16", (ushort)31, Convert.ToUInt16("31", ci));
2048                         AssertEquals("#P17", (ushort)14, Convert.ToUInt16("1110", 2));
2049                         AssertEquals("#P18", (ushort)32, Convert.ToUInt16("40", 8));
2050                         AssertEquals("#P19", (ushort)40, Convert.ToUInt16("40", 10));
2051                         AssertEquals("#P20", (ushort)64, Convert.ToUInt16("40", 16));
2052
2053
2054                         try {
2055                                 Convert.ToUInt16(tryDT);
2056                                 Fail();
2057                         }
2058                         catch (Exception e) {
2059                                 AssertEquals("#P25", typeof(InvalidCastException), e.GetType());
2060                         }
2061
2062                         try {
2063                                 Convert.ToUInt16(decimal.MaxValue);
2064                                 Fail();
2065                         }
2066                         catch (Exception e) {
2067                                 AssertEquals("#P26", typeof(OverflowException), e.GetType());
2068                         }
2069
2070                         try {
2071                                 Convert.ToUInt16(decimal.MinValue);
2072                                 Fail();
2073                         }
2074                         catch (Exception e) {
2075                                 AssertEquals("#P27", typeof(OverflowException), e.GetType());
2076                         }
2077
2078                         try {
2079                                 Convert.ToUInt16(double.MaxValue);
2080                                 Fail();
2081                         }
2082                         catch (Exception e) {
2083                                 AssertEquals("#P28", typeof(OverflowException), e.GetType());
2084                         }
2085
2086                         try {
2087                                 Convert.ToUInt16(double.MinValue);
2088                                 Fail();
2089                         }
2090                         catch (Exception e) {
2091                                 AssertEquals("#P29", typeof(OverflowException), e.GetType());
2092                         }
2093
2094                         try {
2095                                 Convert.ToUInt16(short.MinValue);
2096                                 Fail();
2097                         }
2098                         catch (Exception e) {
2099                                 AssertEquals("#P30", typeof(OverflowException), e.GetType());
2100                         }
2101
2102                         try {
2103                                 Convert.ToUInt16(int.MaxValue);
2104                                 Fail();
2105                         }
2106                         catch (Exception e) {
2107                                 AssertEquals("#P31", typeof(OverflowException), e.GetType());
2108                         }
2109
2110                         try {
2111                                 Convert.ToUInt16(int.MinValue);
2112                                 Fail();
2113                         }
2114                         catch (Exception e) {
2115                                 AssertEquals("#P32", typeof(OverflowException), e.GetType());
2116                         }
2117
2118                         try {
2119                                 Convert.ToUInt16(long.MaxValue);
2120                                 Fail();
2121                         }
2122                         catch (Exception e) {
2123                                 AssertEquals("#P33", typeof(OverflowException), e.GetType());
2124                         }
2125
2126                         try {
2127                                 Convert.ToUInt16(long.MinValue);
2128                                 Fail();
2129                         }
2130                         catch (Exception e) {
2131                                 AssertEquals("#P34", typeof(OverflowException), e.GetType());
2132                         }
2133
2134                         try {
2135                                 Convert.ToUInt16(tryObj);
2136                                 Fail();
2137                         }
2138                         catch (Exception e) {
2139                                 AssertEquals("#P35", typeof(InvalidCastException), e.GetType());
2140                         }
2141
2142                         try {
2143                                 Convert.ToUInt16(sbyte.MinValue);
2144                                 Fail();
2145                         }
2146                         catch (Exception e) {
2147                                 AssertEquals("#P36", typeof(OverflowException), e.GetType());
2148                         }
2149
2150                         try {
2151                                 Convert.ToUInt16(float.MaxValue);
2152                                 Fail();
2153                         }
2154                         catch (Exception e) {
2155                                 AssertEquals("#P37", typeof(OverflowException), e.GetType());
2156                         }
2157
2158                         try {
2159                                 Convert.ToUInt16(float.MinValue);
2160                                 Fail();
2161                         }
2162                         catch (Exception e) {
2163                                 AssertEquals("#P38", typeof(OverflowException), e.GetType());
2164                         }
2165                         
2166                         try {
2167                                 Convert.ToUInt16("1A2");
2168                                 Fail();
2169                         }
2170                         catch (Exception e) {
2171                                 AssertEquals("#P39", typeof(FormatException), e.GetType());
2172                         }
2173
2174                         try {
2175                                 Convert.ToUInt16("-32800");
2176                                 Fail();
2177                         }
2178                         catch (Exception e) {
2179                                 AssertEquals("#P40", typeof(OverflowException), e.GetType());
2180                         }
2181
2182                         try {
2183                                 Convert.ToUInt16(int.MaxValue.ToString());
2184                                 Fail();
2185                         }
2186                         catch (Exception e) {
2187                                 AssertEquals("#P41", typeof(OverflowException), e.GetType());
2188                         }
2189
2190                         try {
2191                                 Convert.ToUInt16(ulong.MaxValue);
2192                                 Fail();
2193                         }
2194                         catch (Exception e) {
2195                                 AssertEquals("#P42", typeof(OverflowException), e.GetType());
2196                         }
2197
2198                         try {
2199                                 Convert.ToUInt16("1A2", ci);
2200                                 Fail();
2201                         }
2202                         catch (Exception e) {
2203                                 AssertEquals("#P43", typeof(FormatException), e.GetType());
2204                         }
2205
2206                         try {
2207                                 Convert.ToUInt16("-32800", ci);
2208                                 Fail();
2209                         }
2210                         catch (Exception e) {
2211                                 AssertEquals("#P44", typeof(OverflowException), e.GetType());
2212                         }
2213
2214                         try {
2215                                 Convert.ToUInt16("456987", ci);
2216                                 Fail();
2217                         }
2218                         catch (Exception e) {
2219                                 AssertEquals("#P45", typeof(OverflowException), e.GetType());
2220                         }
2221
2222                         try {
2223                                 Convert.ToUInt16("40", 9);
2224                                 Fail();
2225                         }
2226                         catch (Exception e) {
2227                                 AssertEquals("#P46", typeof(ArgumentException), e.GetType());
2228                         }
2229
2230                         try {
2231                                 Convert.ToUInt16 ("abcde", 16);
2232                                 Fail ();
2233                         }
2234                         catch (Exception e) {
2235                                 AssertEquals ("#P47", typeof (OverflowException), e.GetType ());
2236                         }
2237                 }
2238
2239                 public void TestSignedToInt() {
2240                   //  String cannot contain a minus sign if the base is not 10.
2241                   // But can if it is ten, and + is allowed everywhere.
2242                   AssertEquals("Signed0", -1, Convert.ToInt32 ("-1", 10));
2243                   AssertEquals("Signed1", 1, Convert.ToInt32 ("+1", 10));
2244                   AssertEquals("Signed2", 1, Convert.ToInt32 ("+1", 2));
2245                   AssertEquals("Signed3", 1, Convert.ToInt32 ("+1", 8));
2246                   AssertEquals("Signed4", 1, Convert.ToInt32 ("+1", 16));
2247                   
2248                   try {
2249                         Convert.ToInt32("-1", 2);
2250                         Fail();
2251                   }
2252                   catch (Exception) {
2253                   }
2254                   try {
2255                         Convert.ToInt32("-1", 8);
2256                         Fail();
2257                   }
2258                   catch (Exception) {
2259                   }
2260                   try {
2261                         Convert.ToInt32("-1", 16);
2262                         Fail();
2263                   }
2264                   catch (Exception) {
2265                   }
2266
2267
2268                 }
2269         
2270                 public void TestToUInt32() {
2271                         AssertEquals("#Q01", (uint)1, Convert.ToUInt32(boolTrue));
2272                         AssertEquals("#Q02", (uint)0, Convert.ToUInt32(boolFalse));
2273                         AssertEquals("#Q03", (uint)0, Convert.ToUInt32(tryByte));
2274                         AssertEquals("#Q04", (uint)97, Convert.ToUInt32(tryChar));
2275                         AssertEquals("#Q05", (uint)1234, Convert.ToUInt32(tryDec));
2276                         AssertEquals("#Q06", (uint)0, Convert.ToUInt32(tryDbl));
2277                         AssertEquals("#Q07", (uint)1234, Convert.ToUInt32(tryInt16));
2278                         AssertEquals("#Q08", (uint)12345, Convert.ToUInt32(tryInt32));
2279                         AssertEquals("#Q09", (uint)1234567890, Convert.ToUInt32((long)1234567890));
2280                         AssertEquals("#Q10", (uint)123, Convert.ToUInt32(trySByte));
2281                         AssertEquals("#Q11", (uint)1234, Convert.ToUInt32(tryFloat));
2282                         AssertEquals("#Q12", (uint)3456789, Convert.ToUInt32("3456789"));
2283                         AssertEquals("#Q13", (uint)34567, Convert.ToUInt32(tryUI16));
2284                         AssertEquals("#Q14", (uint)567891234, Convert.ToUInt32(tryUI32));
2285                         AssertEquals("#Q15", (uint)0, Convert.ToUInt32(tryUI64));
2286                         AssertEquals("#Q16", (uint)415, Convert.ToUInt32("110011111", 2));
2287                         AssertEquals("#Q17", (uint)156, Convert.ToUInt32("234" ,8));
2288                         AssertEquals("#Q18", (uint)234, Convert.ToUInt32("234" ,10));
2289                         AssertEquals("#Q19", (uint)564, Convert.ToUInt32("234" ,16));
2290                         
2291
2292                         try {
2293                                 Convert.ToUInt32(tryDT);
2294                                 Fail();
2295                         }
2296                         catch (Exception e) {
2297                                 AssertEquals("#Q25", typeof(InvalidCastException), e.GetType());
2298                         }
2299
2300                         try {
2301                                 Convert.ToUInt32(decimal.MaxValue);
2302                                 Fail();
2303                         }
2304                         catch (Exception e) {
2305                                 AssertEquals("#Q26", typeof(OverflowException), e.GetType());
2306                         }
2307
2308                         try {
2309                                 Convert.ToUInt32((decimal)-150);
2310                                 Fail();
2311                         }
2312                         catch (Exception e) {
2313                                 AssertEquals("#Q27", typeof(OverflowException), e.GetType());
2314                         }
2315
2316                         try {
2317                                 Convert.ToUInt32(double.MaxValue);
2318                                 Fail();
2319                         }
2320                         catch (Exception e) {
2321                                 AssertEquals("#Q28", typeof(OverflowException), e.GetType());
2322                         }
2323
2324                         try {
2325                                 Convert.ToUInt32((double)-1);
2326                                 Fail();
2327                         }
2328                         catch (Exception e) {
2329                                 AssertEquals("#Q29", typeof(OverflowException), e.GetType());
2330                         }
2331
2332                         try {
2333                                 Convert.ToUInt32(short.MinValue);
2334                                 Fail();
2335                         }
2336                         catch (Exception e) {
2337                                 AssertEquals("#Q30", typeof(OverflowException), e.GetType());
2338                         }
2339
2340                         try {
2341                                 Convert.ToUInt32(int.MinValue);
2342                                 Fail();
2343                         }
2344                         catch (Exception e) {
2345                                 AssertEquals("#Q31", typeof(OverflowException), e.GetType());
2346                         }
2347
2348                         try {
2349                                 Convert.ToUInt32(long.MaxValue);
2350                                 Fail();
2351                         }
2352                         catch (Exception e) {
2353                                 AssertEquals("#Q32", typeof(OverflowException), e.GetType());
2354                         }
2355
2356                         try {
2357                                 Convert.ToUInt32((long)-50000);
2358                                 Fail();
2359                         }
2360                         catch (Exception e) {
2361                                 AssertEquals("#Q33", typeof(OverflowException), e.GetType());
2362                         }
2363
2364                         try {
2365                                 Convert.ToUInt32(new Exception());
2366                                 Fail();
2367                         }
2368                         catch (Exception e) {
2369                                 AssertEquals("#Q34", typeof(InvalidCastException), e.GetType());
2370                         }
2371
2372                         try {
2373                                 Convert.ToUInt32(sbyte.MinValue);
2374                                 Fail();
2375                         }
2376                         catch (Exception e) {
2377                                 AssertEquals("#Q35", typeof(OverflowException), e.GetType());
2378                         }
2379
2380                         try {
2381                                 Convert.ToUInt32(float.MaxValue);
2382                                 Fail();
2383                         }
2384                         catch (Exception e) {
2385                                 AssertEquals("#Q36", typeof(OverflowException), e.GetType());
2386                         }
2387
2388                         try {
2389                                 Convert.ToUInt32(float.MinValue);
2390                                 Fail();
2391                         }
2392                         catch (Exception e) {
2393                                 AssertEquals("#Q37", typeof(OverflowException), e.GetType());
2394                         }
2395
2396                         try {
2397                                 Convert.ToUInt32("45t54");
2398                                 Fail();
2399                         }
2400                         catch (Exception e) {
2401                                 AssertEquals("#Q38", typeof(FormatException), e.GetType());
2402                         }
2403
2404                         try {
2405                                 Convert.ToUInt32("-55");
2406                                 Fail();
2407                         }
2408                         catch (Exception e) {
2409                                 AssertEquals("#Q39", typeof(OverflowException), e.GetType());
2410                         }
2411
2412                         try {
2413                                 Convert.ToUInt32(ulong.MaxValue);
2414                                 Fail();
2415                         }
2416                         catch (Exception e) {
2417                                 AssertEquals("#Q40", typeof(OverflowException), e.GetType());
2418                         }
2419
2420                         try {
2421                                 Convert.ToUInt32(new Exception(), ci);
2422                                 Fail();
2423                         }
2424                         catch (Exception e) {
2425                                 AssertEquals("#Q41", typeof(InvalidCastException), e.GetType());
2426                         }
2427
2428                         try {
2429                                 Convert.ToUInt32(tryStr, ci);
2430                                 Fail();
2431                         }
2432                         catch (Exception e) {
2433                                 AssertEquals("#Q42", typeof(FormatException), e.GetType());
2434                         }
2435
2436                         try {
2437                                 Convert.ToUInt32("-50", ci);
2438                                 Fail();
2439                         }
2440                         catch (Exception e) {
2441                                 AssertEquals("#Q43", typeof(OverflowException), e.GetType());
2442                         }
2443
2444                         try {
2445                                 Convert.ToUInt32(decimal.MaxValue.ToString(), ci);
2446                                 Fail();
2447                         }
2448                         catch (Exception e) {
2449                                 AssertEquals("#Q44", typeof(OverflowException), e.GetType());
2450                         }
2451
2452                         try {
2453                                 Convert.ToUInt32("1001110", 1);
2454                                 Fail();
2455                         }
2456                         catch (Exception e) {
2457                                 AssertEquals("#Q45", typeof(ArgumentException), e.GetType());
2458                         }
2459                 }
2460
2461                 public void TestToUInt64() 
2462                 {
2463                         int iTest = 1;
2464                         try {
2465                                 AssertEquals("#R01", (ulong)1, Convert.ToUInt64(boolTrue));
2466                                 iTest++;
2467                                 AssertEquals("#R02", (ulong)0, Convert.ToUInt64(boolFalse));
2468                                 iTest++;
2469                                 AssertEquals("#R03", (ulong)0, Convert.ToUInt64(tryByte));
2470                                 iTest++;
2471                                 AssertEquals("#R04", (ulong)97, Convert.ToUInt64(tryChar));
2472                                 iTest++;
2473                                 AssertEquals("#R05", (ulong)1234, Convert.ToUInt64(tryDec));
2474                                 iTest++;
2475                                 AssertEquals("#R06", (ulong)0, Convert.ToUInt64(tryDbl));
2476                                 iTest++;
2477                                 AssertEquals("#R07", (ulong)1234, Convert.ToUInt64(tryInt16));
2478                                 iTest++;
2479                                 AssertEquals("#R08", (ulong)12345, Convert.ToUInt64(tryInt32));
2480                                 iTest++;
2481                                 AssertEquals("#R09", (ulong)123456789012, Convert.ToUInt64(tryInt64));
2482                                 iTest++;
2483                                 AssertEquals("#R10", (ulong)123, Convert.ToUInt64(trySByte));
2484                                 iTest++;
2485                                 AssertEquals("#R11", (ulong)1234, Convert.ToUInt64(tryFloat));
2486                                 iTest++;
2487                                 AssertEquals("#R12", (ulong)345678, Convert.ToUInt64("345678"));
2488                                 iTest++;
2489                                 AssertEquals("#R13", (ulong)34567, Convert.ToUInt64(tryUI16));
2490                                 iTest++;
2491                                 AssertEquals("#R14", (ulong)567891234, Convert.ToUInt64(tryUI32));
2492                                 iTest++;
2493                                 AssertEquals("#R15", (ulong)0, Convert.ToUInt64(tryUI64));
2494                                 iTest++;
2495                                 AssertEquals("#R16", (ulong)123, Convert.ToUInt64("123", ci));
2496                                 iTest++;
2497                                 AssertEquals("#R17", (ulong)4, Convert.ToUInt64("100", 2));
2498                                 iTest++;
2499                                 AssertEquals("#R18", (ulong)64, Convert.ToUInt64("100", 8));
2500                                 iTest++;
2501                                 AssertEquals("#R19", (ulong)100, Convert.ToUInt64("100", 10));
2502                                 iTest++;
2503                                 AssertEquals("#R20", (ulong)256, Convert.ToUInt64("100", 16));
2504                         } catch (Exception e) {
2505                                 Fail ("Unexpected exception caught when iTest = " + iTest + ": e = " + e);
2506                         }
2507
2508                         try {
2509                                 Convert.ToUInt64(tryDT);
2510                                 Fail();
2511                         }
2512                         catch (Exception e) {
2513                                 AssertEquals("#R25", typeof(InvalidCastException), e.GetType());
2514                         }
2515
2516                         try {
2517                                 Convert.ToUInt64(decimal.MaxValue);
2518                                 Fail();
2519                         }
2520                         catch (Exception e) {
2521                                 AssertEquals("#R26", typeof(OverflowException), e.GetType());
2522                         }
2523
2524                         try {
2525                                 Convert.ToUInt64((decimal)-140);
2526                                 Fail();
2527                         }
2528                         catch (Exception e) {
2529                                 AssertEquals("#R27", typeof(OverflowException), e.GetType());
2530                         }
2531
2532                         try {
2533                                 Convert.ToUInt64(double.MaxValue);
2534                                 Fail();
2535                         }
2536                         catch (Exception e) {
2537                                 AssertEquals("#R28", typeof(OverflowException), e.GetType());
2538                         }
2539
2540                         try {
2541                                 Convert.ToUInt64((double)-1);
2542                                 Fail();
2543                         }
2544                         catch (Exception e) {
2545                                 AssertEquals("#R29", typeof(OverflowException), e.GetType());
2546                         }
2547
2548                         try {
2549                                 Convert.ToUInt64(short.MinValue);
2550                                 Fail();
2551                         }
2552                         catch (Exception e) {
2553                                 AssertEquals("#R30", typeof(OverflowException), e.GetType());
2554                         }
2555
2556                         try {
2557                                 Convert.ToUInt64(int.MinValue);
2558                                 Fail();
2559                         }
2560                         catch (Exception e) {
2561                                 AssertEquals("#R31", typeof(OverflowException), e.GetType());
2562                         }
2563
2564                         try {
2565                                 Convert.ToUInt64(long.MinValue);
2566                                 Fail();
2567                         }
2568                         catch (Exception e) {
2569                                 AssertEquals("#R32", typeof(OverflowException), e.GetType());
2570                         }
2571
2572                         try {
2573                                 Convert.ToUInt64(tryObj);
2574                                 Fail();
2575                         }
2576                         catch (Exception e) {
2577                                 AssertEquals("#R33", typeof(InvalidCastException), e.GetType());
2578                         }
2579
2580                         try {
2581                                 Convert.ToUInt64(sbyte.MinValue);
2582                                 Fail();
2583                         }
2584                         catch (Exception e) {
2585                                 AssertEquals("#R34", typeof(OverflowException), e.GetType());
2586                         }
2587
2588                         try {
2589                                 Convert.ToUInt64(float.MinValue);
2590                                 Fail();
2591                         }
2592                         catch (Exception e) {
2593                                 AssertEquals("#R35", typeof(OverflowException), e.GetType());
2594                         }
2595
2596                         try {
2597                                 Convert.ToUInt64(float.MaxValue);
2598                                 Fail();
2599                         }
2600                         catch (Exception e) {
2601                                 AssertEquals("#R36", typeof(OverflowException), e.GetType());
2602                         }
2603
2604                         try {
2605                                 Convert.ToUInt64("234rt78");
2606                                 Fail();
2607                         }
2608                         catch (Exception e) {
2609                                 AssertEquals("#R37", typeof(FormatException), e.GetType());
2610                         }
2611
2612                         try {
2613                                 Convert.ToUInt64("-68");
2614                                 Fail();
2615                         }
2616                         catch (Exception e) {
2617                                 AssertEquals("#R38", typeof(OverflowException), e.GetType());
2618                         }
2619
2620                         try {
2621                                 Convert.ToUInt64(decimal.MaxValue.ToString());
2622                                 Fail();
2623                         }
2624                         catch (Exception e) {
2625                                 AssertEquals("#R39", typeof(OverflowException), e.GetType());
2626                         }
2627
2628                         try {
2629                                 Convert.ToUInt64("23rd2", ci);
2630                                 Fail();
2631                         }
2632                         catch (Exception e) {
2633                                 AssertEquals("#R40", typeof(FormatException), e.GetType());
2634                         }
2635
2636                         try {
2637                                 Convert.ToUInt64(decimal.MinValue.ToString(), ci);
2638                                 Fail();
2639                         }
2640                         catch (Exception e) {
2641                                 AssertEquals("#R41", typeof(OverflowException), e.GetType());
2642                         }
2643
2644                         try {
2645                                 Convert.ToUInt64(decimal.MaxValue.ToString(), ci);
2646                                 Fail();
2647                         }
2648                         catch (Exception e) {
2649                                 AssertEquals("#R42", typeof(OverflowException), e.GetType());
2650                         }
2651
2652                         try {
2653                                 Convert.ToUInt64("132", 9);
2654                                 Fail();
2655                         }
2656                         catch (Exception e) {
2657                                 AssertEquals("#R43", typeof(ArgumentException), e.GetType());
2658                         }
2659
2660
2661                         AssertEquals ("#L35", (ulong) 256, Convert.ToUInt64 ("0x100", 16));
2662                         AssertEquals ("#L36", (ulong) 256, Convert.ToUInt64 ("0X100", 16));
2663                         AssertEquals ("#L37", ulong.MaxValue, Convert.ToUInt64 ("0xFFFFFFFFFFFFFFFF", 16));
2664                 }
2665
2666                 [Test]
2667                 [ExpectedException (typeof (FormatException))]
2668                 public void TestInvalidBase64() {
2669                   // This has to be a multiple of 4 characters, otherwise you 
2670                   // are testing something else. Ideally one will become a byte
2671                   // > 128
2672                   //
2673                   // This test is designed to see what happens with invalid bytes
2674                   string brokenB64 = "AB~\u00a3";
2675                   Convert.FromBase64String(brokenB64);
2676                 }
2677
2678                 [Test]
2679                 public void TestBeginWithSpaces ()
2680                 {
2681                         byte[] bb = new byte[] { 1, 2, 3};
2682                         string s = Convert.ToBase64String (bb);
2683                         byte [] b2 = Convert.FromBase64String ("     " + s);
2684                         Assertion.AssertEquals ("#01", 3, b2.Length);
2685                         for (int i = 0; i < 3; i++)
2686                                 Assertion.AssertEquals ("#0" + (i + 2), bb [i], b2 [i]);
2687                 }
2688                 
2689                 public void TestToBase64CharArray ()
2690                 {
2691                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2692                         //                                                 0    1        2        3    4        5        6        7
2693                         char[] expectedCharArr = {'I', 'X', '/', '/', 'b', 'a', 'o', '2'};
2694                         char[] result = new Char[8];
2695                         
2696                         Convert.ToBase64CharArray(byteArr, 0, byteArr.Length, result, 0);
2697
2698                         for (int i = 0; i < expectedCharArr.Length; i++) {
2699                                 AssertEquals("#S0" + i, expectedCharArr[i], result[i]);
2700                         }
2701                 }
2702
2703                 [Test]
2704                 [ExpectedException (typeof(ArgumentNullException))]
2705                 public void ToBase64CharArray_InNull ()
2706                 {
2707                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2708                         char[] result = new Char[8];
2709                         Convert.ToBase64CharArray (null, 0, byteArr.Length, result, 0);
2710                 }
2711
2712                 [Test]
2713                 [ExpectedException (typeof(ArgumentNullException))]
2714                 public void ToBase64CharArray_OutNull ()
2715                 {
2716                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2717                         Convert.ToBase64CharArray (byteArr, 0, byteArr.Length, null, 0);
2718                 }
2719
2720                 [Test]
2721                 [ExpectedException (typeof(ArgumentOutOfRangeException))]
2722                 public void ToBase64CharArray_OffsetInNegative ()
2723                 {
2724                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2725                         char[] result = new Char[8];
2726                         Convert.ToBase64CharArray (byteArr, -1, byteArr.Length, result, 0);
2727                 }
2728
2729                 [Test]
2730                 [ExpectedException (typeof(ArgumentOutOfRangeException))]
2731                 public void ToBase64CharArray_LengthNegative ()
2732                 {
2733                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2734                         char[] result = new Char[8];
2735                         Convert.ToBase64CharArray (byteArr, 0, -5, result, 0);
2736                 }
2737
2738                 [Test]
2739                 [ExpectedException (typeof(ArgumentOutOfRangeException))]
2740                 public void ToBase64CharArray_OffsetOutNegative ()
2741                 {
2742                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2743                         char[] result = new Char[8];
2744                         Convert.ToBase64CharArray (byteArr, 0, byteArr.Length, result, -2);
2745                 }
2746
2747                 [Test]
2748                 [ExpectedException (typeof(ArgumentOutOfRangeException))]
2749                 public void ToBase64CharArray_TotalIn ()
2750                 {
2751                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2752                         char[] result = new Char[8];
2753                         Convert.ToBase64CharArray (byteArr, 4, byteArr.Length, result, 0);
2754                 }
2755
2756                 [Test]
2757                 [ExpectedException (typeof(ArgumentOutOfRangeException))]
2758                 public void ToBase64CharArray_TotalInOverflow ()
2759                 {
2760                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2761                         char[] result = new Char[8];
2762                         Convert.ToBase64CharArray (byteArr, Int32.MaxValue, byteArr.Length, result, 0);
2763                 }
2764
2765                 [Test]
2766                 [ExpectedException (typeof(ArgumentOutOfRangeException))]
2767                 public void ToBase64CharArray_TotalOut ()
2768                 {
2769                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2770                         char[] result = new Char[8];
2771                         Convert.ToBase64CharArray (byteArr, 0, byteArr.Length, result, 2);
2772                 }
2773
2774                 [Test]
2775                 [ExpectedException (typeof(ArgumentOutOfRangeException))]
2776                 public void ToBase64CharArray_TotalOutOverflow ()
2777                 {
2778                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2779                         char[] result = new Char[8];
2780                         Convert.ToBase64CharArray (byteArr, 0, byteArr.Length, result, Int32.MaxValue);
2781                 }
2782
2783                 public void TestToBase64String() {
2784                         byte[] byteArr = {33, 127, 255, 109, 170, 54};
2785                         string expectedStr = "IX//bao2";
2786                         string result1;
2787                         string result2;
2788                         
2789                         result1 = Convert.ToBase64String(byteArr);
2790                         result2 = Convert.ToBase64String(byteArr, 0, byteArr.Length);
2791
2792                         AssertEquals("#T01", expectedStr, result1);
2793                         AssertEquals("#T02", expectedStr, result2);
2794
2795                         try {
2796                                 Convert.ToBase64String(null);
2797                                 Fail();
2798                         }
2799                         catch (Exception e) {
2800                                 AssertEquals("#T05", typeof(ArgumentNullException), e.GetType());
2801                         }
2802                         
2803                         try {
2804                                 Convert.ToBase64String(byteArr, -1, byteArr.Length);
2805                                 Fail();
2806                         }
2807                         catch (Exception e) {
2808                                 AssertEquals("#T06", typeof(ArgumentOutOfRangeException), e.GetType());
2809                         }
2810
2811                         try {
2812                                 Convert.ToBase64String(byteArr, 0, -10);
2813                                 Fail();
2814                         }
2815                         catch (Exception e) {
2816                                 AssertEquals("#T07", typeof(ArgumentOutOfRangeException), e.GetType());
2817                         }
2818
2819                         try {
2820                                 Convert.ToBase64String(byteArr, 4, byteArr.Length);
2821                                 Fail();
2822                         }
2823                         catch (Exception e) {
2824                                 AssertEquals("#T08", typeof(ArgumentOutOfRangeException), e.GetType());
2825                         }               
2826                 }
2827
2828                 /* Have experienced some problems with FromBase64CharArray using mono. Something 
2829                  * about error in a unicode file.
2830                  *
2831                  * However the test seems to run fine using mono in a cygwin environment
2832                  */
2833
2834                 [Test]
2835                 [ExpectedException (typeof (ArgumentNullException))]
2836                 public void FromBase64CharArray_Null ()
2837                 {
2838                         Convert.FromBase64CharArray (null, 1, 5);
2839                 }
2840
2841                 [Test]
2842                 [ExpectedException (typeof (FormatException))]
2843                 public void FromBase64CharArray_Empty ()
2844                 {
2845                         Convert.FromBase64CharArray (new char[0], 0, 0);
2846                 }
2847
2848                 [Test]
2849                 [ExpectedException (typeof (FormatException))]
2850                 public void FormatBase64CharArray_OnlyWhitespace ()
2851                 {
2852                         Convert.FromBase64CharArray (new char[3] {' ', 
2853                                 '\r', '\t'}, 0, 3);
2854                 }
2855
2856                 [Test]
2857                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
2858                 public void FromBase64CharArray_OutOfRangeStart () 
2859                 {
2860                         Convert.FromBase64CharArray (new char [4], -1, 4);
2861                 }
2862
2863                 [Test]
2864                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
2865                 public void FromBase64CharArray_OutOfRangeLength () 
2866                 {
2867                         Convert.FromBase64CharArray (new char [4], 2, 4);
2868                 }
2869
2870                 [Test]
2871                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
2872                 public void FromBase64CharArray_Overflow () 
2873                 {
2874                         Convert.FromBase64CharArray (new char [4], Int32.MaxValue, 4);
2875                 }
2876
2877                 [Test]
2878                 [ExpectedException (typeof (FormatException))]
2879                 public void FromBase64CharArray_InvalidLength () 
2880                 {
2881                         Convert.FromBase64CharArray (new char [4], 0, 3);
2882                 }
2883
2884                 [Test]
2885                 [ExpectedException (typeof (FormatException))]
2886                 public void FromBase64CharArray_WideChar () 
2887                 {
2888                         char[] c = new char [4] { 'A', 'A', 'A', (char) Char.MaxValue };
2889                         Convert.FromBase64CharArray (c, 0, 4);
2890                 }
2891
2892                 [Test]
2893                 public void FromBase64CharArray ()
2894                 {
2895                         char[] charArr = {'M','o','n','o','m','o','n','o'};
2896                         byte[] expectedByteArr = {50, 137, 232, 154, 137, 232};
2897                         
2898                         byte[] fromCharArr = Convert.FromBase64CharArray(charArr, 0, 8);                        
2899
2900                         for (int i = 0; i < fromCharArr.Length; i++){
2901                                 AssertEquals("#U0" + i, expectedByteArr[i], fromCharArr[i]);
2902                         }
2903                 }
2904
2905                 /* Have experienced some problems with FromBase64String using mono. Something about 
2906                  * error in a unicode file.
2907                  *
2908                  * However the test seems to run fine using mono in a cygwin environment
2909                  */
2910
2911                 [Test]
2912                 [ExpectedException (typeof (ArgumentNullException))]
2913                 public void FromBase64String_Null () 
2914                 {
2915                         Convert.FromBase64String (null);
2916                 }
2917
2918                 [Test]
2919                 [ExpectedException (typeof (FormatException))]
2920                 public void FromBase64String_InvalidLength () 
2921                 {
2922                         Convert.FromBase64String ("foo");
2923                 }
2924
2925                 [Test]
2926                 [ExpectedException (typeof (FormatException))]
2927                 public void FromBase64String_InvalidLength2 () 
2928                 {
2929                         Convert.FromBase64String (tryStr);
2930                 }
2931
2932                 [Test]
2933                 public void FromBase64String_InvalidLengthBecauseOfIgnoredChars () 
2934                 {
2935                         byte[] result = Convert.FromBase64String ("AAAA\t");
2936                         AssertEquals ("InvalidLengthBecauseOfIgnoredChars", 3, result.Length);
2937                 }
2938
2939                 private const string ignored = "\t\r\n ";
2940                 private const string base64data = "AAAAAAAAAAAAAAAAAAAA"; // 15 bytes 0x00
2941
2942                 [Test]
2943                 public void FromBase64_IgnoreCharsBefore ()
2944                 {
2945                         string s = ignored + base64data;
2946                         byte[] data = Convert.FromBase64String (s);
2947                         AssertEquals ("String-IgnoreCharsBefore-Ignored", 15, data.Length);
2948
2949                         char[] c = s.ToCharArray ();
2950                         data = Convert.FromBase64CharArray (c, 0, c.Length);
2951                         AssertEquals ("CharArray-IgnoreCharsBefore-Ignored", 15, data.Length);
2952                 }
2953
2954                 [Test]
2955                 public void FromBase64_IgnoreCharsInside () 
2956                 {
2957                         string s = base64data + ignored + base64data;
2958                         byte[] data = Convert.FromBase64String (s);
2959                         AssertEquals ("String-IgnoreCharsInside-Ignored", 30, data.Length);
2960
2961                         char[] c = s.ToCharArray ();
2962                         data = Convert.FromBase64CharArray (c, 0, c.Length);
2963                         AssertEquals ("CharArray-IgnoreCharsInside-Ignored", 30, data.Length);
2964                 }
2965
2966                 [Test]
2967                 public void FromBase64_IgnoreCharsAfter () 
2968                 {
2969                         string s = base64data + ignored;
2970                         byte[] data = Convert.FromBase64String (s);
2971                         AssertEquals ("String-IgnoreCharsAfter-Ignored", 15, data.Length);
2972
2973                         char[] c = s.ToCharArray ();
2974                         data = Convert.FromBase64CharArray (c, 0, c.Length);
2975                         AssertEquals ("CharArray-IgnoreCharsAfter-Ignored", 15, data.Length);
2976                 }
2977
2978                 [Test]
2979                 public void FromBase64_Empty ()
2980                 {
2981                         AssertEquals (new byte[0], Convert.FromBase64String (string.Empty));
2982                 }
2983
2984                 [Test]
2985 #if !NET_2_0
2986                 [ExpectedException (typeof (FormatException))]
2987 #endif
2988                 public void FromBase64_OnlyWhiteSpace ()
2989                 {
2990 #if NET_2_0
2991                         AssertEquals (new byte[0], Convert.FromBase64String ("  \r\t"));
2992 #else
2993                         Convert.FromBase64String ("  \r\t");
2994 #endif
2995                 }
2996
2997                 [Test]
2998                 [ExpectedException (typeof (FormatException))]
2999                 public void FromBase64_InvalidChar ()
3000                 {
3001                         Convert.FromBase64String ("amVsb3U=\u0100");
3002                 }
3003
3004                 [Test]
3005                 [ExpectedException (typeof (FormatException))]
3006                 public void FromBase64_Min ()
3007                 {
3008                         Convert.FromBase64String ("amVsb3U=   \r \n\u007B");
3009                 }
3010
3011                 [Test]
3012                 public void FromBase64_TrailingEqualAndSpaces () // From bug #75840.
3013                 {
3014                         string base64 = "\n     fdy6S2NLpnT4fMdokUHSHsmpcvo=    ";
3015                         byte [] bytes = Convert.FromBase64String (base64);
3016                         AssertEquals ("#01", 20, bytes.Length);
3017                         byte [] target = new byte [] { 0x7D, 0xDC, 0xBA, 0x4B, 0x63, 0x4B, 0xA6, 0x74, 0xF8, 0x7C, 0xC7,
3018                                                         0x68, 0x91, 0x41, 0xD2, 0x1E, 0xC9, 0xA9, 0x72, 0xFA };
3019
3020                         for (int i = 0; i < 20; i++) {
3021                                 if (bytes [i] != target [i])
3022                                         Fail ("Item #" + i);
3023                         }
3024                 }
3025
3026                 public void TestConvertFromNull() {
3027                         
3028                         AssertEquals ("#W1", false, Convert.ToBoolean (null as object));
3029                         AssertEquals ("#W2", 0, Convert.ToByte (null as object));
3030                         AssertEquals ("#W3", 0, Convert.ToChar (null as object));
3031                         AssertEquals ("#W4", new DateTime (1,1,1,0,0,0), Convert.ToDateTime (null as object));
3032                         AssertEquals ("#W5", 0, Convert.ToDecimal (null as object));
3033                         AssertEquals ("#W6", 0, Convert.ToDouble (null as object));
3034                         AssertEquals ("#W7", 0, Convert.ToInt16 (null as object));
3035                         AssertEquals ("#W8", 0, Convert.ToInt32 (null as object));
3036                         AssertEquals ("#W9", 0, Convert.ToInt64 (null as object));
3037                         AssertEquals ("#W10", 0, Convert.ToSByte (null as object));
3038                         AssertEquals ("#W11", 0, Convert.ToSingle (null as object));
3039                         AssertEquals ("#W12", "", Convert.ToString (null as object));
3040                         AssertEquals ("#W13", 0, Convert.ToUInt16 (null as object));
3041                         AssertEquals ("#W14", 0, Convert.ToUInt32 (null as object));
3042                         AssertEquals ("#W15", 0, Convert.ToUInt64 (null as object));
3043                         AssertEquals ("#W16", false, Convert.ToBoolean (null as string));
3044                         AssertEquals ("#W17", 0, Convert.ToByte (null as string));
3045
3046                         try {
3047                                 Convert.ToChar (null as string);
3048                                 Fail ();
3049                         } catch (Exception e) {
3050                                 AssertEquals ("#W18", typeof (ArgumentNullException), e.GetType ());
3051                         }
3052                         
3053                         AssertEquals ("#W19", new DateTime (1,1,1,0,0,0), Convert.ToDateTime (null as string));
3054                         AssertEquals ("#W20", 0, Convert.ToDecimal (null as string));
3055                         AssertEquals ("#W21", 0, Convert.ToDouble (null as string));
3056                         AssertEquals ("#W22", 0, Convert.ToInt16 (null as string));
3057                         AssertEquals ("#W23", 0, Convert.ToInt32 (null as string));
3058                         AssertEquals ("#W24", 0, Convert.ToInt64 (null as string));
3059                         AssertEquals ("#W25", 0, Convert.ToSByte (null as string));
3060                         AssertEquals ("#W26", 0, Convert.ToSingle (null as string));
3061                         AssertEquals ("#W27", null, Convert.ToString (null as string));
3062                         AssertEquals ("#W28", 0, Convert.ToUInt16 (null as string));
3063                         AssertEquals ("#W29", 0, Convert.ToUInt32 (null as string));
3064                         AssertEquals ("#W30", 0, Convert.ToUInt64 (null as string));
3065                 }
3066
3067                 [Test]
3068                 public void ToByte_PrefixedHexStringInBase16 () 
3069                 {
3070                         AssertEquals ("0xff", 255, Convert.ToByte ("0xff", 16));
3071                         AssertEquals ("0xfF", 255, Convert.ToByte ("0xfF", 16));
3072                         AssertEquals ("0xFf", 255, Convert.ToByte ("0xFf", 16));
3073                         AssertEquals ("0xFF", 255, Convert.ToByte ("0xFF", 16));
3074
3075                         AssertEquals ("0Xff", 255, Convert.ToByte ("0Xff", 16));
3076                         AssertEquals ("0XfF", 255, Convert.ToByte ("0XfF", 16));
3077                         AssertEquals ("0XFf", 255, Convert.ToByte ("0XFf", 16));
3078                         AssertEquals ("0XFF", 255, Convert.ToByte ("0XFF", 16));
3079
3080                         AssertEquals ("0x0", Byte.MinValue, Convert.ToByte ("0x0", 16));
3081                 }
3082
3083                 [Test]
3084                 [ExpectedException (typeof (OverflowException))]
3085                 public void ToByte_NegativeString () 
3086                 {
3087                         Convert.ToByte ("-1");
3088                 }
3089
3090                 [Test]
3091                 [ExpectedException (typeof (ArgumentException))]
3092                 public void ToByte_NegativeStringNonBase10 () 
3093                 {
3094                         Convert.ToByte ("-0", 16);
3095                 }
3096
3097                 [Test]
3098                 [ExpectedException (typeof (OverflowException))]
3099                 public void ToByte_NegativeString_Base10 ()
3100                 {
3101                         Convert.ToByte ("-0", 10);
3102                 }
3103
3104                 [Test]
3105                 public void ToByte_NegativeZeroString () 
3106                 {
3107                         Convert.ToByte ("-0");
3108                         Convert.ToByte ("-0", null);
3109                 }
3110
3111                 [Test]
3112                 [ExpectedException (typeof (OverflowException))]
3113                 public void ToUInt16_NegativeString () 
3114                 {
3115                         Convert.ToUInt16 ("-1");
3116                 }
3117
3118                 [Test]
3119                 [ExpectedException (typeof (ArgumentException))]
3120                 public void ToUInt16_NegativeStringNonBase10 () 
3121                 {
3122                         Convert.ToUInt16 ("-0", 16);
3123                 }
3124
3125                 [Test]
3126                 [ExpectedException (typeof (OverflowException))]
3127                 public void ToUInt16_NegativeString_Base10 ()
3128                 {
3129                         Convert.ToUInt16 ("-0", 10);
3130                 }
3131
3132                 [Test]
3133                 public void ToUInt16_NegativeZeroString () 
3134                 {
3135                         Convert.ToUInt16 ("-0");
3136                         Convert.ToUInt16 ("-0", null);
3137                 }
3138
3139                 [Test]
3140                 [ExpectedException (typeof (OverflowException))]
3141                 public void ToUInt32_NegativeString () 
3142                 {
3143                         Convert.ToUInt32 ("-1");
3144                 }
3145
3146                 [Test]
3147                 [ExpectedException (typeof (ArgumentException))]
3148                 public void ToUInt32_NegativeStringNonBase10 () 
3149                 {
3150                         Convert.ToUInt32 ("-0", 16);
3151                 }
3152
3153                 [Test]
3154                 [ExpectedException (typeof (OverflowException))]
3155                 public void ToUInt32_NegativeString_Base10 ()
3156                 {
3157                         Convert.ToUInt32 ("-0", 10);
3158                 }
3159
3160                 [Test]
3161                 public void ToUInt32_NegativeZeroString () 
3162                 {
3163                         Convert.ToUInt32 ("-0");
3164                         Convert.ToUInt32 ("-0", null);
3165                 }
3166
3167                 [Test]
3168                 [ExpectedException (typeof (OverflowException))]
3169                 public void ToUInt64_NegativeString () 
3170                 {
3171                         Convert.ToUInt64 ("-1");
3172                 }
3173
3174                 [Test]
3175                 [ExpectedException (typeof (ArgumentException))]
3176                 public void ToUInt64_NegativeStringNonBase10 () 
3177                 {
3178                         Convert.ToUInt64 ("-0", 16);
3179                 }
3180
3181                 [Test]
3182                 [ExpectedException (typeof (OverflowException))]
3183                 public void ToUInt64_NegativeString_Base10 ()
3184                 {
3185                         Convert.ToUInt64 ("-0", 10);
3186                 }
3187
3188                 [Test]
3189                 public void ToUInt64_NegativeZeroString () 
3190                 {
3191                         Convert.ToUInt64 ("-0");
3192                         Convert.ToUInt64 ("-0", null);
3193                 }
3194
3195                 // min/max unsigned
3196
3197                 [Test]
3198                 public void ToByte_MaxValue ()
3199                 {
3200                         AssertEquals ("ff,16", Byte.MaxValue, Convert.ToByte ("ff", 16));
3201                         AssertEquals ("0xFF,16", Byte.MaxValue, Convert.ToByte ("0XFF", 16));
3202                         AssertEquals ("255,10", Byte.MaxValue, Convert.ToByte ("255", 10));
3203                         AssertEquals ("377,8", Byte.MaxValue, Convert.ToByte ("377", 8));
3204                         AssertEquals ("11111111,2", Byte.MaxValue, Convert.ToByte ("11111111", 2));
3205                 }
3206
3207                 [Test]
3208                 public void ToByte_MinValue ()
3209                 {
3210                         AssertEquals ("0,16", Byte.MinValue, Convert.ToByte ("0", 16));
3211                         AssertEquals ("0x0,16", Byte.MinValue, Convert.ToByte ("0x0", 16));
3212                         AssertEquals ("0,10", Byte.MinValue, Convert.ToByte ("0", 10));
3213                         AssertEquals ("0,8", Byte.MinValue, Convert.ToByte ("0", 8));
3214                         AssertEquals ("0,2", Byte.MinValue, Convert.ToByte ("0", 2));
3215                 }
3216
3217                 [Test]
3218                 public void ToUInt16_MaxValue ()
3219                 {
3220                         AssertEquals ("ffff,16", UInt16.MaxValue, Convert.ToUInt16 ("ffff", 16));
3221                         AssertEquals ("0XFFFF,16", UInt16.MaxValue, Convert.ToUInt16 ("0XFFFF", 16));
3222                         AssertEquals ("65535,10", UInt16.MaxValue, Convert.ToUInt16 ("65535", 10));
3223                         AssertEquals ("177777,8", UInt16.MaxValue, Convert.ToUInt16 ("177777", 8));
3224                         AssertEquals ("1111111111111111,2", UInt16.MaxValue, Convert.ToUInt16 ("1111111111111111", 2));
3225                 }
3226
3227                 [Test]
3228                 public void ToUInt16_MinValue ()
3229                 {
3230                         AssertEquals ("0,16", UInt16.MinValue, Convert.ToUInt16 ("0", 16));
3231                         AssertEquals ("0x0,16", UInt16.MinValue, Convert.ToUInt16 ("0x0", 16));
3232                         AssertEquals ("0,10", UInt16.MinValue, Convert.ToUInt16 ("0", 10));
3233                         AssertEquals ("0,8", UInt16.MinValue, Convert.ToUInt16 ("0", 8));
3234                         AssertEquals ("0,2", UInt16.MinValue, Convert.ToUInt16 ("0", 2));
3235                 }
3236
3237                 [Test]
3238                 public void ToUInt32_MaxValue ()
3239                 {
3240                         AssertEquals ("ffffffff,16", UInt32.MaxValue, Convert.ToUInt32 ("ffffffff", 16));
3241                         AssertEquals ("0XFFFFFFFF,16", UInt32.MaxValue, Convert.ToUInt32 ("0XFFFFFFFF", 16));
3242                         AssertEquals ("4294967295,10", UInt32.MaxValue, Convert.ToUInt32 ("4294967295", 10));
3243                         AssertEquals ("37777777777,8", UInt32.MaxValue, Convert.ToUInt32 ("37777777777", 8));
3244                         AssertEquals ("11111111111111111111111111111111,2", UInt32.MaxValue, Convert.ToUInt32 ("11111111111111111111111111111111", 2));
3245                 }
3246
3247                 [Test]
3248                 public void ToUInt32_MinValue ()
3249                 {
3250                         AssertEquals ("0,16", UInt32.MinValue, Convert.ToUInt32 ("0", 16));
3251                         AssertEquals ("0x0,16", UInt32.MinValue, Convert.ToUInt32 ("0x0", 16));
3252                         AssertEquals ("0,10", UInt32.MinValue, Convert.ToUInt32 ("0", 10));
3253                         AssertEquals ("0,8", UInt32.MinValue, Convert.ToUInt32 ("0", 8));
3254                         AssertEquals ("0,2", UInt32.MinValue, Convert.ToUInt32 ("0", 2));
3255                 }
3256
3257                 [Test]
3258                 public void ToUInt64_MaxValue ()
3259                 {
3260                         AssertEquals ("ffffffffffffffff,16", UInt64.MaxValue, Convert.ToUInt64 ("ffffffffffffffff", 16));
3261                         AssertEquals ("0XFFFFFFFFFFFFFFFF,16", UInt64.MaxValue, Convert.ToUInt64 ("0XFFFFFFFFFFFFFFFF", 16));
3262                         AssertEquals ("18446744073709551615,10", UInt64.MaxValue, Convert.ToUInt64 ("18446744073709551615", 10));
3263                         AssertEquals ("1777777777777777777777,8", UInt64.MaxValue, Convert.ToUInt64 ("1777777777777777777777", 8));
3264                         AssertEquals ("1111111111111111111111111111111111111111111111111111111111111111,2", UInt64.MaxValue, Convert.ToUInt64 ("1111111111111111111111111111111111111111111111111111111111111111", 2));
3265                 }
3266
3267                 [Test]
3268                 public void ToUInt64_MinValue ()
3269                 {
3270                         AssertEquals ("0,16", UInt64.MinValue, Convert.ToUInt64 ("0", 16));
3271                         AssertEquals ("0x0,16", UInt64.MinValue, Convert.ToUInt64 ("0x0", 16));
3272                         AssertEquals ("0,10", UInt64.MinValue, Convert.ToUInt64 ("0", 10));
3273                         AssertEquals ("0,8", UInt64.MinValue, Convert.ToUInt64 ("0", 8));
3274                         AssertEquals ("0,2", UInt64.MinValue, Convert.ToUInt64 ("0", 2));
3275                 }
3276
3277                 // min/max signed
3278
3279                 [Test]
3280                 public void ToSByte_MaxValue ()
3281                 {
3282                         AssertEquals ("7F,16", SByte.MaxValue, Convert.ToSByte ("7f", 16));
3283                         AssertEquals ("0X7F,16", SByte.MaxValue, Convert.ToSByte ("0X7F", 16));
3284                         AssertEquals ("127,10", SByte.MaxValue, Convert.ToSByte ("127", 10));
3285                         AssertEquals ("177,8", SByte.MaxValue, Convert.ToSByte ("177", 8));
3286                         AssertEquals ("1111111,2", SByte.MaxValue, Convert.ToSByte ("1111111", 2));
3287                 }
3288
3289                 [Test]
3290                 public void ToSByte_MinValue ()
3291                 {
3292                         AssertEquals ("80,16", SByte.MinValue, Convert.ToSByte ("80", 16));
3293                         AssertEquals ("-128,10", SByte.MinValue, Convert.ToSByte ("-128", 10));
3294                         AssertEquals ("200,8", SByte.MinValue, Convert.ToSByte ("200", 8));
3295                         AssertEquals ("10000000,2", SByte.MinValue, Convert.ToSByte ("10000000", 2));
3296                 }
3297
3298                 [Test]
3299                 public void ToInt16_MaxValue ()
3300                 {
3301                         AssertEquals ("7FFF,16", Int16.MaxValue, Convert.ToInt16 ("7fff", 16));
3302                         AssertEquals ("0X7FFF,16", Int16.MaxValue, Convert.ToInt16 ("0X7FFF", 16));
3303                         AssertEquals ("32767,10", Int16.MaxValue, Convert.ToInt16 ("32767", 10));
3304                         AssertEquals ("77777,8", Int16.MaxValue, Convert.ToInt16 ("77777", 8));
3305                         AssertEquals ("111111111111111,2", Int16.MaxValue, Convert.ToInt16 ("111111111111111", 2));
3306                 }
3307
3308                 [Test]
3309                 public void ToInt16_MinValue ()
3310                 {
3311                         AssertEquals ("8000,16", Int16.MinValue, Convert.ToInt16 ("8000", 16));
3312                         AssertEquals ("-32768,10", Int16.MinValue, Convert.ToInt16 ("-32768", 10));
3313                         AssertEquals ("100000,8", Int16.MinValue, Convert.ToInt16 ("100000", 8));
3314                         AssertEquals ("1000000000000000,2", Int16.MinValue, Convert.ToInt16 ("1000000000000000", 2));
3315                 }
3316
3317                 [Test]
3318                 public void ToInt32_MaxValue ()
3319                 {
3320                         AssertEquals ("7fffffff,16", Int32.MaxValue, Convert.ToInt32 ("7fffffff", 16));
3321                         AssertEquals ("0X7FFFFFFF,16", Int32.MaxValue, Convert.ToInt32 ("0X7FFFFFFF", 16));
3322                         AssertEquals ("2147483647,10", Int32.MaxValue, Convert.ToInt32 ("2147483647", 10));
3323                         AssertEquals ("17777777777,8", Int32.MaxValue, Convert.ToInt32 ("17777777777", 8));
3324                         AssertEquals ("1111111111111111111111111111111,2", Int32.MaxValue, Convert.ToInt32 ("1111111111111111111111111111111", 2));
3325                 }
3326
3327                 [Test]
3328                 public void ToInt32_MinValue ()
3329                 {
3330                         AssertEquals ("80000000,16", Int32.MinValue, Convert.ToInt32 ("80000000", 16));
3331                         AssertEquals ("-2147483648,10", Int32.MinValue, Convert.ToInt32 ("-2147483648", 10));
3332                         AssertEquals ("20000000000,8", Int32.MinValue, Convert.ToInt32 ("20000000000", 8));
3333                         AssertEquals ("10000000000000000000000000000000,2", Int32.MinValue, Convert.ToInt32 ("10000000000000000000000000000000", 2));
3334                 }
3335
3336                 [Test]
3337                 public void ToInt64_MaxValue ()
3338                 {
3339                         AssertEquals ("7fffffffffffffff,16", Int64.MaxValue, Convert.ToInt64 ("7fffffffffffffff", 16));
3340                         AssertEquals ("0X7FFFFFFFFFFFFFFF,16", Int64.MaxValue, Convert.ToInt64 ("0X7FFFFFFFFFFFFFFF", 16));
3341                         AssertEquals ("9223372036854775807,10", Int64.MaxValue, Convert.ToInt64 ("9223372036854775807", 10));
3342                         AssertEquals ("777777777777777777777,8", Int64.MaxValue, Convert.ToInt64 ("777777777777777777777", 8));
3343                         AssertEquals ("111111111111111111111111111111111111111111111111111111111111111,2", Int64.MaxValue, Convert.ToInt64 ("111111111111111111111111111111111111111111111111111111111111111", 2));
3344                 }
3345
3346                 [Test]
3347                 public void ToInt64_MinValue ()
3348                 {
3349                         AssertEquals ("8000000000000000,16", Int64.MinValue, Convert.ToInt64 ("8000000000000000", 16));
3350                         AssertEquals ("0x8000000000000000,16", Int64.MinValue, Convert.ToInt64 ("0x8000000000000000", 16));
3351                         AssertEquals ("-9223372036854775808,10", Int64.MinValue, Convert.ToInt64 ("-9223372036854775808", 10));
3352                         AssertEquals ("1000000000000000000000,8", Int64.MinValue, Convert.ToInt64 ("1000000000000000000000", 8));
3353                         AssertEquals ("1000000000000000000000000000000000000000000000000000000000000000,2", Int64.MinValue, Convert.ToInt64 ("1000000000000000000000000000000000000000000000000000000000000000", 2));
3354                 }
3355
3356                 // signed types
3357
3358                 [Test]
3359                 [ExpectedException (typeof (OverflowException))]
3360                 public void ToSByte_OverMaxValue ()
3361                 {
3362                         string max_plus1 = "128";
3363                         Convert.ToSByte (max_plus1);
3364                 }
3365
3366                 [Test]
3367                 [ExpectedException (typeof (OverflowException))]
3368                 public void ToSByte_OverMinValue ()
3369                 {
3370                         string min_minus1 = "-129";
3371                         Convert.ToSByte (min_minus1);
3372                 }
3373
3374                 [Test]
3375                 [ExpectedException (typeof (OverflowException))]
3376                 public void ToInt16_OverMaxValue ()
3377                 {
3378                         string max_plus1 = "32768";
3379                         Convert.ToInt16 (max_plus1);
3380                 }
3381
3382                 [Test]
3383                 [ExpectedException (typeof (OverflowException))]
3384                 public void ToInt16_OverMinValue ()
3385                 {
3386                         string min_minus1 = "-32769";
3387                         Convert.ToInt16 (min_minus1);
3388                 }
3389
3390                 [Test]
3391                 [ExpectedException (typeof (OverflowException))]
3392                 public void ToInt32_OverMaxValue ()
3393                 {
3394                         string max_plus1 = "2147483648";
3395                         Convert.ToInt32 (max_plus1);
3396                 }
3397
3398                 [Test]
3399                 [ExpectedException (typeof (OverflowException))]
3400                 public void ToInt32_OverMinValue ()
3401                 {
3402                         string min_minus1 = "-2147483649";
3403                         Convert.ToInt32 (min_minus1);
3404                 }
3405
3406                 [Test]
3407                 [ExpectedException (typeof (OverflowException))]
3408                 public void ToInt64_OverMaxValue ()
3409                 {
3410                         string max_plus1 = "9223372036854775808";
3411                         Convert.ToInt64 (max_plus1);
3412                 }
3413
3414                 [Test]
3415                 [ExpectedException (typeof (OverflowException))]
3416                 public void ToInt64_OverMinValue ()
3417                 {
3418                         string min_minus1 = "-9223372036854775809";
3419                         Convert.ToInt64 (min_minus1);
3420                 }
3421
3422                 // unsigned types
3423
3424                 [Test]
3425                 [ExpectedException (typeof (OverflowException))]
3426                 public void ToByte_OverMaxValue ()
3427                 {
3428                         string max_plus1 = "257";
3429                         Convert.ToByte (max_plus1);
3430                 }
3431
3432                 [Test]
3433                 [ExpectedException (typeof (OverflowException))]
3434                 public void ToByte_OverMinValue ()
3435                 {
3436                         string min_minus1 = "-1";
3437                         Convert.ToByte (min_minus1);
3438                 }
3439
3440                 [Test]
3441                 [ExpectedException (typeof (OverflowException))]
3442                 public void ToUInt16_OverMaxValue ()
3443                 {
3444                         string max_plus1 = "65536";
3445                         Convert.ToUInt16 (max_plus1);
3446                 }
3447
3448                 [Test]
3449                 [ExpectedException (typeof (OverflowException))]
3450                 public void ToUInt16_OverMinValue ()
3451                 {
3452                         string min_minus1 = "-1";
3453                         Convert.ToUInt16 (min_minus1);
3454                 }
3455
3456                 [Test]
3457                 [ExpectedException (typeof (OverflowException))]
3458                 public void ToUInt32_OverMaxValue ()
3459                 {
3460                         string max_plus1 = "4294967296";
3461                         Convert.ToUInt32 (max_plus1);
3462                 }
3463
3464                 [Test]
3465                 [ExpectedException (typeof (OverflowException))]
3466                 public void ToUInt32_OverMinValue ()
3467                 {
3468                         string min_minus1 = "-1";
3469                         Convert.ToUInt32 (min_minus1);
3470                 }
3471
3472                 [Test]
3473                 [ExpectedException (typeof (OverflowException))]
3474                 public void ToUInt64_OverMaxValue ()
3475                 {
3476                         string max_plus1 = "18446744073709551616";
3477                         Convert.ToUInt64 (max_plus1);
3478                 }
3479
3480                 [Test]
3481                 [ExpectedException (typeof (OverflowException))]
3482                 public void ToUInt64_OverMinValue ()
3483                 {
3484                         string min_minus1 = "-1";
3485                         Convert.ToUInt64 (min_minus1);
3486                 }
3487
3488                 [Test]
3489                 public void To_NullString () 
3490                 {
3491                         string s = null;
3492                         // signed
3493                         AssertEquals ("ToSByte", 0, Convert.ToSByte (s));
3494                         AssertEquals ("ToSByte+base", 0, Convert.ToSByte (s, 10));
3495                         AssertEquals ("ToInt16", 0, Convert.ToInt16 (s));
3496                         AssertEquals ("ToInt16+base", 0, Convert.ToInt16 (s, 10));
3497                         AssertEquals ("ToInt32", 0, Convert.ToInt32 (s));
3498                         AssertEquals ("ToInt32+base", 0, Convert.ToInt32 (s, 10));
3499                         AssertEquals ("ToInt64", 0, Convert.ToInt64 (s));
3500                         AssertEquals ("ToInt64+base", 0, Convert.ToInt64 (s, 10));
3501                         // unsigned
3502                         AssertEquals ("ToByte", 0, Convert.ToByte (s));
3503                         AssertEquals ("ToByte+base", 0, Convert.ToByte (s, 10));
3504                         AssertEquals ("ToUInt16", 0, Convert.ToUInt16 (s));
3505                         AssertEquals ("ToUInt16+base", 0, Convert.ToUInt16 (s, 10));
3506                         AssertEquals ("ToUInt32", 0, Convert.ToUInt32 (s));
3507                         AssertEquals ("ToUInt32+base", 0, Convert.ToUInt32 (s, 10));
3508                         AssertEquals ("ToUInt64", 0, Convert.ToUInt64 (s));
3509                         AssertEquals ("ToUInt64+base", 0, Convert.ToUInt64 (s, 10));
3510                 }
3511
3512                 [Test]
3513                 public void To_NullObject () 
3514                 {
3515                         object o = null;
3516                         // signed
3517                         AssertEquals ("ToSByte", 0, Convert.ToSByte (o));
3518                         AssertEquals ("ToInt16", 0, Convert.ToInt16 (o));
3519                         AssertEquals ("ToInt32", 0, Convert.ToInt32 (o));
3520                         AssertEquals ("ToInt64", 0, Convert.ToInt64 (o));
3521                         // unsigned
3522                         AssertEquals ("ToByte", 0, Convert.ToByte (o));
3523                         AssertEquals ("ToUInt16", 0, Convert.ToUInt16 (o));
3524                         AssertEquals ("ToUInt32", 0, Convert.ToUInt32 (o));
3525                         AssertEquals ("ToUInt64", 0, Convert.ToUInt64 (o));
3526                 }
3527
3528                 [Test]
3529                 public void To_NullObjectFormatProvider () 
3530                 {
3531                         object o = null;
3532                         IFormatProvider fp = (IFormatProvider) new NumberFormatInfo ();
3533                         // signed
3534                         AssertEquals ("ToSByte", 0, Convert.ToSByte (o, fp));
3535                         AssertEquals ("ToInt16", 0, Convert.ToInt16 (o, fp));
3536                         AssertEquals ("ToInt32", 0, Convert.ToInt32 (o, fp));
3537                         AssertEquals ("ToInt64", 0, Convert.ToInt64 (o, fp));
3538                         // unsigned
3539                         AssertEquals ("ToByte", 0, Convert.ToByte (o, fp));
3540                         AssertEquals ("ToUInt16", 0, Convert.ToUInt16 (o, fp));
3541                         AssertEquals ("ToUInt32", 0, Convert.ToUInt32 (o, fp));
3542                         AssertEquals ("ToUInt64", 0, Convert.ToUInt64 (o, fp));
3543                 }
3544
3545                 [Test]
3546                 [ExpectedException (typeof (ArgumentNullException))]
3547                 public void ToSByte_NullStringFormatProvider () 
3548                 {
3549                         string s = null;
3550                         // SByte is a "special" case ???
3551                         Convert.ToSByte (s, new NumberFormatInfo ());
3552                 }
3553
3554                 [Test]
3555                 public void To_NullStringFormatProvider () 
3556                 {
3557                         string s = null;
3558                         IFormatProvider fp = (IFormatProvider) new NumberFormatInfo ();
3559                         // signed
3560                         // No SByte here
3561                         AssertEquals ("ToInt16", 0, Convert.ToInt16 (s, fp));
3562                         AssertEquals ("ToInt32", 0, Convert.ToInt32 (s, fp));
3563                         AssertEquals ("ToInt64", 0, Convert.ToInt64 (s, fp));
3564                         // unsigned
3565                         AssertEquals ("ToByte", 0, Convert.ToByte (s, fp));
3566                         AssertEquals ("ToUInt16", 0, Convert.ToUInt16 (s, fp));
3567                         AssertEquals ("ToUInt32", 0, Convert.ToUInt32 (s, fp));
3568                         AssertEquals ("ToUInt64", 0, Convert.ToUInt64 (s, fp));
3569                 }
3570
3571                 [Test]
3572                 [ExpectedException (typeof (InvalidCastException))]
3573                 public void ChangeTypeToTypeCodeEmpty ()
3574                 {
3575                         Convert.ChangeType (true, TypeCode.Empty);
3576                 }
3577
3578                 [Test]
3579                 // 2005/01/10: The docs say this should throw an InvalidCastException,
3580                 // however, MS.NET 1.1 throws a NullReferenceException. Assuming docs
3581                 // are wrong.
3582 #if NET_2_0
3583                 [ExpectedException (typeof (InvalidCastException))]
3584 #else
3585                 [ExpectedException (typeof (NullReferenceException))]
3586 #endif
3587                 public void ChangeTypeNullToValuetype ()
3588                 {
3589                         Convert.ChangeType (null, typeof (int));
3590                 }
3591
3592                 [Test]
3593                 public void ToString_MinMax_WithBase () 
3594                 {
3595                         AssertEquals ("Byte.MinValue base 2",  "0", Convert.ToString (Byte.MinValue, 2));
3596                         AssertEquals ("Byte.MinValue base 8",  "0", Convert.ToString (Byte.MinValue, 8));
3597                         AssertEquals ("Byte.MinValue base 10", "0", Convert.ToString (Byte.MinValue, 10));
3598                         AssertEquals ("Byte.MinValue base 16", "0", Convert.ToString (Byte.MinValue, 16));
3599
3600                         AssertEquals ("Byte.MaxValue base 2",  "11111111", Convert.ToString (Byte.MaxValue, 2));
3601                         AssertEquals ("Byte.MaxValue base 8",  "377", Convert.ToString (Byte.MaxValue, 8));
3602                         AssertEquals ("Byte.MaxValue base 10", "255", Convert.ToString (Byte.MaxValue, 10));
3603                         AssertEquals ("Byte.MaxValue base 16", "ff", Convert.ToString (Byte.MaxValue, 16));
3604
3605                         AssertEquals ("Int16.MinValue base 2",  "1000000000000000", Convert.ToString (Int16.MinValue, 2));
3606                         AssertEquals ("Int16.MinValue base 8",  "100000", Convert.ToString (Int16.MinValue, 8));
3607                         AssertEquals ("Int16.MinValue base 10", "-32768", Convert.ToString (Int16.MinValue, 10));
3608                         AssertEquals ("Int16.MinValue base 16", "8000", Convert.ToString (Int16.MinValue, 16));
3609
3610                         AssertEquals ("Int16.MaxValue base 2",  "111111111111111", Convert.ToString (Int16.MaxValue, 2));
3611                         AssertEquals ("Int16.MaxValue base 8",  "77777", Convert.ToString (Int16.MaxValue, 8));
3612                         AssertEquals ("Int16.MaxValue base 10", "32767", Convert.ToString (Int16.MaxValue, 10));
3613                         AssertEquals ("Int16.MaxValue base 16", "7fff", Convert.ToString (Int16.MaxValue, 16));
3614
3615                         AssertEquals ("Int32.MinValue base 2",  "10000000000000000000000000000000", Convert.ToString (Int32.MinValue, 2));
3616                         AssertEquals ("Int32.MinValue base 8",  "20000000000", Convert.ToString (Int32.MinValue, 8));
3617                         AssertEquals ("Int32.MinValue base 10", "-2147483648", Convert.ToString (Int32.MinValue, 10));
3618                         AssertEquals ("Int32.MinValue base 16", "80000000", Convert.ToString (Int32.MinValue, 16));
3619
3620                         AssertEquals ("Int32.MaxValue base 2",  "1111111111111111111111111111111", Convert.ToString (Int32.MaxValue, 2));
3621                         AssertEquals ("Int32.MaxValue base 8",  "17777777777", Convert.ToString (Int32.MaxValue, 8));
3622                         AssertEquals ("Int32.MaxValue base 10", "2147483647", Convert.ToString (Int32.MaxValue, 10));
3623                         AssertEquals ("Int32.MaxValue base 16", "7fffffff", Convert.ToString (Int32.MaxValue, 16));
3624
3625                         AssertEquals ("Int64.MinValue base 2",  "1000000000000000000000000000000000000000000000000000000000000000", Convert.ToString (Int64.MinValue, 2));
3626                         AssertEquals ("Int64.MinValue base 8",  "1000000000000000000000", Convert.ToString (Int64.MinValue, 8));
3627                         AssertEquals ("Int64.MinValue base 10", "-9223372036854775808", Convert.ToString (Int64.MinValue, 10));
3628                         AssertEquals ("Int64.MinValue base 16", "8000000000000000", Convert.ToString (Int64.MinValue, 16));
3629
3630                         AssertEquals ("Int64.MaxValue base 2",  "111111111111111111111111111111111111111111111111111111111111111", Convert.ToString (Int64.MaxValue, 2));
3631                         AssertEquals ("Int64.MaxValue base 8",  "777777777777777777777", Convert.ToString (Int64.MaxValue, 8));
3632                         AssertEquals ("Int64.MaxValue base 10", "9223372036854775807", Convert.ToString (Int64.MaxValue, 10));
3633                         AssertEquals ("Int64.MaxValue base 16", "7fffffffffffffff", Convert.ToString (Int64.MaxValue, 16));
3634                 }
3635
3636                 [Test]
3637                 [ExpectedException (typeof (FormatException))]
3638                 public void ToByte_BadHexPrefix1 ()
3639                 {
3640                         Convert.ToByte ("#10", 16);
3641                 }
3642
3643                 [Test]
3644                 [ExpectedException (typeof (FormatException))]
3645                 public void ToByte_BadHexPrefix2 ()
3646                 {
3647                         Convert.ToByte ("&H10", 16);
3648                 }
3649
3650                 [Test]
3651                 [ExpectedException (typeof (FormatException))]
3652                 public void ToByte_BadHexPrefix3 ()
3653                 {
3654                         Convert.ToByte ("&h10", 16);
3655                 }
3656
3657                 [Test]
3658                 [ExpectedException (typeof (FormatException))]
3659                 public void ToInt16_BadHexPrefix1 ()
3660                 {
3661                         Convert.ToInt16 ("#10", 16);
3662                 }
3663
3664                 [Test]
3665                 [ExpectedException (typeof (FormatException))]
3666                 public void ToInt16_BadHexPrefix2 ()
3667                 {
3668                         Convert.ToInt16 ("&H10", 16);
3669                 }
3670
3671                 [Test]
3672                 [ExpectedException (typeof (FormatException))]
3673                 public void ToInt16_BadHexPrefix3 ()
3674                 {
3675                         Convert.ToInt16 ("&h10", 16);
3676                 }
3677
3678                 [Test]
3679                 [ExpectedException (typeof (FormatException))]
3680                 public void ToInt32_BadHexPrefix1 ()
3681                 {
3682                         Convert.ToInt32 ("#10", 16);
3683                 }
3684
3685                 [Test]
3686                 [ExpectedException (typeof (FormatException))]
3687                 public void ToInt32_BadHexPrefix2 ()
3688                 {
3689                         Convert.ToInt32 ("&H10", 16);
3690                 }
3691
3692                 [Test]
3693                 [ExpectedException (typeof (FormatException))]
3694                 public void ToInt32_BadHexPrefix3 ()
3695                 {
3696                         Convert.ToInt32 ("&h10", 16);
3697                 }
3698
3699                 [Test]
3700                 [ExpectedException (typeof (FormatException))]
3701                 public void ToInt64_BadHexPrefix1 ()
3702                 {
3703                         Convert.ToInt64 ("#10", 16);
3704                 }
3705
3706                 [Test]
3707                 [ExpectedException (typeof (FormatException))]
3708                 public void ToInt64_BadHexPrefix2 ()
3709                 {
3710                         Convert.ToInt64 ("&H10", 16);
3711                 }
3712
3713                 [Test]
3714                 [ExpectedException (typeof (FormatException))]
3715                 public void ToInt64_BadHexPrefix3 ()
3716                 {
3717                         Convert.ToInt64 ("&h10", 16);
3718                 }
3719
3720                 [Test]
3721                 [ExpectedException (typeof (FormatException))]
3722                 public void ToSByte_BadHexPrefix1 ()
3723                 {
3724                         Convert.ToSByte ("#10", 16);
3725                 }
3726
3727                 [Test]
3728                 [ExpectedException (typeof (FormatException))]
3729                 public void ToSByte_BadHexPrefix2 ()
3730                 {
3731                         Convert.ToSByte ("&H10", 16);
3732                 }
3733
3734                 [Test]
3735                 [ExpectedException (typeof (FormatException))]
3736                 public void ToSByte_BadHexPrefix3 ()
3737                 {
3738                         Convert.ToSByte ("&h10", 16);
3739                 }
3740
3741                 [Test]
3742                 [ExpectedException (typeof (FormatException))]
3743                 public void ToUInt16_BadHexPrefix1 ()
3744                 {
3745                         Convert.ToUInt16 ("#10", 16);
3746                 }
3747
3748                 [Test]
3749                 [ExpectedException (typeof (FormatException))]
3750                 public void ToUInt16_BadHexPrefix2 ()
3751                 {
3752                         Convert.ToUInt16 ("&H10", 16);
3753                 }
3754
3755                 [Test]
3756                 [ExpectedException (typeof (FormatException))]
3757                 public void ToUInt16_BadHexPrefix3 ()
3758                 {
3759                         Convert.ToUInt16 ("&h10", 16);
3760                 }
3761
3762                 [Test]
3763                 [ExpectedException (typeof (FormatException))]
3764                 public void ToUInt32_BadHexPrefix1 ()
3765                 {
3766                         Convert.ToUInt32 ("#10", 16);
3767                 }
3768
3769                 [Test]
3770                 [ExpectedException (typeof (FormatException))]
3771                 public void ToUInt32_BadHexPrefix2 ()
3772                 {
3773                         Convert.ToUInt32 ("&H10", 16);
3774                 }
3775
3776                 [Test]
3777                 [ExpectedException (typeof (FormatException))]
3778                 public void ToUInt32_BadHexPrefix3 ()
3779                 {
3780                         Convert.ToUInt32 ("&h10", 16);
3781                 }
3782
3783                 [Test]
3784                 [ExpectedException (typeof (FormatException))]
3785                 public void ToUInt64_BadHexPrefix1 ()
3786                 {
3787                         Convert.ToUInt64 ("#10", 16);
3788                 }
3789
3790                 [Test]
3791                 [ExpectedException (typeof (FormatException))]
3792                 public void ToUInt64_BadHexPrefix2 ()
3793                 {
3794                         Convert.ToUInt64 ("&H10", 16);
3795                 }
3796
3797                 [Test]
3798                 [ExpectedException (typeof (FormatException))]
3799                 public void ToUInt64_BadHexPrefix3 ()
3800                 {
3801                         Convert.ToUInt64 ("&h10", 16);
3802                 }
3803
3804                 [Test]
3805                 public void ToSByte_Base16_MinMax ()
3806                 {
3807                         AssertEquals ("80,16", SByte.MinValue, Convert.ToSByte ("80", 16));
3808                         AssertEquals ("0x80,16", SByte.MinValue, Convert.ToSByte ("0x80", 16));
3809                         AssertEquals ("0X80,16", SByte.MinValue, Convert.ToSByte ("0X80", 16));
3810
3811                         AssertEquals ("7f,16", SByte.MaxValue, Convert.ToSByte ("7f", 16));
3812                         AssertEquals ("7F,16", SByte.MaxValue, Convert.ToSByte ("7F", 16));
3813                         AssertEquals ("0x7f,16", SByte.MaxValue, Convert.ToSByte ("0x7f", 16));
3814                         AssertEquals ("0X7F,16", SByte.MaxValue, Convert.ToSByte ("0X7F", 16));
3815                 }
3816
3817                 [Test]
3818                 public void ToInt16_Base16_MinMax ()
3819                 {
3820                         AssertEquals ("8000,16", short.MinValue, Convert.ToInt16 ("8000", 16));
3821                         AssertEquals ("0x8000,16", short.MinValue, Convert.ToInt16 ("0x8000", 16));
3822                         AssertEquals ("0X8000,16", short.MinValue, Convert.ToInt16 ("0X8000", 16));
3823
3824                         AssertEquals ("7fff,16", short.MaxValue, Convert.ToInt16 ("7fff", 16));
3825                         AssertEquals ("7FFF,16", short.MaxValue, Convert.ToInt16 ("7FFF", 16));
3826                         AssertEquals ("0x7fff,16", short.MaxValue, Convert.ToInt16 ("0x7fff", 16));
3827                         AssertEquals ("0X7FFF,16", short.MaxValue, Convert.ToInt16 ("0X7FFF", 16));
3828                 }
3829
3830                 [Test]
3831                 public void ToInt32_Base16_MinMax ()
3832                 {
3833                         AssertEquals ("80000000,16", int.MinValue, Convert.ToInt32 ("80000000", 16));
3834                         AssertEquals ("0x80000000,16", int.MinValue, Convert.ToInt32 ("0x80000000", 16));
3835                         AssertEquals ("0X80000000,16", int.MinValue, Convert.ToInt32 ("0X80000000", 16));
3836
3837                         AssertEquals ("7fffffff,16", int.MaxValue, Convert.ToInt32 ("7fffffff", 16));
3838                         AssertEquals ("7FFFFFFF,16", int.MaxValue, Convert.ToInt32 ("7FFFFFFF", 16));
3839                         AssertEquals ("0x7fffffff,16", int.MaxValue, Convert.ToInt32 ("0x7fffffff", 16));
3840                         AssertEquals ("0X7FFFFFFF,16", int.MaxValue, Convert.ToInt32 ("0X7FFFFFFF", 16));
3841                 }
3842
3843                 [Test]
3844                 [ExpectedException (typeof (FormatException))]
3845                 public void ToByte_Base10_InvalidChars1 ()
3846                 {
3847                         Convert.ToByte ("0-1", 10);
3848                 }
3849
3850                 [Test]
3851                 [ExpectedException (typeof (FormatException))]
3852                 public void ToByte_Base10_InvalidChars2 ()
3853                 {
3854                         Convert.ToByte ("FF", 10);
3855                 }
3856
3857                 [Test]
3858                 [ExpectedException (typeof (FormatException))]
3859                 public void ToInt16_Base10_InvalidChars1 ()
3860                 {
3861                         Convert.ToInt16 ("0-1", 10);
3862                 }
3863
3864                 [Test]
3865                 [ExpectedException (typeof (FormatException))]
3866                 public void ToInt16_Base10_InvalidChars2 ()
3867                 {
3868                         Convert.ToInt16 ("FF", 10);
3869                 }
3870
3871                 [Test]
3872                 [ExpectedException (typeof (FormatException))]
3873                 public void ToInt32_Base10_InvalidChars1 ()
3874                 {
3875                         Convert.ToInt32 ("0-1", 10);
3876                 }
3877
3878                 [Test]
3879                 [ExpectedException (typeof (FormatException))]
3880                 public void ToInt32_Base10_InvalidChars2 ()
3881                 {
3882                         Convert.ToInt32 ("FF", 10);
3883                 }
3884
3885                 [Test]
3886                 [ExpectedException (typeof (FormatException))]
3887                 public void ToInt64_Base10_InvalidChars1 ()
3888                 {
3889                         Convert.ToInt64 ("0-1", 10);
3890                 }
3891
3892                 [Test]
3893                 [ExpectedException (typeof (FormatException))]
3894                 public void ToInt64_Base10_InvalidChars2 ()
3895                 {
3896                         Convert.ToInt64 ("FF", 10);
3897                 }
3898
3899                 [Test]
3900                 [ExpectedException (typeof (FormatException))]
3901                 public void ToSByte_Base10_InvalidChars1 ()
3902                 {
3903                         Convert.ToSByte ("0-1", 10);
3904                 }
3905
3906                 [Test]
3907                 [ExpectedException (typeof (FormatException))]
3908                 public void ToSByte_Base10_InvalidChars2 ()
3909                 {
3910                         Convert.ToSByte ("FF", 10);
3911                 }
3912
3913                 [Test]
3914                 [ExpectedException (typeof (FormatException))]
3915                 public void ToUInt16_Base10_InvalidChars1 ()
3916                 {
3917                         Convert.ToUInt16 ("0-1", 10);
3918                 }
3919
3920                 [Test]
3921                 [ExpectedException (typeof (FormatException))]
3922                 public void ToUInt16_Base10_InvalidChars2 ()
3923                 {
3924                         Convert.ToUInt16 ("FF", 10);
3925                 }
3926
3927                 [Test]
3928                 [ExpectedException (typeof (FormatException))]
3929                 public void ToUInt32_Base10_InvalidChars1 ()
3930                 {
3931                         Convert.ToUInt32 ("0-1", 10);
3932                 }
3933
3934                 [Test]
3935                 [ExpectedException (typeof (FormatException))]
3936                 public void ToUInt32_Base10_InvalidChars2 ()
3937                 {
3938                         Convert.ToUInt32 ("FF", 10);
3939                 }
3940
3941                 [Test]
3942                 [ExpectedException (typeof (FormatException))]
3943                 public void ToUInt64_Base10_InvalidChars1 ()
3944                 {
3945                         Convert.ToUInt64 ("0-1", 10);
3946                 }
3947
3948                 [Test]
3949                 [ExpectedException (typeof (FormatException))]
3950                 public void ToUInt64_Base10_InvalidChars2 ()
3951                 {
3952                         Convert.ToUInt64 ("FF", 10);
3953                 }
3954
3955                 [Test]
3956                 [ExpectedException (typeof (FormatException))]
3957                 public void ToByte_Base16_InvalidChars1 ()
3958                 {
3959                         Convert.ToByte ("0-1", 16);
3960                 }
3961
3962                 [Test]
3963                 [ExpectedException (typeof (FormatException))]
3964                 public void ToByte_Base16_InvalidChars2 ()
3965                 {
3966                         Convert.ToByte ("GG", 16);
3967                 }
3968
3969                 [Test]
3970                 [ExpectedException (typeof (FormatException))]
3971                 public void ToInt16_Base16_InvalidChars1 ()
3972                 {
3973                         Convert.ToInt16 ("0-1", 16);
3974                 }
3975
3976                 [Test]
3977                 [ExpectedException (typeof (FormatException))]
3978                 public void ToInt16_Base16_InvalidChars2 ()
3979                 {
3980                         Convert.ToInt16 ("GG", 16);
3981                 }
3982
3983                 [Test]
3984                 [ExpectedException (typeof (FormatException))]
3985                 public void ToInt32_Base16_InvalidChars1 ()
3986                 {
3987                         Convert.ToInt32 ("0-1", 16);
3988                 }
3989
3990                 [Test]
3991                 [ExpectedException (typeof (FormatException))]
3992                 public void ToInt32_Base16_InvalidChars2 ()
3993                 {
3994                         Convert.ToInt32 ("GG", 16);
3995                 }
3996
3997                 [Test]
3998                 [ExpectedException (typeof (FormatException))]
3999                 public void ToInt64_Base16_InvalidChars1 ()
4000                 {
4001                         Convert.ToInt64 ("0-1", 16);
4002                 }
4003
4004                 [Test]
4005                 [ExpectedException (typeof (FormatException))]
4006                 public void ToInt64_Base16_InvalidChars2 ()
4007                 {
4008                         Convert.ToInt64 ("GG", 16);
4009                 }
4010
4011                 [Test]
4012                 [ExpectedException (typeof (FormatException))]
4013                 public void ToSByte_Base16_InvalidChars1 ()
4014                 {
4015                         Convert.ToSByte ("0-1", 16);
4016                 }
4017
4018                 [Test]
4019                 [ExpectedException (typeof (FormatException))]
4020                 public void ToSByte_Base16_InvalidChars2 ()
4021                 {
4022                         Convert.ToSByte ("GG", 16);
4023                 }
4024
4025                 [Test]
4026                 [ExpectedException (typeof (FormatException))]
4027                 public void ToUInt16_Base16_InvalidChars1 ()
4028                 {
4029                         Convert.ToUInt16 ("0-1", 16);
4030                 }
4031
4032                 [Test]
4033                 [ExpectedException (typeof (FormatException))]
4034                 public void ToUInt16_Base16_InvalidChars2 ()
4035                 {
4036                         Convert.ToUInt16 ("GG", 16);
4037                 }
4038
4039                 [Test]
4040                 [ExpectedException (typeof (FormatException))]
4041                 public void ToUInt32_Base16_InvalidChars1 ()
4042                 {
4043                         Convert.ToUInt32 ("0-1", 16);
4044                 }
4045
4046                 [Test]
4047                 [ExpectedException (typeof (FormatException))]
4048                 public void ToUInt32_Base16_InvalidChars2 ()
4049                 {
4050                         Convert.ToUInt32 ("GG", 16);
4051                 }
4052
4053                 [Test]
4054                 [ExpectedException (typeof (FormatException))]
4055                 public void ToUInt64_Base16_InvalidChars1 ()
4056                 {
4057                         Convert.ToUInt64 ("0-1", 16);
4058                 }
4059
4060                 [Test]
4061                 [ExpectedException (typeof (FormatException))]
4062                 public void ToUInt64_Base16_InvalidChars2 ()
4063                 {
4064                         Convert.ToUInt64 ("GG", 16);
4065                 }
4066
4067                 [Test]
4068                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4069                 public void ToByte_Base2_Empty ()
4070                 {
4071                         Convert.ToByte ("", 2);
4072                 }
4073
4074                 [Test]
4075                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4076                 public void ToByte_Base8_Empty ()
4077                 {
4078                         Convert.ToByte ("", 8);
4079                 }
4080
4081                 [Test]
4082                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4083                 public void ToByte_Base10_Empty ()
4084                 {
4085                         Convert.ToByte ("", 10);
4086                 }
4087
4088                 [Test]
4089                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4090                 public void ToByte_Base16_Empty ()
4091                 {
4092                         Convert.ToByte ("", 16);
4093                 }
4094
4095                 [Test]
4096                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4097                 public void ToInt16_Base2_Empty ()
4098                 {
4099                         Convert.ToInt16 ("", 2);
4100                 }
4101
4102                 [Test]
4103                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4104                 public void ToInt16_Base8_Empty ()
4105                 {
4106                         Convert.ToInt16 ("", 8);
4107                 }
4108
4109                 [Test]
4110                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4111                 public void ToInt16_Base10_Empty ()
4112                 {
4113                         Convert.ToInt16 ("", 10);
4114                 }
4115
4116                 [Test]
4117                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4118                 public void ToInt16_Base16_Empty ()
4119                 {
4120                         Convert.ToInt16 ("", 16);
4121                 }
4122
4123                 [Test]
4124                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4125                 public void ToInt32_Base2_Empty ()
4126                 {
4127                         Convert.ToInt32 ("", 2);
4128                 }
4129
4130                 [Test]
4131                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4132                 public void ToInt32_Base8_Empty ()
4133                 {
4134                         Convert.ToInt32 ("", 8);
4135                 }
4136
4137                 [Test]
4138                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4139                 public void ToInt32_Base10_Empty ()
4140                 {
4141                         Convert.ToInt32 ("", 10);
4142                 }
4143
4144                 [Test]
4145                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4146                 public void ToInt32_Base16_Empty ()
4147                 {
4148                         Convert.ToInt32 ("", 16);
4149                 }
4150
4151                 [Test]
4152                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4153                 public void ToInt64_Base2_Empty ()
4154                 {
4155                         Convert.ToInt64 ("", 2);
4156                 }
4157
4158                 [Test]
4159                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4160                 public void ToInt64_Base8_Empty ()
4161                 {
4162                         Convert.ToInt64 ("", 8);
4163                 }
4164
4165                 [Test]
4166                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4167                 public void ToInt64_Base10_Empty ()
4168                 {
4169                         Convert.ToInt64 ("", 10);
4170                 }
4171
4172                 [Test]
4173                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4174                 public void ToInt64_Base16_Empty ()
4175                 {
4176                         Convert.ToInt64 ("", 16);
4177                 }
4178
4179                 [Test]
4180                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4181                 public void ToSByte_Base2_Empty ()
4182                 {
4183                         Convert.ToSByte ("", 2);
4184                 }
4185
4186                 [Test]
4187                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4188                 public void ToSByte_Base8_Empty ()
4189                 {
4190                         Convert.ToSByte ("", 8);
4191                 }
4192
4193                 [Test]
4194                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4195                 public void ToSByte_Base10_Empty ()
4196                 {
4197                         Convert.ToSByte ("", 10);
4198                 }
4199
4200                 [Test]
4201                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4202                 public void ToSByte_Base16_Empty ()
4203                 {
4204                         Convert.ToSByte ("", 16);
4205                 }
4206
4207                 [Test]
4208                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4209                 public void ToUInt16_Base2_Empty ()
4210                 {
4211                         Convert.ToUInt16 ("", 2);
4212                 }
4213
4214                 [Test]
4215                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4216                 public void ToUInt16_Base8_Empty ()
4217                 {
4218                         Convert.ToUInt16 ("", 8);
4219                 }
4220
4221                 [Test]
4222                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4223                 public void ToUInt16_Base10_Empty ()
4224                 {
4225                         Convert.ToUInt16 ("", 10);
4226                 }
4227
4228                 [Test]
4229                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4230                 public void ToUInt16_Base16_Empty ()
4231                 {
4232                         Convert.ToUInt16 ("", 16);
4233                 }
4234
4235                 [Test]
4236                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4237                 public void ToUInt32_Base2_Empty ()
4238                 {
4239                         Convert.ToUInt32 ("", 2);
4240                 }
4241
4242                 [Test]
4243                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4244                 public void ToUInt32_Base8_Empty ()
4245                 {
4246                         Convert.ToUInt32 ("", 8);
4247                 }
4248
4249                 [Test]
4250                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4251                 public void ToUInt32_Base10_Empty ()
4252                 {
4253                         Convert.ToUInt32 ("", 10);
4254                 }
4255
4256                 [Test]
4257                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4258                 public void ToUInt32_Base16_Empty ()
4259                 {
4260                         Convert.ToUInt32 ("", 16);
4261                 }
4262
4263                 [Test]
4264                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4265                 public void ToUInt64_Base2_Empty ()
4266                 {
4267                         Convert.ToUInt64 ("", 2);
4268                 }
4269
4270                 [Test]
4271                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4272                 public void ToUInt64_Base8_Empty ()
4273                 {
4274                         Convert.ToUInt64 ("", 8);
4275                 }
4276
4277                 [Test]
4278                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4279                 public void ToUInt64_Base10_Empty ()
4280                 {
4281                         Convert.ToUInt64 ("", 10);
4282                 }
4283
4284                 [Test]
4285                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
4286                 public void ToUInt64_Base16_Empty ()
4287                 {
4288                         Convert.ToUInt64 ("", 16);
4289                 }
4290
4291                 [Test]
4292                 [ExpectedException (typeof (FormatException))]
4293                 public void ToByte_HexPrefixOnly ()
4294                 {
4295                         Convert.ToByte ("0x", 16);
4296                 }
4297
4298                 [Test]
4299                 [ExpectedException (typeof (FormatException))]
4300                 public void ToInt16_HexPrefixOnly ()
4301                 {
4302                         Convert.ToInt16 ("0x", 16);
4303                 }
4304
4305                 [Test]
4306                 [ExpectedException (typeof (FormatException))]
4307                 public void ToInt32_HexPrefixOnly ()
4308                 {
4309                         Convert.ToInt32 ("0x", 16);
4310                 }
4311
4312                 [Test]
4313                 [ExpectedException (typeof (FormatException))]
4314                 public void ToInt64_HexPrefixOnly ()
4315                 {
4316                         Convert.ToInt64 ("0x", 16);
4317                 }
4318
4319                 [Test]
4320                 [ExpectedException (typeof (FormatException))]
4321                 public void ToSByte_HexPrefixOnly ()
4322                 {
4323                         Convert.ToSByte ("0x", 16);
4324                 }
4325
4326                 [Test]
4327                 [ExpectedException (typeof (FormatException))]
4328                 public void ToUInt16_HexPrefixOnly ()
4329                 {
4330                         Convert.ToUInt16 ("0x", 16);
4331                 }
4332
4333                 [Test]
4334                 [ExpectedException (typeof (FormatException))]
4335                 public void ToUInt32_HexPrefixOnly ()
4336                 {
4337                         Convert.ToUInt32 ("0x", 16);
4338                 }
4339
4340                 [Test]
4341                 [ExpectedException (typeof (FormatException))]
4342                 public void ToUInt64_HexPrefixOnly ()
4343                 {
4344                         Convert.ToUInt64 ("0x", 16);
4345                 }
4346
4347                 [Test]
4348                 [ExpectedException (typeof (ArgumentException))]
4349                 public void ToByte_Base2_NegativeSignOnly ()
4350                 {
4351                         Convert.ToByte ("-", 2);
4352                 }
4353
4354                 [Test]
4355                 [ExpectedException (typeof (ArgumentException))]
4356                 public void ToByte_Base8_NegativeSignOnly ()
4357                 {
4358                         Convert.ToByte ("-", 8);
4359                 }
4360
4361                 [Test]
4362                 [ExpectedException (typeof (OverflowException))]
4363                 public void ToByte_Base10_NegativeSignOnly ()
4364                 {
4365                         Convert.ToByte ("-", 10);
4366                 }
4367
4368                 [Test]
4369                 [ExpectedException (typeof (ArgumentException))]
4370                 public void ToByte_Base16_NegativeSignOnly ()
4371                 {
4372                         Convert.ToByte ("-", 16);
4373                 }
4374
4375                 [Test]
4376                 [ExpectedException (typeof (ArgumentException))]
4377                 public void ToInt16_Base2_NegativeSignOnly ()
4378                 {
4379                         Convert.ToInt16 ("-", 2);
4380                 }
4381
4382                 [Test]
4383                 [ExpectedException (typeof (ArgumentException))]
4384                 public void ToInt16_Base8_NegativeSignOnly ()
4385                 {
4386                         Convert.ToInt16 ("-", 8);
4387                 }
4388
4389                 [Test]
4390                 [ExpectedException (typeof (FormatException))]
4391                 public void ToInt16_Base10_NegativeSignOnly ()
4392                 {
4393                         Convert.ToInt16 ("-", 10);
4394                 }
4395
4396                 [Test]
4397                 [ExpectedException (typeof (ArgumentException))]
4398                 public void ToInt16_Base16_NegativeSignOnly ()
4399                 {
4400                         Convert.ToInt16 ("-", 16);
4401                 }
4402
4403                 [Test]
4404                 [ExpectedException (typeof (ArgumentException))]
4405                 public void ToInt32_Base2_NegativeSignOnly ()
4406                 {
4407                         Convert.ToInt32 ("-", 2);
4408                 }
4409
4410                 [Test]
4411                 [ExpectedException (typeof (ArgumentException))]
4412                 public void ToInt32_Base8_NegativeSignOnly ()
4413                 {
4414                         Convert.ToInt32 ("-", 8);
4415                 }
4416
4417                 [Test]
4418                 [ExpectedException (typeof (FormatException))]
4419                 public void ToInt32_Base10_NegativeSignOnly ()
4420                 {
4421                         Convert.ToInt32 ("-", 10);
4422                 }
4423
4424                 [Test]
4425                 [ExpectedException (typeof (ArgumentException))]
4426                 public void ToInt32_Base16_NegativeSignOnly ()
4427                 {
4428                         Convert.ToInt32 ("-", 16);
4429                 }
4430
4431                 [Test]
4432                 [ExpectedException (typeof (ArgumentException))]
4433                 public void ToInt64_Base2_NegativeSignOnly ()
4434                 {
4435                         Convert.ToInt64 ("-", 2);
4436                 }
4437
4438                 [Test]
4439                 [ExpectedException (typeof (ArgumentException))]
4440                 public void ToInt64_Base8_NegativeSignOnly ()
4441                 {
4442                         Convert.ToInt64 ("-", 8);
4443                 }
4444
4445                 [Test]
4446                 [ExpectedException (typeof (FormatException))]
4447                 public void ToInt64_Base10_NegativeSignOnly ()
4448                 {
4449                         Convert.ToInt64 ("-", 10);
4450                 }
4451
4452                 [Test]
4453                 [ExpectedException (typeof (ArgumentException))]
4454                 public void ToInt64_Base16_NegativeSignOnly ()
4455                 {
4456                         Convert.ToInt64 ("-", 16);
4457                 }
4458
4459                 [Test]
4460                 [ExpectedException (typeof (ArgumentException))]
4461                 public void ToSByte_Base2_NegativeSignOnly ()
4462                 {
4463                         Convert.ToSByte ("-", 2);
4464                 }
4465
4466                 [Test]
4467                 [ExpectedException (typeof (ArgumentException))]
4468                 public void ToSByte_Base8_NegativeSignOnly ()
4469                 {
4470                         Convert.ToSByte ("-", 8);
4471                 }
4472
4473                 [Test]
4474                 [ExpectedException (typeof (FormatException))]
4475                 public void ToSByte_Base10_NegativeSignOnly ()
4476                 {
4477                         Convert.ToSByte ("-", 10);
4478                 }
4479
4480                 [Test]
4481                 [ExpectedException (typeof (ArgumentException))]
4482                 public void ToSByte_Base16_NegativeSignOnly ()
4483                 {
4484                         Convert.ToSByte ("-", 16);
4485                 }
4486
4487                 [Test]
4488                 [ExpectedException (typeof (ArgumentException))]
4489                 public void ToUInt16_Base2_NegativeSignOnly ()
4490                 {
4491                         Convert.ToUInt16 ("-", 2);
4492                 }
4493
4494                 [Test]
4495                 [ExpectedException (typeof (ArgumentException))]
4496                 public void ToUInt16_Base8_NegativeSignOnly ()
4497                 {
4498                         Convert.ToUInt16 ("-", 8);
4499                 }
4500
4501                 [Test]
4502                 [ExpectedException (typeof (OverflowException))]
4503                 public void ToUInt16_Base10_NegativeSignOnly ()
4504                 {
4505                         Convert.ToUInt16 ("-", 10);
4506                 }
4507
4508                 [Test]
4509                 [ExpectedException (typeof (ArgumentException))]
4510                 public void ToUInt16_Base16_NegativeSignOnly ()
4511                 {
4512                         Convert.ToUInt16 ("-", 16);
4513                 }
4514
4515                 [Test]
4516                 [ExpectedException (typeof (ArgumentException))]
4517                 public void ToUInt32_Base2_NegativeSignOnly ()
4518                 {
4519                         Convert.ToUInt32 ("-", 2);
4520                 }
4521
4522                 [Test]
4523                 [ExpectedException (typeof (ArgumentException))]
4524                 public void ToUInt32_Base8_NegativeSignOnly ()
4525                 {
4526                         Convert.ToUInt32 ("-", 8);
4527                 }
4528
4529                 [Test]
4530                 [ExpectedException (typeof (OverflowException))]
4531                 public void ToUInt32_Base10_NegativeSignOnly ()
4532                 {
4533                         Convert.ToUInt32 ("-", 10);
4534                 }
4535
4536                 [Test]
4537                 [ExpectedException (typeof (ArgumentException))]
4538                 public void ToUInt32_Base16_NegativeSignOnly ()
4539                 {
4540                         Convert.ToUInt32 ("-", 16);
4541                 }
4542
4543                 [Test]
4544                 [ExpectedException (typeof (ArgumentException))]
4545                 public void ToUInt64_Base2_NegativeSignOnly ()
4546                 {
4547                         Convert.ToUInt64 ("-", 2);
4548                 }
4549
4550                 [Test]
4551                 [ExpectedException (typeof (ArgumentException))]
4552                 public void ToUInt64_Base8_NegativeSignOnly ()
4553                 {
4554                         Convert.ToUInt64 ("-", 8);
4555                 }
4556
4557                 [Test]
4558                 [ExpectedException (typeof (OverflowException))]
4559                 public void ToUInt64_Base10_NegativeSignOnly ()
4560                 {
4561                         Convert.ToUInt64 ("-", 10);
4562                 }
4563
4564                 [Test]
4565                 [ExpectedException (typeof (ArgumentException))]
4566                 public void ToUInt64_Base16_NegativeSignOnly ()
4567                 {
4568                         Convert.ToUInt64 ("-", 16);
4569                 }
4570         }
4571 }