2 // BitConverterTest.cs - NUnit Test Cases for System.BitConverter
5 // Duco Fijma (duco@lorentz.xs4all.nl)
8 // Copyright (C) 2004 Novell (http://www.novell.com)
11 using NUnit.Framework;
14 namespace MonoTests.System
17 public class BitConverterTest
19 public void TestIsLittleEndian ()
21 byte [] b = BitConverter.GetBytes (1);
22 Assert.AreEqual (b [0] == 1, BitConverter.IsLittleEndian, "#1");
25 private void PrivateTestSingle (float v1)
29 byte [] larger = new byte [] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 };
31 b = BitConverter.GetBytes (v1);
32 Assert.AreEqual (4, b.Length, "#A1");
34 v2 = BitConverter.ToSingle (b, 0);
35 Assert.AreEqual (v1, v2, "#A2");
38 v2 = BitConverter.ToSingle (larger, 1);
39 Assert.AreEqual (v1, v2, "#A3");
42 BitConverter.ToSingle (larger, 8);
44 } catch (ArgumentException ex) {
45 // Destination array is not long enough to copy all the items
46 // in the collection. Check array index and length
47 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
48 Assert.IsNull (ex.InnerException, "#B3");
49 Assert.IsNotNull (ex.Message, "#B4");
50 Assert.IsNull (ex.ParamName, "#B5");
54 BitConverter.ToSingle (larger, 10);
56 } catch (ArgumentOutOfRangeException ex) {
57 // Index was out of range. Must be non-negative and less than
58 // the size of the collection
59 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
60 Assert.IsNull (ex.InnerException, "#C3");
61 Assert.IsNotNull (ex.Message, "#C4");
62 Assert.IsNotNull (ex.ParamName, "#C5");
63 Assert.AreEqual ("startIndex", ex.ParamName, "#C6");
68 public void TestSingle ()
70 PrivateTestSingle (0.1f);
71 PrivateTestSingle (24.1e30f);
75 public void ToSingle_Value_Null ()
78 BitConverter.ToSingle ((byte []) null, 77);
80 } catch (ArgumentNullException ex) {
81 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
82 Assert.IsNull (ex.InnerException, "#3");
83 Assert.IsNotNull (ex.Message, "#4");
84 Assert.IsNotNull (ex.ParamName, "#5");
85 Assert.AreEqual ("value", ex.ParamName, "#6");
89 private void PrivateTestDouble (double v1)
93 byte [] larger = new byte [] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 };
95 b = BitConverter.GetBytes (v1);
96 Assert.AreEqual (8, b.Length, "#A1");
98 v2 = BitConverter.ToDouble (b, 0);
99 Assert.AreEqual (v1, v2, "#A2");
101 b.CopyTo (larger, 1);
102 v2 = BitConverter.ToDouble (larger, 1);
103 Assert.AreEqual (v1, v2, "#A3");
106 BitConverter.ToDouble (larger, 3);
108 } catch (ArgumentException ex) {
109 // Destination array is not long enough to copy all the items
110 // in the collection. Check array index and length
111 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
112 Assert.IsNull (ex.InnerException, "#B3");
113 Assert.IsNotNull (ex.Message, "#B4");
114 Assert.IsNull (ex.ParamName, "#B5");
118 BitConverter.ToDouble (larger, 10);
120 } catch (ArgumentOutOfRangeException ex) {
121 // Index was out of range. Must be non-negative and less than
122 // the size of the collection
123 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
124 Assert.IsNull (ex.InnerException, "#C3");
125 Assert.IsNotNull (ex.Message, "#C4");
126 Assert.IsNotNull (ex.ParamName, "#C5");
127 Assert.AreEqual ("startIndex", ex.ParamName, "#C6");
132 public void TestDouble ()
136 Assert.AreEqual (d, BitConverter.Int64BitsToDouble (BitConverter.DoubleToInt64Bits (d)), "#1");
138 PrivateTestDouble (0.1);
139 PrivateTestDouble (24.1e77);
143 public void ToDouble_Value_Null ()
146 BitConverter.ToDouble ((byte []) null, 77);
148 } catch (ArgumentNullException ex) {
149 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
150 Assert.IsNull (ex.InnerException, "#3");
151 Assert.IsNotNull (ex.Message, "#4");
152 Assert.IsNotNull (ex.ParamName, "#5");
153 Assert.AreEqual ("value", ex.ParamName, "#6");
157 private void PrivateTestBool (bool v1)
161 byte [] larger = new byte [] { 0x00, 0x01, 0x02, 0x03 };
163 b = BitConverter.GetBytes (v1);
164 Assert.AreEqual (1, b.Length, "#A1");
166 v2 = BitConverter.ToBoolean (b, 0);
167 Assert.AreEqual (v1, v2, "#A2");
169 b.CopyTo (larger, 1);
170 v2 = BitConverter.ToBoolean (larger, 1);
171 Assert.AreEqual (v1, v2, "#A3");
174 BitConverter.ToBoolean (larger, 4);
176 } catch (ArgumentOutOfRangeException ex) {
177 // Index was out of range. Must be non-negative and less than
178 // the size of the collection
179 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
180 Assert.IsNull (ex.InnerException, "#B3");
181 Assert.IsNotNull (ex.Message, "#B4");
182 Assert.IsNotNull (ex.ParamName, "#B5");
183 Assert.AreEqual ("startIndex", ex.ParamName, "#B6");
188 public void TestBool ()
190 PrivateTestBool (true);
191 PrivateTestBool (false);
195 public void ToBoolean_Value_Null ()
198 BitConverter.ToBoolean ((byte []) null, 77);
200 } catch (ArgumentNullException ex) {
201 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
202 Assert.IsNull (ex.InnerException, "#3");
203 Assert.IsNotNull (ex.Message, "#4");
204 Assert.IsNotNull (ex.ParamName, "#5");
205 Assert.AreEqual ("value", ex.ParamName, "#6");
209 private void PrivateTestChar (char v1)
213 byte [] larger = new byte [] { 0x00, 0x01, 0x02, 0x03 };
215 b = BitConverter.GetBytes (v1);
216 Assert.AreEqual (2, b.Length, "#A1");
218 v2 = BitConverter.ToChar (b, 0);
219 Assert.AreEqual (v1, v2, "#A2");
221 b.CopyTo (larger, 1);
222 v2 = BitConverter.ToChar (larger, 1);
223 Assert.AreEqual (v1, v2, "#A3");
226 BitConverter.ToChar (larger, 3);
228 } catch (ArgumentException ex) {
229 // Destination array is not long enough to copy all the items
230 // in the collection. Check array index and length
231 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
232 Assert.IsNull (ex.InnerException, "#B3");
233 Assert.IsNotNull (ex.Message, "#B4");
234 Assert.IsNull (ex.ParamName, "#B5");
238 BitConverter.ToChar (larger, 4);
240 } catch (ArgumentOutOfRangeException ex) {
241 // Index was out of range. Must be non-negative and less than
242 // the size of the collection
243 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
244 Assert.IsNull (ex.InnerException, "#C3");
245 Assert.IsNotNull (ex.Message, "#C4");
246 Assert.IsNotNull (ex.ParamName, "#C5");
247 Assert.AreEqual ("startIndex", ex.ParamName, "#C6");
252 public void TestChar ()
254 PrivateTestChar ('A');
255 PrivateTestChar ('\x01ff');
259 public void ToChar_Value_Null ()
262 BitConverter.ToChar ((byte []) null, 77);
264 } catch (ArgumentNullException ex) {
265 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
266 Assert.IsNull (ex.InnerException, "#3");
267 Assert.IsNotNull (ex.Message, "#4");
268 Assert.IsNotNull (ex.ParamName, "#5");
269 Assert.AreEqual ("value", ex.ParamName, "#6");
273 private void PrivateTestInt16 (short v1)
277 byte [] larger = new byte [] { 0x00, 0x01, 0x02, 0x03 };
279 b = BitConverter.GetBytes (v1);
280 Assert.AreEqual (2, b.Length, "#A1");
282 v2 = BitConverter.ToInt16 (b, 0);
283 Assert.AreEqual (v1, v2, "#A2");
285 b.CopyTo (larger, 1);
286 v2 = BitConverter.ToInt16 (larger, 1);
287 Assert.AreEqual (v1, v2, "#A3");
290 BitConverter.ToInt16 (larger, 3);
292 } catch (ArgumentException ex) {
293 // Destination array is not long enough to copy all the items
294 // in the collection. Check array index and length
295 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
296 Assert.IsNull (ex.InnerException, "#B3");
297 Assert.IsNotNull (ex.Message, "#B4");
298 Assert.IsNull (ex.ParamName, "#B5");
302 BitConverter.ToInt16 (larger, 4);
304 } catch (ArgumentOutOfRangeException ex) {
305 // Index was out of range. Must be non-negative and less than
306 // the size of the collection
307 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
308 Assert.IsNull (ex.InnerException, "#C3");
309 Assert.IsNotNull (ex.Message, "#C4");
310 Assert.IsNotNull (ex.ParamName, "#C5");
311 Assert.AreEqual ("startIndex", ex.ParamName, "#C6");
316 public void TestInt16 ()
318 PrivateTestInt16 (0);
319 PrivateTestInt16 (1000);
320 PrivateTestInt16 (-32768);
321 PrivateTestInt16 (32767);
325 public void ToInt16_Value_Null ()
328 BitConverter.ToInt16 ((byte []) null, 77);
330 } catch (ArgumentNullException ex) {
331 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
332 Assert.IsNull (ex.InnerException, "#3");
333 Assert.IsNotNull (ex.Message, "#4");
334 Assert.IsNotNull (ex.ParamName, "#5");
335 Assert.AreEqual ("value", ex.ParamName, "#6");
339 private void PrivateTestUInt16 (ushort v1)
343 byte [] larger = new byte [] { 0x00, 0x01, 0x02, 0x03 };
345 b = BitConverter.GetBytes (v1);
346 Assert.AreEqual (2, b.Length, "#A1");
348 v2 = BitConverter.ToUInt16 (b, 0);
349 Assert.AreEqual (v1, v2, "#A2");
351 b.CopyTo (larger, 1);
352 v2 = BitConverter.ToUInt16 (larger, 1);
353 Assert.AreEqual (v1, v2, "#A3");
356 BitConverter.ToUInt16 (larger, 3);
358 } catch (ArgumentException ex) {
359 // Destination array is not long enough to copy all the items
360 // in the collection. Check array index and length
361 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
362 Assert.IsNull (ex.InnerException, "#B3");
363 Assert.IsNotNull (ex.Message, "#B4");
364 Assert.IsNull (ex.ParamName, "#B5");
368 BitConverter.ToUInt16 (larger, 4);
370 } catch (ArgumentOutOfRangeException ex) {
371 // Index was out of range. Must be non-negative and less than
372 // the size of the collection
373 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
374 Assert.IsNull (ex.InnerException, "#C3");
375 Assert.IsNotNull (ex.Message, "#C4");
376 Assert.IsNotNull (ex.ParamName, "#C5");
377 Assert.AreEqual ("startIndex", ex.ParamName, "#C6");
382 public void TestUInt16 ()
384 PrivateTestUInt16 (0);
385 PrivateTestUInt16 (1000);
386 PrivateTestUInt16 (65535);
390 public void ToUInt16_Value_Null ()
393 BitConverter.ToUInt16 ((byte []) null, 77);
395 } catch (ArgumentNullException ex) {
396 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
397 Assert.IsNull (ex.InnerException, "#3");
398 Assert.IsNotNull (ex.Message, "#4");
399 Assert.IsNotNull (ex.ParamName, "#5");
400 Assert.AreEqual ("value", ex.ParamName, "#6");
404 private void PrivateTestInt32 (int v1)
408 byte [] larger = new byte [] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 };
410 b = BitConverter.GetBytes (v1);
411 Assert.AreEqual (4, b.Length, "#A1");
413 v2 = BitConverter.ToInt32 (b, 0);
414 Assert.AreEqual (v1, v2, "#A2");
416 b.CopyTo (larger, 1);
417 v2 = BitConverter.ToInt32 (larger, 1);
418 Assert.AreEqual (v1, v2, "#A3");
421 BitConverter.ToInt32 (larger, 8);
423 } catch (ArgumentException ex) {
424 // Destination array is not long enough to copy all the items
425 // in the collection. Check array index and length
426 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
427 Assert.IsNull (ex.InnerException, "#B3");
428 Assert.IsNotNull (ex.Message, "#B4");
429 Assert.IsNull (ex.ParamName, "#B5");
433 BitConverter.ToInt32 (larger, 10);
435 } catch (ArgumentOutOfRangeException ex) {
436 // Index was out of range. Must be non-negative and less than
437 // the size of the collection
438 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
439 Assert.IsNull (ex.InnerException, "#C3");
440 Assert.IsNotNull (ex.Message, "#C4");
441 Assert.IsNotNull (ex.ParamName, "#C5");
442 Assert.AreEqual ("startIndex", ex.ParamName, "#C6");
447 public void TestInt32 ()
449 PrivateTestInt32 (0);
450 PrivateTestInt32 (1000);
451 PrivateTestInt32 (-2147483648);
452 PrivateTestInt32 (2147483647);
456 public void ToInt32_Value_Null ()
459 BitConverter.ToInt32 ((byte []) null, 77);
461 } catch (ArgumentNullException ex) {
462 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
463 Assert.IsNull (ex.InnerException, "#3");
464 Assert.IsNotNull (ex.Message, "#4");
465 Assert.IsNotNull (ex.ParamName, "#5");
466 Assert.AreEqual ("value", ex.ParamName, "#6");
470 private void PrivateTestUInt32 (uint v1)
474 byte [] larger = new byte [] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 };
476 b = BitConverter.GetBytes (v1);
477 Assert.AreEqual (4, b.Length, "#A1");
479 v2 = BitConverter.ToUInt32 (b, 0);
480 Assert.AreEqual (v1, v2, "#A2");
482 b.CopyTo (larger, 1);
483 v2 = BitConverter.ToUInt32 (larger, 1);
484 Assert.AreEqual (v1, v2, "#A3");
487 BitConverter.ToUInt32 (larger, 8);
489 } catch (ArgumentException ex) {
490 // Destination array is not long enough to copy all the items
491 // in the collection. Check array index and length
492 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
493 Assert.IsNull (ex.InnerException, "#B3");
494 Assert.IsNotNull (ex.Message, "#B4");
495 Assert.IsNull (ex.ParamName, "#B5");
499 BitConverter.ToUInt32 (larger, 10);
501 } catch (ArgumentOutOfRangeException ex) {
502 // Index was out of range. Must be non-negative and less than
503 // the size of the collection
504 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
505 Assert.IsNull (ex.InnerException, "#C3");
506 Assert.IsNotNull (ex.Message, "#C4");
507 Assert.IsNotNull (ex.ParamName, "#C5");
508 Assert.AreEqual ("startIndex", ex.ParamName, "#C6");
513 public void TestUInt32 ()
515 PrivateTestUInt32 (0u);
516 PrivateTestUInt32 (1000u);
517 PrivateTestUInt32 (4294967295u);
521 public void ToUInt32_Value_Null ()
524 BitConverter.ToUInt32 ((byte []) null, 77);
526 } catch (ArgumentNullException ex) {
527 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
528 Assert.IsNull (ex.InnerException, "#3");
529 Assert.IsNotNull (ex.Message, "#4");
530 Assert.IsNotNull (ex.ParamName, "#5");
531 Assert.AreEqual ("value", ex.ParamName, "#6");
535 private void PrivateTestInt64 (long v1)
539 byte [] larger = new byte [] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 };
541 b = BitConverter.GetBytes (v1);
542 Assert.AreEqual (8, b.Length, "#A1");
544 v2 = BitConverter.ToInt64 (b, 0);
545 Assert.AreEqual (v1, v2, "#A2");
547 b.CopyTo (larger, 1);
548 v2 = BitConverter.ToInt64 (larger, 1);
549 Assert.AreEqual (v1, v2, "#A3");
552 BitConverter.ToInt64 (larger, 8);
554 } catch (ArgumentException ex) {
555 // Destination array is not long enough to copy all the items
556 // in the collection. Check array index and length
557 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
558 Assert.IsNull (ex.InnerException, "#B3");
559 Assert.IsNotNull (ex.Message, "#B4");
560 Assert.IsNull (ex.ParamName, "#B5");
564 BitConverter.ToInt64 (larger, 10);
566 } catch (ArgumentOutOfRangeException ex) {
567 // Index was out of range. Must be non-negative and less than
568 // the size of the collection
569 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
570 Assert.IsNull (ex.InnerException, "#C3");
571 Assert.IsNotNull (ex.Message, "#C4");
572 Assert.IsNotNull (ex.ParamName, "#C5");
573 Assert.AreEqual ("startIndex", ex.ParamName, "#C6");
578 public void TestInt64 ()
580 PrivateTestInt64 (0);
581 PrivateTestInt64 (1000);
582 PrivateTestInt64 (-9223372036854775808);
583 PrivateTestInt64 (9223372036854775807);
587 public void ToInt64_Value_Null ()
590 BitConverter.ToInt64 ((byte []) null, 77);
592 } catch (ArgumentNullException ex) {
593 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
594 Assert.IsNull (ex.InnerException, "#3");
595 Assert.IsNotNull (ex.Message, "#4");
596 Assert.IsNotNull (ex.ParamName, "#5");
597 Assert.AreEqual ("value", ex.ParamName, "#6");
601 private void PrivateTestUInt64 (ulong v1)
605 byte [] larger = new byte [] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 };
607 b = BitConverter.GetBytes (v1);
608 Assert.AreEqual (8, b.Length, "#A1");
610 v2 = BitConverter.ToUInt64 (b, 0);
611 Assert.AreEqual (v1, v2, "#A2");
613 b.CopyTo (larger, 1);
614 v2 = BitConverter.ToUInt64 (larger, 1);
615 Assert.AreEqual (v1, v2, "#A3");
618 BitConverter.ToUInt64 (larger, 8);
620 } catch (ArgumentException ex) {
621 // Destination array is not long enough to copy all the items
622 // in the collection. Check array index and length
623 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
624 Assert.IsNull (ex.InnerException, "#B3");
625 Assert.IsNotNull (ex.Message, "#B4");
626 Assert.IsNull (ex.ParamName, "#B5");
630 BitConverter.ToUInt64 (larger, 10);
632 } catch (ArgumentOutOfRangeException ex) {
633 // Index was out of range. Must be non-negative and less than
634 // the size of the collection
635 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
636 Assert.IsNull (ex.InnerException, "#C3");
637 Assert.IsNotNull (ex.Message, "#C4");
638 Assert.IsNotNull (ex.ParamName, "#C5");
639 Assert.AreEqual ("startIndex", ex.ParamName, "#C6");
644 public void TestUInt64 ()
646 PrivateTestUInt64 (0);
647 PrivateTestUInt64 (1000);
648 PrivateTestUInt64 (18446744073709551615);
652 public void ToUInt64_Value_Null ()
655 BitConverter.ToUInt64 ((byte []) null, 77);
657 } catch (ArgumentNullException ex) {
658 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
659 Assert.IsNull (ex.InnerException, "#3");
660 Assert.IsNotNull (ex.Message, "#4");
661 Assert.IsNotNull (ex.ParamName, "#5");
662 Assert.AreEqual ("value", ex.ParamName, "#6");
667 public void TestToString ()
669 byte [] b = new byte [] { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff };
671 Assert.AreEqual ("00-11-22-33-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF", BitConverter.ToString (b), "#A1");
672 Assert.AreEqual ("66-77-88-99-AA-BB-CC-DD-EE-FF", BitConverter.ToString (b, 6), "#A2");
673 Assert.AreEqual ("66-77-88", BitConverter.ToString (b, 6, 3), "#A3");
674 Assert.AreEqual (string.Empty, BitConverter.ToString (b, 6, 0), "#A4");
677 BitConverter.ToString (b, 20);
679 } catch (ArgumentOutOfRangeException ex) {
680 // StartIndex cannot be less than zero
681 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
682 Assert.IsNull (ex.InnerException, "#B3");
683 Assert.IsNotNull (ex.Message, "#B4");
684 Assert.IsNotNull (ex.ParamName, "#B5");
685 Assert.AreEqual ("startIndex", ex.ParamName, "#B6");
689 BitConverter.ToString (b, 20, 3);
691 } catch (ArgumentOutOfRangeException ex) {
692 // StartIndex cannot be less than zero
693 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
694 Assert.IsNull (ex.InnerException, "#C3");
695 Assert.IsNotNull (ex.Message, "#C4");
696 Assert.IsNotNull (ex.ParamName, "#C5");
697 Assert.AreEqual ("startIndex", ex.ParamName, "#C6");
701 BitConverter.ToString (b, 16, 0);
703 } catch (ArgumentOutOfRangeException ex) {
704 // StartIndex cannot be less than zero
705 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#D2");
706 Assert.IsNull (ex.InnerException, "#D3");
707 Assert.IsNotNull (ex.Message, "#D4");
708 Assert.IsNotNull (ex.ParamName, "#D5");
709 Assert.AreEqual ("startIndex", ex.ParamName, "#D6");
714 public void ToString_Value_Empty ()
716 byte [] empty = new byte [0];
717 Assert.AreEqual (String.Empty, BitConverter.ToString (empty), "#A1");
720 BitConverter.ToString (empty, 3);
722 } catch (ArgumentOutOfRangeException ex) {
723 // StartIndex cannot be less than zero
724 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
725 Assert.IsNull (ex.InnerException, "#B3");
726 Assert.IsNotNull (ex.Message, "#B4");
727 Assert.IsNotNull (ex.ParamName, "#B5");
728 Assert.AreEqual ("startIndex", ex.ParamName, "#B6");
731 Assert.AreEqual (String.Empty, BitConverter.ToString (empty, 0), "#C1");
734 BitConverter.ToString (empty, 3, 0);
736 } catch (ArgumentOutOfRangeException ex) {
737 // StartIndex cannot be less than zero
738 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#D2");
739 Assert.IsNull (ex.InnerException, "#D3");
740 Assert.IsNotNull (ex.Message, "#D4");
741 Assert.IsNotNull (ex.ParamName, "#D5");
742 Assert.AreEqual ("startIndex", ex.ParamName, "#D6");
745 Assert.AreEqual (string.Empty, BitConverter.ToString (empty, 0, 0), "#E1");
748 BitConverter.ToString (empty, 3, -1);
750 } catch (ArgumentOutOfRangeException ex) {
751 // StartIndex cannot be less than zero
752 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#F2");
753 Assert.IsNull (ex.InnerException, "#F3");
754 Assert.IsNotNull (ex.Message, "#F4");
755 Assert.IsNotNull (ex.ParamName, "#F5");
756 Assert.AreEqual ("startIndex", ex.ParamName, "#F6");
761 public void ToString_Value_Null ()
764 BitConverter.ToString ((byte []) null);
766 } catch (ArgumentNullException ex) {
767 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
768 Assert.IsNull (ex.InnerException, "#A3");
769 Assert.IsNotNull (ex.Message, "#A4");
770 Assert.IsNotNull (ex.ParamName, "#A5");
771 Assert.AreEqual ("value", ex.ParamName, "#A6");
775 BitConverter.ToString ((byte []) null, 20);
777 } catch (ArgumentNullException ex) {
778 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
779 Assert.IsNull (ex.InnerException, "#B3");
780 Assert.IsNotNull (ex.Message, "#B4");
781 Assert.IsNotNull (ex.ParamName, "#B5");
782 Assert.AreEqual ("value", ex.ParamName, "#B6");
786 BitConverter.ToString ((byte []) null, 20, 3);
788 } catch (ArgumentNullException ex) {
789 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#C2");
790 Assert.IsNull (ex.InnerException, "#C3");
791 Assert.IsNotNull (ex.Message, "#C4");
792 Assert.IsNotNull (ex.ParamName, "#C5");
793 Assert.AreEqual ("value", ex.ParamName, "#C6");
798 public void ToString_StartIndex_Negative ()
801 BitConverter.ToString (new byte [0], -1);
803 } catch (ArgumentOutOfRangeException ex) {
804 // StartIndex cannot be less than zero
805 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
806 Assert.IsNull (ex.InnerException, "#A3");
807 Assert.IsNotNull (ex.Message, "#A4");
808 Assert.IsNotNull (ex.ParamName, "#A5");
809 Assert.AreEqual ("startIndex", ex.ParamName, "#A6");
813 BitConverter.ToString (new byte [4], -1, 1);
815 } catch (ArgumentOutOfRangeException ex) {
816 // StartIndex cannot be less than zero
817 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
818 Assert.IsNull (ex.InnerException, "#B3");
819 Assert.IsNotNull (ex.Message, "#B4");
820 Assert.IsNotNull (ex.ParamName, "#B5");
821 Assert.AreEqual ("startIndex", ex.ParamName, "#B6");
826 public void ToString_StartIndex_Overflow ()
828 byte [] array = new byte [4];
830 BitConverter.ToString (array, Int32.MaxValue, 1);
832 } catch (ArgumentOutOfRangeException ex) {
833 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
834 Assert.IsNull (ex.InnerException, "#3");
835 Assert.IsNotNull (ex.Message, "#4");
836 Assert.IsNotNull (ex.ParamName, "#5");
837 Assert.AreEqual ("startIndex", ex.ParamName, "#6");
842 public void ToString_Length_Negative ()
844 byte [] array = new byte [4];
846 BitConverter.ToString (array, 1, -1);
848 } catch (ArgumentOutOfRangeException ex) {
849 // Value must be positive
850 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
851 Assert.IsNull (ex.InnerException, "#3");
852 Assert.IsNotNull (ex.Message, "#4");
853 Assert.IsNotNull (ex.ParamName, "#5");
854 Assert.AreEqual ("length", ex.ParamName, "#6");
859 public void ToString_Length_Overflow ()
861 byte [] array = new byte [4];
863 BitConverter.ToString (array, 1, Int32.MaxValue);
865 } catch (ArgumentException ex) {
866 // Destination array is not long enough to copy all the items
867 // in the collection. Check array index and length
868 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
869 Assert.IsNull (ex.InnerException, "#3");
870 Assert.IsNotNull (ex.Message, "#4");
871 Assert.IsNull (ex.ParamName, "#5");
876 public void ToInt32_UpperLimit ()
878 byte [] array = new byte [4];
880 BitConverter.ToInt32 (array, Int32.MaxValue);
882 } catch (ArgumentOutOfRangeException ex) {
883 // Index was out of range. Must be non-negative and less than
884 // the size of the collection
885 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
886 Assert.IsNull (ex.InnerException, "#3");
887 Assert.IsNotNull (ex.Message, "#4");
888 Assert.IsNotNull (ex.ParamName, "#5");
889 Assert.AreEqual ("startIndex", ex.ParamName, "#6");
894 public void ToInt32_LowerLimit ()
896 byte [] array = new byte [4];
898 BitConverter.ToInt32 (array, Int32.MinValue);
900 } catch (ArgumentOutOfRangeException ex) {
901 // Index was out of range. Must be non-negative and less than
902 // the size of the collection
903 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
904 Assert.IsNull (ex.InnerException, "#3");
905 Assert.IsNotNull (ex.Message, "#4");
906 Assert.IsNotNull (ex.ParamName, "#5");
907 Assert.AreEqual ("startIndex", ex.ParamName, "#6");
912 public void ToBoolean ()
914 byte [] array = new byte [2] { 0x02, 0x00 };
915 Assert.IsTrue (BitConverter.ToBoolean (array, 0), "#1");
916 Assert.IsFalse (BitConverter.ToBoolean (array, 1), "#2");