1 // BinaryReaderTest.cs - NUnit Test Cases for the SystemIO.BinaryReader class
3 // Eduardo Garcia Cebollero (kiwnix@yahoo.es)
5 // (C) Eduardo Garcia Cebollero.
6 // (C) Ximian, Inc. http://www.ximian.com
7 // Copyright (C) 2004 Novell (http://www.novell.com)
10 using NUnit.Framework;
15 namespace MonoTests.System.IO
18 public class BinaryReaderTest
20 static string TempFolder = Path.Combine (Path.GetTempPath (), "MonoTests.System.IO.Tests");
21 static string _codeFileName = TempFolder + Path.DirectorySeparatorChar + "AFile.txt";
25 if (!Directory.Exists (TempFolder))
26 Directory.CreateDirectory (TempFolder);
28 if (!File.Exists (_codeFileName))
29 File.Create (_codeFileName).Close ();
33 public void TearDown ()
35 if (Directory.Exists (TempFolder))
36 Directory.Delete (TempFolder, true);
40 [ExpectedException(typeof(ArgumentNullException))]
41 public void CtorArgumentNullException1 ()
43 BinaryReader r = null;
45 r = new BinaryReader ((Stream) null);
53 [ExpectedException(typeof(ArgumentNullException))]
54 public void CtorArgumentNullException2 ()
56 BinaryReader r = null;
58 r = new BinaryReader ((Stream) null, Encoding.ASCII);
66 [ExpectedException(typeof(ArgumentNullException))]
67 public void CtorArgumentNullException3 ()
69 BinaryReader r = null;
71 r = new BinaryReader ((Stream) null, Encoding.Unicode);
79 [ExpectedException(typeof(ArgumentNullException))]
80 public void CtorArgumentNullException4 ()
82 BinaryReader r = null;
84 r = new BinaryReader ((Stream) null, Encoding.UTF7);
92 [ExpectedException(typeof(ArgumentNullException))]
93 public void CtorArgumentNullException5 ()
95 BinaryReader r = null;
97 r = new BinaryReader ((Stream) null, Encoding.UTF8);
105 [ExpectedException(typeof(ArgumentNullException))]
106 public void CtorArgumentNullException6 ()
108 byte [] b = new byte [30];
109 MemoryStream m = new MemoryStream (b);
110 BinaryReader r = null;
112 r = new BinaryReader (m, (Encoding) null);
121 [ExpectedException(typeof(ArgumentException))]
122 public void CtorArgumentException ()
125 BinaryReader r = null;
127 f = new FileStream (_codeFileName, FileMode.Open, FileAccess.Write);
128 r = new BinaryReader (f);
141 BinaryReader r = null;
143 f = new FileStream (_codeFileName,
146 r = new BinaryReader (f);
147 Assert.IsNotNull (r, "#03 no binary reader created");
156 //TODO: (TestCtor*) Verify the Use of a wrong Stream
157 //TODO: (TestClose*) Verify the Close Method
159 public void Close1 ()
161 byte [] b = new byte [30];
162 MemoryStream m = new MemoryStream (b);
163 BinaryReader r = null;
165 r = new BinaryReader (m);
172 //TODO: (TestRead*) Verify Read Method
174 public void TestReadBoolean ()
176 bool [] a = {true, true, false};
177 byte [] arr_a = new byte [3];
179 foreach (bool a1 in a) {
180 arr_a [i] = Convert.ToByte (a1);
185 MemoryStream m = new MemoryStream (arr_a);
186 BinaryReader r = null;
188 r = new BinaryReader (m);
189 b = r.ReadBoolean ();
190 Assert.AreEqual (a [0], b, "#11 No well readed boolean: ");
199 public void TestReadByte ()
201 byte [] a = {0, 2, 3, 1, 5, 2};
203 MemoryStream m = new MemoryStream (a);
204 BinaryReader r = null;
206 r = new BinaryReader (m);
208 Assert.AreEqual (a [0], b, "#13 No well readed byte: ");
217 public void TestReadChar()
219 char [] a = {'a','b','c','d','e'};
220 byte [] arr_a = new byte [5];
224 foreach (char a1 in a) {
225 arr_a [i] = Convert.ToByte (a1);
229 MemoryStream m = null;
230 BinaryReader r = null;
232 m = new MemoryStream (arr_a);
233 r = new BinaryReader (m);
235 Assert.AreEqual (a [0], c, "#15 No well readed Char");
243 public void TestReadInt32 () //Uses BinaryWriter!!
245 int [] arr_int = {1,10,200,3000,40000,500000,6000000};
246 byte [] arr_byte = new byte [28]; //Sizeof arr_int * 4
247 int [] arr_int2 = new int [7];
250 MemoryStream mem_stream = null;
251 BinaryWriter bin_writer = null;
253 mem_stream = new MemoryStream (arr_byte);
254 bin_writer = new BinaryWriter (mem_stream);
255 foreach (int elem in arr_int) {
256 bin_writer.Write(elem);
259 mem_stream.Seek(0,SeekOrigin.Begin);
260 BinaryReader bin_reader = new BinaryReader (mem_stream);
261 bin_reader.BaseStream.Seek(0,SeekOrigin.Begin);
265 arr_int2 [i] = bin_reader.ReadInt32();
266 Assert.AreEqual (arr_int [i], arr_int2 [i], "#2E Wrong Readed Int32 in iteration "+ i);
267 } catch (IOException e) {
268 Assert.Fail ("#2F Unexpected IO Exception" + e.ToString());
278 //-TODO: (TestRead[Type]*) Verify the ReadBoolean, ReadByte ....
279 // ReadBoolean, ReadByte, ReadChar, ReadInt32 Done
281 //TODO: (TestFillBuffer*) Verify the FillBuffer Method
283 public void TestPeekChar ()
286 char [] b = {'A', 'B', 'C'};
287 byte [] arr_b = new byte [3];
290 foreach (char b1 in b) {
291 arr_b [i] = Convert.ToByte (b1);
295 MemoryStream m = null;
296 BinaryReader r = null;
299 m = new MemoryStream (arr_b);
300 r = new BinaryReader (m);
301 char1 = (char) r.PeekChar ();
302 char2 = (char) r.PeekChar ();
303 Assert.AreEqual (char1, char2, "#20 the stream pointer have been altered in peek");
311 public void TestBaseSeek1 ()
314 char [] b = {'A','B','C','D','E','F'};
315 byte [] arr_b = new byte[6];
317 foreach (char b1 in b) {
318 arr_b [i] = Convert.ToByte (b1);
322 MemoryStream m = null;
323 BinaryReader r = null;
325 m = new MemoryStream (arr_b);
326 r = new BinaryReader (m);
327 char1 = (char) r.PeekChar ();
328 r.BaseStream.Seek (0,SeekOrigin.Current);
329 char2 = (char) r.PeekChar ();
330 Assert.AreEqual (char1, char2, "#22 the stream Has been altered in Seek");
338 public void TestBaseSeek2 ()
341 char [] b = {'A','B','C','D','E','F'};
342 byte [] arr_b = new byte[6];
344 foreach (char b1 in b) {
345 arr_b [i] = Convert.ToByte (b1);
349 MemoryStream m = null;
350 BinaryReader r = null;
352 m = new MemoryStream (arr_b);
353 r = new BinaryReader (m);
354 char1 = (char) r.PeekChar ();
355 r.BaseStream.Seek (3,SeekOrigin.Current);
356 r.BaseStream.Seek (-3,SeekOrigin.Current);
357 char2 = (char) r.PeekChar ();
358 Assert.AreEqual (char1, char2, "#24 the stream Has been altered in Seek");
366 public void TestInterleavedSeek1 ()
369 byte [] arr_byte = {0,1,2,3,4,5,6,7,8,9};
371 MemoryStream m = null;
372 BinaryReader r = null;
375 m = new MemoryStream (arr_byte);
376 r = new BinaryReader (m);
380 Assert.AreEqual (int1, arr_byte[0], "#26 Not well readed Byte");
381 } catch (Exception e) {
382 Assert.Fail ("#27 Unexpected exception thrown: " + e.ToString ());
387 r.BaseStream.Seek(-1,SeekOrigin.End);
389 Assert.AreEqual (int1, arr_byte[9], "#28 Not well readed Byte");
390 } catch (Exception e) {
391 Assert.Fail ("#29 Unexpected exception thrown: " + e.ToString ());
396 r.BaseStream.Seek(3,SeekOrigin.Begin);
398 Assert.AreEqual (int1, arr_byte[3], "#2A Not well readed Byte");
399 } catch (Exception e) {
400 Assert.Fail ("#2B Unexpected exception thrown: " + e.ToString ());
405 r.BaseStream.Seek(2,SeekOrigin.Current);
407 Assert.AreEqual (int1, arr_byte [6], "#2C Not well readed Int32");
408 } catch (Exception e) {
409 Assert.Fail ("#2D Unexpected exception thrown: " + e.ToString ());
420 /// Throws an exception if stream is null
423 [ExpectedException(typeof(ArgumentNullException))]
424 public void CtorNullExceptionStream ()
426 BinaryReader reader = null;
428 reader = new BinaryReader (null);
436 /// Throws an exception if encoding is null
439 [ExpectedException(typeof(ArgumentNullException))]
440 public void CtorNullExceptionEncoding ()
442 MemoryStream stream = null;
443 BinaryReader reader = null;
446 stream = new MemoryStream (64);
447 reader = new BinaryReader (stream, null);
457 /// Throws an exception if stream does not support writing
460 [ExpectedException(typeof(ArgumentException))]
461 public void CtorArgumentExceptionCannotWrite ()
463 string path = TempFolder + "/BinaryReaderTestFile.1";
465 FileStream file = null;
466 BinaryReader breader = null;
469 file = new FileStream (path, FileMode.CreateNew, FileAccess.Read);
470 breader = new BinaryReader (file);
481 /// Throws an exception if stream is already closed
484 [ExpectedException(typeof(ArgumentException))]
485 public void CtorArgumentExceptionClosedStream ()
487 string path = TempFolder + "/BinaryReaderTestFile.2";
489 FileStream file = null;
490 BinaryReader breader = null;
492 file = new FileStream (path, FileMode.CreateNew, FileAccess.Write);
494 breader = new BinaryReader (file);
507 /// Throws an exception if stream is closed
510 [ExpectedException(typeof(ArgumentException))]
511 public void CtorArgumentExceptionEncoding ()
513 MemoryStream stream = null;
514 BinaryReader reader = null;
517 stream = new MemoryStream (64);
520 reader = new BinaryReader (stream, new ASCIIEncoding ());
531 /// Tests read () method
536 byte [] bytes = new byte [] {0, 1, 2, 3};
537 MemoryStream stream = null;
538 BinaryReader reader = null;
541 stream = new MemoryStream (bytes);
542 reader = new BinaryReader (stream);
544 Assert.AreEqual (0, reader.Read (), "test#01");
545 Assert.AreEqual (1, reader.Read (), "test#02");
546 Assert.AreEqual (2, reader.Read (), "test#03");
547 Assert.AreEqual (3, reader.Read (), "test#04");
548 Assert.AreEqual (-1, reader.Read (), "test#05");
556 [ExpectedException (typeof (ArgumentNullException))]
557 public void Read_Bytes_BufferNull ()
560 new BinaryReader (new MemoryStream ()).Read (b, 0, 1);
564 [ExpectedException (typeof (ArgumentOutOfRangeException))]
565 public void Read_Bytes_IndexNegative ()
567 byte[] array = new byte [8];
568 new BinaryReader (new MemoryStream ()).Read (array, -1, array.Length);
572 [ExpectedException (typeof (ArgumentException))]
573 public void Read_Bytes_IndexOverflow ()
575 byte[] array = new byte [8];
576 new BinaryReader (new MemoryStream ()).Read (array, Int32.MaxValue, array.Length);
580 [ExpectedException (typeof (ArgumentOutOfRangeException))]
581 public void Read_Bytes_CountNegative ()
583 byte[] array = new byte [8];
584 new BinaryReader (new MemoryStream ()).Read (array, 0, -1);
588 [ExpectedException (typeof (ArgumentException))]
589 public void Read_Bytes_CountOverflow ()
591 byte[] array = new byte [8];
592 new BinaryReader (new MemoryStream ()).Read (array, 0, Int32.MaxValue);
596 [ExpectedException (typeof (ArgumentNullException))]
597 public void Read_Chars_BufferNull ()
600 new BinaryReader (new MemoryStream ()).Read (c, 0, 1);
604 [ExpectedException (typeof (ArgumentOutOfRangeException))]
605 public void Read_Chars_IndexNegative ()
607 char[] array = new char [8];
608 new BinaryReader (new MemoryStream ()).Read (array, -1, array.Length);
612 [ExpectedException (typeof (ArgumentException))]
613 public void Read_Chars_IndexOverflow ()
615 char[] array = new char [8];
616 new BinaryReader (new MemoryStream ()).Read (array, Int32.MaxValue, array.Length);
620 [ExpectedException (typeof (ArgumentOutOfRangeException))]
621 public void Read_Chars_CountNegative ()
623 char[] array = new char [8];
624 new BinaryReader (new MemoryStream ()).Read (array, 0, -1);
628 [ExpectedException (typeof (ArgumentException))]
629 public void Read_Chars_CountOverflow ()
631 char[] array = new char [8];
632 new BinaryReader (new MemoryStream ()).Read (array, 0, Int32.MaxValue);
636 public void PeakChar ()
638 byte [] bytes = new byte [] {0, 1, 2, 3};
639 MemoryStream stream = null;
640 BinaryReader reader = null;
643 stream = new MemoryStream (bytes);
644 reader = new BinaryReader (stream);
646 Assert.AreEqual (0, reader.PeekChar (), "test#01");
647 Assert.AreEqual (0, reader.PeekChar (), "test#02");
648 Assert.AreEqual (0, reader.Read (), "test#03");
649 Assert.AreEqual (1, reader.Read (), "test#03");
650 Assert.AreEqual (2, reader.PeekChar (), "test#03");
658 [ExpectedException(typeof(ObjectDisposedException))]
659 public void CloseRead ()
661 byte [] bytes = new byte [] {0, 1, 2, 3};
662 MemoryStream stream = null;
663 BinaryReader reader = null;
666 stream = new MemoryStream (bytes);
667 reader = new BinaryReader (stream);
677 [ExpectedException(typeof(ObjectDisposedException))]
678 public void ClosePeakChar ()
680 byte [] bytes = new byte [] {0, 1, 2, 3};
681 MemoryStream stream = null;
682 BinaryReader reader = null;
685 stream = new MemoryStream (bytes);
686 reader = new BinaryReader (stream);
696 [ExpectedException(typeof(ObjectDisposedException))]
697 public void CloseReadBytes ()
699 byte [] bytes = new byte [] {0, 1, 2, 3};
700 MemoryStream stream = null;
701 BinaryReader reader = null;
704 stream = new MemoryStream (bytes);
705 reader = new BinaryReader (stream);
707 reader.ReadBytes (1);
715 public void BaseStream ()
717 byte [] bytes = new byte [] {0, 1, 2, 3};
718 MemoryStream stream = null;
719 BinaryReader reader = null;
722 stream = new MemoryStream (bytes);
723 reader = new BinaryReader (stream);
725 Assert.AreEqual (4, reader.BaseStream.Length, "test#01");
726 Assert.AreEqual (true, reader.BaseStream.CanRead, "test#02");
728 Assert.AreEqual (null, reader.BaseStream, "test#03");
737 /// Tests read (byte [], int, int) method
740 public void ReadByteArray ()
742 byte [] bytes = new byte [] {0, 1, 2, 3, 4, 5};
743 MemoryStream stream = null;
744 BinaryReader reader = null;
747 stream = new MemoryStream (bytes);
748 reader = new BinaryReader (stream);
750 bytes = new byte [3];
751 reader.Read (bytes, 0, 3);
752 Assert.AreEqual (0, bytes [0], "test#01");
753 Assert.AreEqual (1, bytes [1], "test#02");
754 Assert.AreEqual (2, bytes [2], "test#03");
756 bytes = new byte [6];
757 reader.Read (bytes, 3, 3);
758 Assert.AreEqual (0, bytes [0], "test#04");
759 Assert.AreEqual (0, bytes [1], "test#05");
760 Assert.AreEqual (0, bytes [2], "test#06");
761 Assert.AreEqual (3, bytes [3], "test#07");
762 Assert.AreEqual (4, bytes [4], "test#08");
763 Assert.AreEqual (5, bytes [5], "test#09");
765 bytes = new byte [2];
766 reader.Read (bytes, 0, 2);
767 Assert.AreEqual (0, bytes [0], "test#10");
768 Assert.AreEqual (0, bytes [1], "test#11");
776 /// Test Read (char [], int, int)
779 public void ReadCharArray ()
782 MemoryStream stream = null;
783 BinaryReader reader = null;
785 stream = new MemoryStream (new byte [] {109, 111, 110, 111, 58, 58});
786 reader = new BinaryReader (stream);
787 char [] chars = new char [3];
788 reader.Read (chars, 0, 3);
789 Assert.AreEqual ('m', chars [0], "test#01");
790 Assert.AreEqual ('o', chars [1], "test#02");
791 Assert.AreEqual ('n', chars [2], "test#03");
793 chars = new char [6];
794 reader.Read (chars, 3, 3);
795 Assert.AreEqual (0, chars [0], "test#04");
796 Assert.AreEqual (0, chars [1], "test#05");
797 Assert.AreEqual (0, chars [2], "test#06");
798 Assert.AreEqual ('o', chars [3], "test#07");
799 Assert.AreEqual (':', chars [4], "test#08");
800 Assert.AreEqual (':', chars [5], "test#09");
802 chars = new char [2];
803 reader.Read (chars, 0, 2);
804 Assert.AreEqual (0, chars [0], "test#08");
805 Assert.AreEqual (0, chars [1], "test#09");
814 /// Test ReadBoolean () method.
817 public void ReadBoolean ()
819 MemoryStream stream = null;
820 BinaryReader reader = null;
822 stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
823 reader = new BinaryReader (stream);
824 Assert.AreEqual (false, reader.ReadBoolean (), "test#01");
825 Assert.AreEqual (true, reader.ReadBoolean (), "test#02");
826 Assert.AreEqual (true, reader.ReadBoolean (), "test#03");
827 Assert.AreEqual (false, reader.ReadBoolean (), "test#04");
828 Assert.AreEqual (true, reader.ReadBoolean (), "test#05");
836 /// Test ReadBoolean () method exceptions.
839 [ExpectedException(typeof(EndOfStreamException))]
840 public void ReadBooleanException ()
842 MemoryStream stream = null;
843 BinaryReader reader = null;
845 stream = new MemoryStream (new byte [] {0, 1});
846 reader = new BinaryReader (stream);
847 reader.ReadBoolean ();
848 reader.ReadBoolean ();
849 reader.ReadBoolean ();
857 /// Test ReadByte () method.
860 public void ReadByte ()
862 MemoryStream stream = null;
863 BinaryReader reader = null;
866 stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
867 reader = new BinaryReader (stream);
869 Assert.AreEqual (0, reader.ReadByte (), "test#01");
870 Assert.AreEqual (1, reader.ReadByte (), "test#02");
871 Assert.AreEqual (99, reader.ReadByte (), "test#03");
872 Assert.AreEqual (0, reader.ReadByte (), "test#04");
873 Assert.AreEqual (13, reader.ReadByte (), "test#05");
881 /// Test ReadByte () method exceptions.
884 [ExpectedException(typeof(EndOfStreamException))]
885 public void ReadByteException ()
887 MemoryStream stream = null;
888 BinaryReader reader = null;
891 stream = new MemoryStream (new byte [] {0, 1});
892 reader = new BinaryReader (stream);
903 /// Test ReadBytes (int) method.
906 public void ReadBytes ()
908 MemoryStream stream = null;
909 BinaryReader reader = null;
912 stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
913 reader = new BinaryReader (stream);
915 byte [] bytes = reader.ReadBytes (2);
916 Assert.AreEqual (0, bytes [0], "test#01");
917 Assert.AreEqual (1, bytes [1], "test#02");
919 bytes = reader.ReadBytes (2);
920 Assert.AreEqual (99, bytes [0], "test#03");
921 Assert.AreEqual (0, bytes [1], "test#04");
923 bytes = reader.ReadBytes (2);
924 Assert.AreEqual (13, bytes [0], "test#05");
925 Assert.AreEqual (1, bytes.Length, "test#06");
934 /// Test ReadBytes (int) method exception.
937 [ExpectedException(typeof(ArgumentOutOfRangeException))]
938 public void ReadBytesException ()
940 MemoryStream stream = null;
941 BinaryReader reader = null;
944 stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
945 reader = new BinaryReader (stream);
946 reader.ReadBytes (-1);
954 /// Test ReadChar () method.
957 public void ReadChar ()
959 MemoryStream stream = null;
960 BinaryReader reader = null;
962 stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
963 reader = new BinaryReader (stream);
965 Assert.AreEqual (0, reader.ReadChar (), "test#01");
966 Assert.AreEqual (1, reader.ReadChar (), "test#02");
967 Assert.AreEqual (99, reader.ReadChar (), "test#03");
968 Assert.AreEqual (0, reader.ReadChar (), "test#04");
969 Assert.AreEqual (13, reader.ReadChar (), "test#05");
977 /// Test ReadChar () method exception.
980 [ExpectedException(typeof(EndOfStreamException))]
981 public void ReadCharException ()
983 MemoryStream stream = null;
984 BinaryReader reader = null;
987 stream = new MemoryStream (new byte [] {0, 1});
988 reader = new BinaryReader (stream);
999 /// Test ReadChars (int) method.
1002 public void ReadChars ()
1004 MemoryStream stream = null;
1005 BinaryReader reader = null;
1007 stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
1008 reader = new BinaryReader (stream);
1009 char [] chars = reader.ReadChars (2);
1010 Assert.AreEqual (0, chars [0], "test#01");
1011 Assert.AreEqual (1, chars [1], "test#02");
1013 chars = reader.ReadChars (2);
1014 Assert.AreEqual (99, chars [0], "test#03");
1015 Assert.AreEqual (0, chars [1], "test#04");
1017 chars = reader.ReadChars (2);
1018 Assert.AreEqual (13, chars [0], "test#05");
1019 Assert.AreEqual (1, chars.Length, "test#06");
1027 /// Test ReadChars (int value) exceptions. If value is negative exception is thrown
1030 [ExpectedException(typeof(ArgumentOutOfRangeException))]
1031 public void ReadCharsException ()
1033 MemoryStream stream = null;
1034 BinaryReader reader = null;
1036 stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
1037 reader = new BinaryReader (stream);
1038 reader.ReadChars (-1);
1047 /// Test ReadDecimal () method.
1050 public void ReadDecimal ()
1052 MemoryStream stream = null;
1053 BinaryReader reader = null;
1055 stream = new MemoryStream (new byte [] {0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0 ,128, 0, 0, 0, 0, 0});
1056 reader = new BinaryReader (stream);
1057 Assert.AreEqual (-18295873486192640, reader.ReadDecimal (), "test#01");
1065 [ExpectedException(typeof(EndOfStreamException))]
1066 public void ReadDecimalException ()
1068 MemoryStream stream = new MemoryStream (new byte [] {0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0 ,87, 98, 0, 0, 0, 0, 0});
1069 BinaryReader reader = new BinaryReader (stream);
1071 reader.ReadDecimal ();
1072 reader.ReadDecimal ();
1080 public void ReadDouble ()
1082 MemoryStream stream = new MemoryStream (new byte [] {0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0 ,87, 98, 0, 0, 0, 0});
1083 BinaryReader reader = new BinaryReader (stream);
1085 Assert.AreEqual (1.8913127797311212E-307d, reader.ReadDouble (), "test#01");
1086 Assert.AreEqual (1.2024538023802026E+111d, reader.ReadDouble (), "test#02");
1094 [ExpectedException(typeof(EndOfStreamException))]
1095 public void ReadDoubleException ()
1097 MemoryStream stream = new MemoryStream (new byte [] {0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0 ,87, 98, 0, 0, 0, 0});
1098 BinaryReader reader = new BinaryReader (stream);
1100 reader.ReadDouble ();
1101 reader.ReadDouble ();
1102 reader.ReadDouble ();
1110 public void ReadInt16 ()
1112 MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0});
1113 BinaryReader reader = new BinaryReader (stream);
1115 Assert.AreEqual (321, reader.ReadInt16 (), "test#01");
1116 Assert.AreEqual (11040, reader.ReadInt16 (), "test#02");
1117 Assert.AreEqual (773, reader.ReadInt16 (), "test#03");
1118 Assert.AreEqual (54, reader.ReadInt16 (), "test#04");
1126 [ExpectedException(typeof(EndOfStreamException))]
1127 public void ReadInt16Exception ()
1129 MemoryStream stream = new MemoryStream (new byte [] {65, 1});
1130 BinaryReader reader = new BinaryReader (stream);
1132 reader.ReadInt16 ();
1133 reader.ReadInt16 ();
1141 public void ReadInt32 ()
1143 MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0});
1144 BinaryReader reader = new BinaryReader (stream);
1146 Assert.AreEqual (723517761, reader.ReadInt32 (), "test#01");
1147 Assert.AreEqual (3539717, reader.ReadInt32 (), "test#02");
1155 [ExpectedException(typeof(EndOfStreamException))]
1156 public void ReadInt32Exception ()
1158 MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43});
1159 BinaryReader reader = new BinaryReader (stream);
1161 reader.ReadInt32 ();
1162 reader.ReadInt32 ();
1170 public void ReadInt64 ()
1172 MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0, 34, 5, 7, 4, 23, 4, 76, 34, 76, 2, 6,45});
1173 BinaryReader reader = new BinaryReader (stream);
1175 Assert.AreEqual (15202969475612993, reader.ReadInt64 (), "test#01");
1176 Assert.AreEqual (2471354792417887522, reader.ReadInt64 (), "test#02");
1184 [ExpectedException(typeof(EndOfStreamException))]
1185 public void ReadInt64Exception ()
1187 MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0, 34, 5, 7, 4, 23, 4, 76, 34, 76, 2, 6,45});
1188 BinaryReader reader = new BinaryReader (stream);
1191 reader.ReadInt64 ();
1192 reader.ReadInt64 ();
1193 reader.ReadInt64 ();
1201 public void ReadSByte ()
1203 MemoryStream stream = new MemoryStream (new byte [] {65, 200, 32});
1204 BinaryReader reader = new BinaryReader (stream);
1207 Assert.AreEqual (65, reader.ReadSByte (), "test#01");
1208 Assert.AreEqual (-56, reader.ReadSByte (), "test#02");
1209 Assert.AreEqual (32, reader.ReadSByte (), "test#03");
1217 [ExpectedException(typeof(EndOfStreamException))]
1218 public void ReadSByteException ()
1220 MemoryStream stream = new MemoryStream (new byte [] {65, 200});
1221 BinaryReader reader = new BinaryReader (stream);
1224 reader.ReadSByte ();
1225 reader.ReadSByte ();
1226 reader.ReadSByte ();
1234 public void ReadSingle ()
1236 MemoryStream stream = new MemoryStream (new byte [] {65, 200, 0, 0, 0, 1, 2, 3, 4});
1237 BinaryReader reader = new BinaryReader (stream);
1239 Assert.AreEqual (7.18375658E-41F, reader.ReadSingle (), "test#01");
1240 Assert.AreEqual (3.82047143E-37F, reader.ReadSingle (), "test#02");
1248 [ExpectedException(typeof(EndOfStreamException))]
1249 public void ReadSingleException ()
1251 MemoryStream stream = new MemoryStream (new byte [] {65, 200, 0, 0, 0, 1, 2, 3, 4});
1252 BinaryReader reader = new BinaryReader (stream);
1254 reader.ReadSingle ();
1255 reader.ReadSingle ();
1256 reader.ReadSingle ();
1264 public void ReadString ()
1266 MemoryStream stream = null;
1267 BinaryReader reader = null;
1269 stream = new MemoryStream (new byte [] {6,109, 111, 110, 111, 58, 58});
1270 reader = new BinaryReader (stream);
1271 Assert.AreEqual ("mono::", reader.ReadString (), "test#01");
1273 stream = new MemoryStream (new byte [] {2,109, 111, 3, 111, 58, 58});
1274 reader = new BinaryReader (stream);
1275 Assert.AreEqual ("mo", reader.ReadString (), "test#02");
1276 Assert.AreEqual ("o::", reader.ReadString (), "test#03");
1284 public void ReadLongUTF8String ()
1287 string s = new String ('\u00A9', 100);
1288 MemoryStream ms = new MemoryStream ();
1289 BinaryWriter w = new BinaryWriter (ms);
1293 BinaryReader r = new BinaryReader (ms);
1294 Assert.AreEqual (s, r.ReadString ());
1298 [ExpectedException(typeof(EndOfStreamException))]
1299 public void ReadStringException ()
1301 MemoryStream stream = new MemoryStream (new byte [] {2,109, 111, 3, 111, 58, 58});
1302 BinaryReader reader = new BinaryReader (stream);
1305 reader.ReadString ();
1306 reader.ReadString ();
1307 reader.ReadString ();
1315 [ExpectedException (typeof (FormatException))]
1316 public void ReadStringInvalidLength ()
1320 byte[] x = new byte[count];
1322 for (int i = 0; i < count; i++)
1325 BinaryReader reader = new BinaryReader (new MemoryStream (x));
1326 reader.ReadString ();
1330 public void ReadUInt16 ()
1332 MemoryStream stream = new MemoryStream (new byte [] {200, 200, 32, 43, 5, 3, 54, 0});
1333 BinaryReader reader = new BinaryReader (stream);
1336 Assert.AreEqual (51400, reader.ReadUInt16 (), "test#01");
1337 Assert.AreEqual (11040, reader.ReadUInt16 (), "test#02");
1338 Assert.AreEqual (773, reader.ReadUInt16 (), "test#03");
1339 Assert.AreEqual (54, reader.ReadUInt16 (), "test#04");
1347 [ExpectedException(typeof(EndOfStreamException))]
1348 public void ReadUInt16Exception ()
1350 MemoryStream stream = new MemoryStream (new byte [] {65, 1});
1351 BinaryReader reader = new BinaryReader (stream);
1353 reader.ReadUInt16 ();
1354 reader.ReadUInt16 ();
1362 public void ReadUInt32 ()
1364 MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0});
1365 BinaryReader reader = new BinaryReader (stream);
1367 Assert.AreEqual (723517761, reader.ReadUInt32 (), "test#01");
1368 Assert.AreEqual (3539717, reader.ReadUInt32 (), "test#02");
1376 [ExpectedException(typeof(EndOfStreamException))]
1377 public void ReadUInt32Exception ()
1379 MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43});
1380 BinaryReader reader = new BinaryReader (stream);
1383 reader.ReadUInt32 ();
1384 reader.ReadUInt32 ();
1392 public void ReadUInt64 ()
1394 MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0, 34, 5, 7, 4, 23, 4, 76, 34, 76, 2, 6,45});
1395 BinaryReader reader = new BinaryReader (stream);
1398 Assert.AreEqual (15202969475612993, reader.ReadUInt64 (), "test#01");
1399 Assert.AreEqual (2471354792417887522, reader.ReadUInt64 (), "test#02");
1407 public void Test_ReadZeroBytes ()
1409 MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0, 34, 5, 7, 4, 23, 4, 76, 34, 76, 2, 6,45});
1410 BinaryReader reader = new BinaryReader (stream);
1412 char [] result = reader.ReadChars (0);
1413 Assert.AreEqual (result.Length, 0, "ZERO_1");
1417 [ExpectedException(typeof(EndOfStreamException))]
1418 public void ReadUInt64Exception ()
1420 MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0, 34, 5, 7, 4, 23, 4, 76, 34, 76, 2, 6,45});
1421 BinaryReader reader = new BinaryReader (stream);
1424 reader.ReadUInt64 ();
1425 reader.ReadUInt64 ();
1426 reader.ReadUInt64 ();
1433 private void DeleteFile (string path)
1435 if (File.Exists (path))