BinaryReaderTest.cs 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319
  1. // BinaryReaderTest.cs - NUnit Test Cases for the SystemIO.BinaryReader class
  2. //
  3. // Eduardo Garcia Cebollero ([email protected])
  4. //
  5. // (C) Eduardo Garcia Cebollero.
  6. // (C) Ximian, Inc. http://www.ximian.com
  7. //
  8. using NUnit.Framework;
  9. using System;
  10. using System.IO;
  11. using System.Text;
  12. namespace MonoTests.System.IO
  13. {
  14. [TestFixture]
  15. public class BinaryReaderTest : Assertion
  16. {
  17. static string TempFolder = Path.Combine (Path.GetTempPath (), "MonoTests.System.IO.Tests");
  18. static string _codeFileName = TempFolder + Path.DirectorySeparatorChar + "AFile.txt";
  19. [SetUp]
  20. public void SetUp() {
  21. if (!Directory.Exists (TempFolder))
  22. Directory.CreateDirectory (TempFolder);
  23. if (!File.Exists (_codeFileName))
  24. File.Create (_codeFileName).Close ();
  25. }
  26. [TearDown]
  27. public void TearDown ()
  28. {
  29. if (Directory.Exists (TempFolder))
  30. Directory.Delete (TempFolder, true);
  31. }
  32. [Test]
  33. [ExpectedException(typeof(ArgumentNullException))]
  34. public void CtorArgumentNullException1 ()
  35. {
  36. BinaryReader r = null;
  37. try {
  38. r = new BinaryReader ((Stream) null);
  39. } finally {
  40. if (r != null)
  41. r.Close ();
  42. }
  43. }
  44. [Test]
  45. [ExpectedException(typeof(ArgumentNullException))]
  46. public void CtorArgumentNullException2 ()
  47. {
  48. BinaryReader r = null;
  49. try {
  50. r = new BinaryReader ((Stream) null, Encoding.ASCII);
  51. } finally {
  52. if (r != null)
  53. r.Close ();
  54. }
  55. }
  56. [Test]
  57. [ExpectedException(typeof(ArgumentNullException))]
  58. public void CtorArgumentNullException3 ()
  59. {
  60. BinaryReader r = null;
  61. try {
  62. r = new BinaryReader ((Stream) null, Encoding.Unicode);
  63. } finally {
  64. if (r != null)
  65. r.Close ();
  66. }
  67. }
  68. [Test]
  69. [ExpectedException(typeof(ArgumentNullException))]
  70. public void CtorArgumentNullException4 ()
  71. {
  72. BinaryReader r = null;
  73. try {
  74. r = new BinaryReader ((Stream) null, Encoding.UTF7);
  75. } finally {
  76. if (r != null)
  77. r.Close ();
  78. }
  79. }
  80. [Test]
  81. [ExpectedException(typeof(ArgumentNullException))]
  82. public void CtorArgumentNullException5 ()
  83. {
  84. BinaryReader r = null;
  85. try {
  86. r = new BinaryReader ((Stream) null, Encoding.UTF8);
  87. } finally {
  88. if (r != null)
  89. r.Close ();
  90. }
  91. }
  92. [Test]
  93. [ExpectedException(typeof(ArgumentNullException))]
  94. public void CtorArgumentNullException6 ()
  95. {
  96. byte [] b = new byte [30];
  97. MemoryStream m = new MemoryStream (b);
  98. BinaryReader r = null;
  99. try {
  100. r = new BinaryReader (m, (Encoding) null);
  101. } finally {
  102. m.Close ();
  103. if (r != null)
  104. r.Close ();
  105. }
  106. }
  107. [Test]
  108. [ExpectedException(typeof(ArgumentException))]
  109. public void CtorArgumentException ()
  110. {
  111. FileStream f = null;
  112. BinaryReader r = null;
  113. try {
  114. f = new FileStream (_codeFileName, FileMode.Open, FileAccess.Write);
  115. r = new BinaryReader (f);
  116. } finally {
  117. if (r != null)
  118. r.Close ();
  119. if (f != null)
  120. f.Close ();
  121. }
  122. }
  123. [Test]
  124. public void Ctor1()
  125. {
  126. FileStream f = null;
  127. BinaryReader r = null;
  128. try {
  129. f = new FileStream (_codeFileName,
  130. FileMode.Open,
  131. FileAccess.Read);
  132. r = new BinaryReader (f);
  133. AssertNotNull ("#03 no binary reader created", r);
  134. } finally {
  135. if (r != null)
  136. r.Close ();
  137. if (f != null)
  138. f.Close ();
  139. }
  140. }
  141. //TODO: (TestCtor*) Verify the Use of a wrong Stream
  142. //TODO: (TestClose*) Verify the Close Method
  143. [Test]
  144. public void Close1 ()
  145. {
  146. byte [] b = new byte [30];
  147. MemoryStream m = new MemoryStream (b);
  148. BinaryReader r = null;
  149. try {
  150. r = new BinaryReader (m);
  151. } finally {
  152. r.Close ();
  153. m.Close ();
  154. }
  155. }
  156. //TODO: (TestRead*) Verify Read Method
  157. [Test]
  158. public void TestReadBoolean ()
  159. {
  160. bool [] a = {true, true, false};
  161. byte [] arr_a = new byte [3];
  162. int i = 0;
  163. foreach (bool a1 in a) {
  164. arr_a [i] = Convert.ToByte (a1);
  165. i++;
  166. }
  167. bool b;
  168. MemoryStream m = new MemoryStream (arr_a);
  169. BinaryReader r = null;
  170. try {
  171. r = new BinaryReader (m);
  172. b = r.ReadBoolean ();
  173. AssertEquals ("#11 No well readed boolean: ", a [0], b);
  174. } finally {
  175. if (r != null)
  176. r.Close ();
  177. m.Close ();
  178. }
  179. }
  180. [Test]
  181. public void TestReadByte ()
  182. {
  183. byte [] a = {0, 2, 3, 1, 5, 2};
  184. byte b;
  185. MemoryStream m = new MemoryStream (a);
  186. BinaryReader r = null;
  187. try {
  188. r = new BinaryReader (m);
  189. b = r.ReadByte ();
  190. AssertEquals ("#13 No well readed byte: ", a [0], b);
  191. } finally {
  192. if (r != null)
  193. r.Close ();
  194. m.Close ();
  195. }
  196. }
  197. [Test]
  198. public void TestReadChar()
  199. {
  200. char [] a = {'a','b','c','d','e'};
  201. byte [] arr_a = new byte [5];
  202. int i = 0;
  203. char c;
  204. foreach (char a1 in a) {
  205. arr_a [i] = Convert.ToByte (a1);
  206. i++;
  207. }
  208. MemoryStream m = null;
  209. BinaryReader r = null;
  210. try {
  211. m = new MemoryStream (arr_a);
  212. r = new BinaryReader (m);
  213. c = r.ReadChar ();
  214. AssertEquals ("#15 No well readed Char", a [0], c);
  215. } finally {
  216. r.Close ();
  217. m.Close ();
  218. }
  219. }
  220. [Test]
  221. public void TestReadInt32 () //Uses BinaryWriter!!
  222. {
  223. int [] arr_int = {1,10,200,3000,40000,500000,6000000};
  224. byte [] arr_byte = new byte [28]; //Sizeof arr_int * 4
  225. int [] arr_int2 = new int [7];
  226. int i;
  227. MemoryStream mem_stream = null;
  228. BinaryWriter bin_writer = null;
  229. try {
  230. mem_stream = new MemoryStream (arr_byte);
  231. bin_writer = new BinaryWriter (mem_stream);
  232. foreach (int elem in arr_int) {
  233. bin_writer.Write(elem);
  234. }
  235. mem_stream.Seek(0,SeekOrigin.Begin);
  236. BinaryReader bin_reader = new BinaryReader (mem_stream);
  237. bin_reader.BaseStream.Seek(0,SeekOrigin.Begin);
  238. for (i=0;i<7;i++) {
  239. try{
  240. arr_int2 [i] = bin_reader.ReadInt32();
  241. AssertEquals("#2E Wrong Readed Int32 in iteration "+ i,arr_int [i],arr_int2 [i]);
  242. } catch (IOException e) {
  243. Fail("#2F Unexpected IO Exception" + e.ToString());
  244. }
  245. }
  246. } finally {
  247. bin_writer.Close ();
  248. mem_stream.Close ();
  249. }
  250. }
  251. //-TODO: (TestRead[Type]*) Verify the ReadBoolean, ReadByte ....
  252. // ReadBoolean, ReadByte, ReadChar, ReadInt32 Done
  253. //TODO: (TestFillBuffer*) Verify the FillBuffer Method
  254. [Test]
  255. public void TestPeekChar ()
  256. {
  257. char char1, char2;
  258. char [] b = {'A', 'B', 'C'};
  259. byte [] arr_b = new byte [3];
  260. int i = 0;
  261. foreach (char b1 in b) {
  262. arr_b [i] = Convert.ToByte (b1);
  263. i++;
  264. }
  265. MemoryStream m = null;
  266. BinaryReader r = null;
  267. try {
  268. m = new MemoryStream (arr_b);
  269. r = new BinaryReader (m);
  270. char1 = (char) r.PeekChar ();
  271. char2 = (char) r.PeekChar ();
  272. AssertEquals ("#20 the stream pointer have been altered in peek", char1, char2);
  273. } finally {
  274. r.Close ();
  275. m.Close ();
  276. }
  277. }
  278. [Test]
  279. public void TestBaseSeek1 ()
  280. {
  281. char char1, char2;
  282. char [] b = {'A','B','C','D','E','F'};
  283. byte [] arr_b = new byte[6];
  284. int i = 0;
  285. foreach (char b1 in b) {
  286. arr_b [i] = Convert.ToByte (b1);
  287. i++;
  288. }
  289. MemoryStream m = null;
  290. BinaryReader r = null;
  291. try {
  292. m = new MemoryStream (arr_b);
  293. r = new BinaryReader (m);
  294. char1 = (char) r.PeekChar ();
  295. r.BaseStream.Seek (0,SeekOrigin.Current);
  296. char2 = (char) r.PeekChar ();
  297. AssertEquals ("#22 the stream Has been altered in Seek", char1, char2);
  298. } finally {
  299. r.Close ();
  300. m.Close ();
  301. }
  302. }
  303. [Test]
  304. public void TestBaseSeek2 ()
  305. {
  306. char char1, char2;
  307. char [] b = {'A','B','C','D','E','F'};
  308. byte [] arr_b = new byte[6];
  309. int i = 0;
  310. foreach (char b1 in b) {
  311. arr_b [i] = Convert.ToByte (b1);
  312. i++;
  313. }
  314. MemoryStream m = null;
  315. BinaryReader r = null;
  316. try {
  317. m = new MemoryStream (arr_b);
  318. r = new BinaryReader (m);
  319. char1 = (char) r.PeekChar ();
  320. r.BaseStream.Seek (3,SeekOrigin.Current);
  321. r.BaseStream.Seek (-3,SeekOrigin.Current);
  322. char2 = (char) r.PeekChar ();
  323. AssertEquals ("#24 the stream Has been altered in Seek", char1, char2);
  324. } finally {
  325. r.Close ();
  326. m.Close ();
  327. }
  328. }
  329. [Test]
  330. public void TestInterleavedSeek1 ()
  331. {
  332. byte int1;
  333. byte [] arr_byte = {0,1,2,3,4,5,6,7,8,9};
  334. MemoryStream m = null;
  335. BinaryReader r = null;
  336. try {
  337. m = new MemoryStream (arr_byte);
  338. r = new BinaryReader (m);
  339. {
  340. try {
  341. int1 = r.ReadByte();
  342. AssertEquals("#26 Not well readed Byte", int1, arr_byte[0]);
  343. } catch (Exception e) {
  344. Fail ("#27 Unexpected exception thrown: " + e.ToString ());
  345. }
  346. }
  347. {
  348. try {
  349. r.BaseStream.Seek(-1,SeekOrigin.End);
  350. int1 = r.ReadByte();
  351. AssertEquals("#28 Not well readed Byte",int1,arr_byte[9]);
  352. } catch (Exception e) {
  353. Fail ("#29 Unexpected exception thrown: " + e.ToString ());
  354. }
  355. }
  356. {
  357. try {
  358. r.BaseStream.Seek(3,SeekOrigin.Begin);
  359. int1 = r.ReadByte();
  360. AssertEquals("#2A Not well readed Byte",int1,arr_byte[3]);
  361. } catch (Exception e) {
  362. Fail ("#2B Unexpected exception thrown: " + e.ToString ());
  363. }
  364. }
  365. {
  366. try {
  367. r.BaseStream.Seek(2,SeekOrigin.Current);
  368. int1 = r.ReadByte();
  369. AssertEquals("#2C Not well readed Int32",int1,arr_byte [6]);
  370. } catch (Exception e) {
  371. Fail ("#2D Unexpected exception thrown: " + e.ToString ());
  372. }
  373. }
  374. } finally {
  375. r.Close ();
  376. m.Close ();
  377. }
  378. }
  379. /// <summary>
  380. /// Throws an exception if stream is null
  381. /// </summary>
  382. [Test]
  383. [ExpectedException(typeof(ArgumentNullException))]
  384. public void CtorNullExceptionStream ()
  385. {
  386. BinaryReader reader = null;
  387. try {
  388. reader = new BinaryReader (null);
  389. } finally {
  390. if (reader != null)
  391. reader.Close ();
  392. }
  393. }
  394. /// <summary>
  395. /// Throws an exception if encoding is null
  396. /// </summary>
  397. [Test]
  398. [ExpectedException(typeof(ArgumentNullException))]
  399. public void CtorNullExceptionEncoding ()
  400. {
  401. MemoryStream stream = null;
  402. BinaryReader reader = null;
  403. try {
  404. stream = new MemoryStream (64);
  405. reader = new BinaryReader (stream, null);
  406. } finally {
  407. if (reader != null)
  408. reader.Close ();
  409. if (stream != null)
  410. stream.Close ();
  411. }
  412. }
  413. /// <summary>
  414. /// Throws an exception if stream does not support writing
  415. /// </summary>
  416. [Test]
  417. [ExpectedException(typeof(ArgumentException))]
  418. public void CtorArgumentExceptionCannotWrite ()
  419. {
  420. string path = TempFolder + "/BinaryReaderTestFile.1";
  421. DeleteFile (path);
  422. FileStream file = null;
  423. BinaryReader breader = null;
  424. try {
  425. file = new FileStream (path, FileMode.CreateNew, FileAccess.Read);
  426. breader = new BinaryReader (file);
  427. } finally {
  428. if (breader != null)
  429. breader.Close ();
  430. if (file != null)
  431. file.Close ();
  432. DeleteFile (path);
  433. }
  434. }
  435. /// <summary>
  436. /// Throws an exception if stream is already closed
  437. /// </summary>
  438. [Test]
  439. [ExpectedException(typeof(ArgumentException))]
  440. public void CtorArgumentExceptionClosedStream ()
  441. {
  442. string path = TempFolder + "/BinaryReaderTestFile.2";
  443. DeleteFile (path);
  444. FileStream file = null;
  445. BinaryReader breader = null;
  446. try {
  447. file = new FileStream (path, FileMode.CreateNew, FileAccess.Write);
  448. file.Close ();
  449. breader = new BinaryReader (file);
  450. } finally {
  451. if (breader != null)
  452. breader.Close ();
  453. if (file != null)
  454. file.Close ();
  455. DeleteFile (path);
  456. }
  457. }
  458. /// <summary>
  459. /// Throws an exception if stream is closed
  460. /// </summary>
  461. [Test]
  462. [ExpectedException(typeof(ArgumentException))]
  463. public void CtorArgumentExceptionEncoding ()
  464. {
  465. MemoryStream stream = null;
  466. BinaryReader reader = null;
  467. try {
  468. stream = new MemoryStream (64);
  469. stream.Close ();
  470. reader = new BinaryReader (stream, new ASCIIEncoding ());
  471. } finally {
  472. if (reader != null)
  473. reader.Close ();
  474. if (stream != null)
  475. stream.Close ();
  476. }
  477. }
  478. /// <summary>
  479. /// Tests read () method
  480. /// </summary>
  481. [Test]
  482. public void Read ()
  483. {
  484. byte [] bytes = new byte [] {0, 1, 2, 3};
  485. MemoryStream stream = null;
  486. BinaryReader reader = null;
  487. try {
  488. stream = new MemoryStream (bytes);
  489. reader = new BinaryReader (stream);
  490. AssertEquals ("test#01", 0, reader.Read ());
  491. AssertEquals ("test#02", 1, reader.Read ());
  492. AssertEquals ("test#03", 2, reader.Read ());
  493. AssertEquals ("test#04", 3, reader.Read ());
  494. AssertEquals ("test#05", -1, reader.Read ());
  495. } finally {
  496. reader.Close ();
  497. stream.Close ();
  498. }
  499. }
  500. [Test]
  501. public void PeakChar ()
  502. {
  503. byte [] bytes = new byte [] {0, 1, 2, 3};
  504. MemoryStream stream = null;
  505. BinaryReader reader = null;
  506. try {
  507. stream = new MemoryStream (bytes);
  508. reader = new BinaryReader (stream);
  509. AssertEquals ("test#01", 0, reader.PeekChar ());
  510. AssertEquals ("test#02", 0, reader.PeekChar ());
  511. AssertEquals ("test#03", 0, reader.Read ());
  512. AssertEquals ("test#03", 1, reader.Read ());
  513. AssertEquals ("test#03", 2, reader.PeekChar ());
  514. } finally {
  515. reader.Close ();
  516. stream.Close ();
  517. }
  518. }
  519. [Test]
  520. [ExpectedException(typeof(ObjectDisposedException))]
  521. public void CloseRead ()
  522. {
  523. byte [] bytes = new byte [] {0, 1, 2, 3};
  524. MemoryStream stream = null;
  525. BinaryReader reader = null;
  526. try {
  527. stream = new MemoryStream (bytes);
  528. reader = new BinaryReader (stream);
  529. reader.Close ();
  530. reader.Read ();
  531. } finally {
  532. reader.Close ();
  533. stream.Close ();
  534. }
  535. }
  536. [Test]
  537. [ExpectedException(typeof(ObjectDisposedException))]
  538. public void ClosePeakChar ()
  539. {
  540. byte [] bytes = new byte [] {0, 1, 2, 3};
  541. MemoryStream stream = null;
  542. BinaryReader reader = null;
  543. try {
  544. stream = new MemoryStream (bytes);
  545. reader = new BinaryReader (stream);
  546. reader.Close ();
  547. reader.PeekChar ();
  548. } finally {
  549. reader.Close ();
  550. stream.Close ();
  551. }
  552. }
  553. [Test]
  554. [ExpectedException(typeof(ObjectDisposedException))]
  555. public void CloseReadBytes ()
  556. {
  557. byte [] bytes = new byte [] {0, 1, 2, 3};
  558. MemoryStream stream = null;
  559. BinaryReader reader = null;
  560. try {
  561. stream = new MemoryStream (bytes);
  562. reader = new BinaryReader (stream);
  563. reader.Close ();
  564. reader.ReadBytes (1);
  565. } finally {
  566. reader.Close ();
  567. stream.Close ();
  568. }
  569. }
  570. [Test]
  571. public void BaseStream ()
  572. {
  573. byte [] bytes = new byte [] {0, 1, 2, 3};
  574. MemoryStream stream = null;
  575. BinaryReader reader = null;
  576. try {
  577. stream = new MemoryStream (bytes);
  578. reader = new BinaryReader (stream);
  579. AssertEquals ("test#01", 4, reader.BaseStream.Length);
  580. AssertEquals ("test#02", true, reader.BaseStream.CanRead);
  581. reader.Close ();
  582. AssertEquals ("test#03", null, reader.BaseStream);
  583. } finally {
  584. reader.Close ();
  585. stream.Close ();
  586. }
  587. }
  588. /// <summary>
  589. /// Tests read (byte [], int, int) method
  590. /// </summary>
  591. [Test]
  592. public void ReadByteArray ()
  593. {
  594. byte [] bytes = new byte [] {0, 1, 2, 3, 4, 5};
  595. MemoryStream stream = null;
  596. BinaryReader reader = null;
  597. try {
  598. stream = new MemoryStream (bytes);
  599. reader = new BinaryReader (stream);
  600. bytes = new byte [3];
  601. reader.Read (bytes, 0, 3);
  602. AssertEquals ("test#01", 0, bytes [0]);
  603. AssertEquals ("test#02", 1, bytes [1]);
  604. AssertEquals ("test#03", 2, bytes [2]);
  605. bytes = new byte [6];
  606. reader.Read (bytes, 3, 3);
  607. AssertEquals ("test#04", 0, bytes [0]);
  608. AssertEquals ("test#05", 0, bytes [1]);
  609. AssertEquals ("test#06", 0, bytes [2]);
  610. AssertEquals ("test#07", 3, bytes [3]);
  611. AssertEquals ("test#08", 4, bytes [4]);
  612. AssertEquals ("test#09", 5, bytes [5]);
  613. bytes = new byte [2];
  614. reader.Read (bytes, 0, 2);
  615. AssertEquals ("test#10", 0, bytes [0]);
  616. AssertEquals ("test#11", 0, bytes [1]);
  617. } finally {
  618. reader.Close ();
  619. stream.Close ();
  620. }
  621. }
  622. /// <summary>
  623. /// Test Read (char [], int, int)
  624. /// </summary>
  625. [Test]
  626. public void ReadCharArray ()
  627. {
  628. MemoryStream stream = null;
  629. BinaryReader reader = null;
  630. try {
  631. stream = new MemoryStream (new byte [] {109, 111, 110, 111, 58, 58});
  632. reader = new BinaryReader (stream);
  633. char [] chars = new char [3];
  634. reader.Read (chars, 0, 3);
  635. AssertEquals ("test#01", 'm', chars [0]);
  636. AssertEquals ("test#02", 'o', chars [1]);
  637. AssertEquals ("test#03", 'n', chars [2]);
  638. chars = new char [6];
  639. reader.Read (chars, 3, 3);
  640. AssertEquals ("test#04", 0, chars [0]);
  641. AssertEquals ("test#05", 0, chars [1]);
  642. AssertEquals ("test#06", 0, chars [2]);
  643. AssertEquals ("test#07", 'o', chars [3]);
  644. AssertEquals ("test#08", ':', chars [4]);
  645. AssertEquals ("test#09", ':', chars [5]);
  646. chars = new char [2];
  647. reader.Read (chars, 0, 2);
  648. AssertEquals ("test#08", 0, chars [0]);
  649. AssertEquals ("test#09", 0, chars [1]);
  650. } finally {
  651. reader.Close ();
  652. stream.Close ();
  653. }
  654. }
  655. /// <summary>
  656. /// Test ReadBoolean () method.
  657. /// </summary>
  658. [Test]
  659. public void ReadBoolean ()
  660. {
  661. MemoryStream stream = null;
  662. BinaryReader reader = null;
  663. try {
  664. stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
  665. reader = new BinaryReader (stream);
  666. AssertEquals ("test#01", false, reader.ReadBoolean ());
  667. AssertEquals ("test#02", true, reader.ReadBoolean ());
  668. AssertEquals ("test#03", true, reader.ReadBoolean ());
  669. AssertEquals ("test#04", false, reader.ReadBoolean ());
  670. AssertEquals ("test#05", true, reader.ReadBoolean ());
  671. } finally {
  672. reader.Close ();
  673. stream.Close ();
  674. }
  675. }
  676. /// <summary>
  677. /// Test ReadBoolean () method exceptions.
  678. /// </summary>
  679. [Test]
  680. [ExpectedException(typeof(EndOfStreamException))]
  681. public void ReadBooleanException ()
  682. {
  683. MemoryStream stream = null;
  684. BinaryReader reader = null;
  685. try {
  686. stream = new MemoryStream (new byte [] {0, 1});
  687. reader = new BinaryReader (stream);
  688. reader.ReadBoolean ();
  689. reader.ReadBoolean ();
  690. reader.ReadBoolean ();
  691. } finally {
  692. reader.Close ();
  693. stream.Close ();
  694. }
  695. }
  696. /// <summary>
  697. /// Test ReadByte () method.
  698. /// </summary>
  699. [Test]
  700. public void ReadByte ()
  701. {
  702. MemoryStream stream = null;
  703. BinaryReader reader = null;
  704. try {
  705. stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
  706. reader = new BinaryReader (stream);
  707. AssertEquals ("test#01", 0, reader.ReadByte ());
  708. AssertEquals ("test#02", 1, reader.ReadByte ());
  709. AssertEquals ("test#03", 99, reader.ReadByte ());
  710. AssertEquals ("test#04", 0, reader.ReadByte ());
  711. AssertEquals ("test#05", 13, reader.ReadByte ());
  712. } finally {
  713. reader.Close ();
  714. stream.Close ();
  715. }
  716. }
  717. /// <summary>
  718. /// Test ReadByte () method exceptions.
  719. /// </summary>
  720. [Test]
  721. [ExpectedException(typeof(EndOfStreamException))]
  722. public void ReadByteException ()
  723. {
  724. MemoryStream stream = null;
  725. BinaryReader reader = null;
  726. try {
  727. stream = new MemoryStream (new byte [] {0, 1});
  728. reader = new BinaryReader (stream);
  729. reader.ReadByte ();
  730. reader.ReadByte ();
  731. reader.ReadByte ();
  732. } finally {
  733. reader.Close ();
  734. stream.Close ();
  735. }
  736. }
  737. /// <summary>
  738. /// Test ReadBytes (int) method.
  739. /// </summary>
  740. [Test]
  741. public void ReadBytes ()
  742. {
  743. MemoryStream stream = null;
  744. BinaryReader reader = null;
  745. try {
  746. stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
  747. reader = new BinaryReader (stream);
  748. byte [] bytes = reader.ReadBytes (2);
  749. AssertEquals ("test#01", 0, bytes [0]);
  750. AssertEquals ("test#02", 1, bytes [1]);
  751. bytes = reader.ReadBytes (2);
  752. AssertEquals ("test#03", 99, bytes [0]);
  753. AssertEquals ("test#04", 0, bytes [1]);
  754. bytes = reader.ReadBytes (2);
  755. AssertEquals ("test#05", 13, bytes [0]);
  756. AssertEquals ("test#06", 1, bytes.Length);
  757. } finally {
  758. reader.Close ();
  759. stream.Close ();
  760. }
  761. }
  762. /// <summary>
  763. /// Test ReadBytes (int) method exception.
  764. /// </summary>
  765. [Test]
  766. [ExpectedException(typeof(ArgumentOutOfRangeException))]
  767. public void ReadBytesException ()
  768. {
  769. MemoryStream stream = null;
  770. BinaryReader reader = null;
  771. try {
  772. stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
  773. reader = new BinaryReader (stream);
  774. reader.ReadBytes (-1);
  775. } finally {
  776. reader.Close ();
  777. stream.Close ();
  778. }
  779. }
  780. /// <summary>
  781. /// Test ReadChar () method.
  782. /// </summary>
  783. [Test]
  784. public void ReadChar ()
  785. {
  786. MemoryStream stream = null;
  787. BinaryReader reader = null;
  788. try {
  789. stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
  790. reader = new BinaryReader (stream);
  791. AssertEquals ("test#01", 0, reader.ReadChar ());
  792. AssertEquals ("test#02", 1, reader.ReadChar ());
  793. AssertEquals ("test#03", 99, reader.ReadChar ());
  794. AssertEquals ("test#04", 0, reader.ReadChar ());
  795. AssertEquals ("test#05", 13, reader.ReadChar ());
  796. } finally {
  797. reader.Close ();
  798. stream.Close ();
  799. }
  800. }
  801. /// <summary>
  802. /// Test ReadChar () method exception.
  803. /// </summary>
  804. [Test]
  805. [ExpectedException(typeof(EndOfStreamException))]
  806. public void ReadCharException ()
  807. {
  808. MemoryStream stream = null;
  809. BinaryReader reader = null;
  810. try {
  811. stream = new MemoryStream (new byte [] {0, 1});
  812. reader = new BinaryReader (stream);
  813. reader.ReadChar ();
  814. reader.ReadChar ();
  815. reader.ReadChar ();
  816. } finally {
  817. reader.Close ();
  818. stream.Close ();
  819. }
  820. }
  821. /// <summary>
  822. /// Test ReadChars (int) method.
  823. /// </summary>
  824. [Test]
  825. public void ReadChars ()
  826. {
  827. MemoryStream stream = null;
  828. BinaryReader reader = null;
  829. try {
  830. stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
  831. reader = new BinaryReader (stream);
  832. char [] chars = reader.ReadChars (2);
  833. AssertEquals ("test#01", 0, chars [0]);
  834. AssertEquals ("test#02", 1, chars [1]);
  835. chars = reader.ReadChars (2);
  836. AssertEquals ("test#03", 99, chars [0]);
  837. AssertEquals ("test#04", 0, chars [1]);
  838. chars = reader.ReadChars (2);
  839. AssertEquals ("test#05", 13, chars [0]);
  840. AssertEquals ("test#06", 1, chars.Length);
  841. } finally {
  842. reader.Close ();
  843. stream.Close ();
  844. }
  845. }
  846. /// <summary>
  847. /// Test ReadChars (int value) exceptions. If value is negative exception is thrown
  848. /// </summary>
  849. [Test]
  850. [ExpectedException(typeof(ArgumentOutOfRangeException))]
  851. public void ReadCharsException ()
  852. {
  853. MemoryStream stream = null;
  854. BinaryReader reader = null;
  855. try {
  856. stream = new MemoryStream (new byte [] {0, 1, 99, 0, 13});
  857. reader = new BinaryReader (stream);
  858. reader.ReadChars (-1);
  859. } finally {
  860. reader.Close ();
  861. stream.Close ();
  862. }
  863. }
  864. /// <summary>
  865. /// Test ReadDecimal () method.
  866. /// </summary>
  867. [Test]
  868. public void ReadDecimal ()
  869. {
  870. MemoryStream stream = null;
  871. BinaryReader reader = null;
  872. try {
  873. 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});
  874. reader = new BinaryReader (stream);
  875. AssertEquals ("test#01", -18295873486192640, reader.ReadDecimal ());
  876. } finally {
  877. reader.Close ();
  878. stream.Close ();
  879. }
  880. }
  881. [Test]
  882. [ExpectedException(typeof(EndOfStreamException))]
  883. public void ReadDecimalException ()
  884. {
  885. 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});
  886. BinaryReader reader = new BinaryReader (stream);
  887. try {
  888. reader.ReadDecimal ();
  889. reader.ReadDecimal ();
  890. } finally {
  891. reader.Close ();
  892. stream.Close ();
  893. }
  894. }
  895. [Test]
  896. public void ReadDouble ()
  897. {
  898. 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});
  899. BinaryReader reader = new BinaryReader (stream);
  900. try {
  901. AssertEquals ("test#01", 1.89131277973112E-307, reader.ReadDouble ());
  902. AssertEquals ("test#02", 1.2024538023802E+111, reader.ReadDouble ());
  903. } finally {
  904. reader.Close ();
  905. stream.Close ();
  906. }
  907. }
  908. [Test]
  909. [ExpectedException(typeof(EndOfStreamException))]
  910. public void ReadDoubleException ()
  911. {
  912. 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});
  913. BinaryReader reader = new BinaryReader (stream);
  914. try {
  915. reader.ReadDouble ();
  916. reader.ReadDouble ();
  917. reader.ReadDouble ();
  918. } finally {
  919. reader.Close ();
  920. stream.Close ();
  921. }
  922. }
  923. [Test]
  924. public void ReadInt16 ()
  925. {
  926. MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0});
  927. BinaryReader reader = new BinaryReader (stream);
  928. try {
  929. AssertEquals ("test#01", 321, reader.ReadInt16 ());
  930. AssertEquals ("test#02", 11040, reader.ReadInt16 ());
  931. AssertEquals ("test#03", 773, reader.ReadInt16 ());
  932. AssertEquals ("test#04", 54, reader.ReadInt16 ());
  933. } finally {
  934. reader.Close ();
  935. stream.Close ();
  936. }
  937. }
  938. [Test]
  939. [ExpectedException(typeof(EndOfStreamException))]
  940. public void ReadInt16Exception ()
  941. {
  942. MemoryStream stream = new MemoryStream (new byte [] {65, 1});
  943. BinaryReader reader = new BinaryReader (stream);
  944. try {
  945. reader.ReadInt16 ();
  946. reader.ReadInt16 ();
  947. } finally {
  948. reader.Close ();
  949. stream.Close ();
  950. }
  951. }
  952. [Test]
  953. public void ReadInt32 ()
  954. {
  955. MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0});
  956. BinaryReader reader = new BinaryReader (stream);
  957. try {
  958. AssertEquals ("test#01", 723517761, reader.ReadInt32 ());
  959. AssertEquals ("test#02", 3539717, reader.ReadInt32 ());
  960. } finally {
  961. reader.Close ();
  962. stream.Close ();
  963. }
  964. }
  965. [Test]
  966. [ExpectedException(typeof(EndOfStreamException))]
  967. public void ReadInt32Exception ()
  968. {
  969. MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43});
  970. BinaryReader reader = new BinaryReader (stream);
  971. try {
  972. reader.ReadInt32 ();
  973. reader.ReadInt32 ();
  974. } finally {
  975. reader.Close ();
  976. stream.Close ();
  977. }
  978. }
  979. [Test]
  980. public void ReadInt64 ()
  981. {
  982. 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});
  983. BinaryReader reader = new BinaryReader (stream);
  984. try {
  985. AssertEquals ("test#01", 15202969475612993, reader.ReadInt64 ());
  986. AssertEquals ("test#02", 2471354792417887522, reader.ReadInt64 ());
  987. } finally {
  988. reader.Close ();
  989. stream.Close ();
  990. }
  991. }
  992. [Test]
  993. [ExpectedException(typeof(EndOfStreamException))]
  994. public void ReadInt64Exception ()
  995. {
  996. 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});
  997. BinaryReader reader = new BinaryReader (stream);
  998. try {
  999. reader.ReadInt64 ();
  1000. reader.ReadInt64 ();
  1001. reader.ReadInt64 ();
  1002. } finally {
  1003. reader.Close ();
  1004. stream.Close ();
  1005. }
  1006. }
  1007. [Test]
  1008. public void ReadSByte ()
  1009. {
  1010. MemoryStream stream = new MemoryStream (new byte [] {65, 200, 32});
  1011. BinaryReader reader = new BinaryReader (stream);
  1012. try {
  1013. AssertEquals ("test#01", 65, reader.ReadSByte ());
  1014. AssertEquals ("test#02", -56, reader.ReadSByte ());
  1015. AssertEquals ("test#03", 32, reader.ReadSByte ());
  1016. } finally {
  1017. reader.Close ();
  1018. stream.Close ();
  1019. }
  1020. }
  1021. [Test]
  1022. [ExpectedException(typeof(EndOfStreamException))]
  1023. public void ReadSByteException ()
  1024. {
  1025. MemoryStream stream = new MemoryStream (new byte [] {65, 200});
  1026. BinaryReader reader = new BinaryReader (stream);
  1027. try {
  1028. reader.ReadSByte ();
  1029. reader.ReadSByte ();
  1030. reader.ReadSByte ();
  1031. } finally {
  1032. reader.Close ();
  1033. stream.Close ();
  1034. }
  1035. }
  1036. [Test]
  1037. public void ReadSingle ()
  1038. {
  1039. MemoryStream stream = new MemoryStream (new byte [] {65, 200, 0, 0, 0, 1, 2, 3, 4});
  1040. BinaryReader reader = new BinaryReader (stream);
  1041. try {
  1042. AssertEquals ("test#01", 7.183757E-41, reader.ReadSingle ());
  1043. AssertEquals ("test#01", 3.820471E-37, reader.ReadSingle ());
  1044. } finally {
  1045. reader.Close ();
  1046. stream.Close ();
  1047. }
  1048. }
  1049. [Test]
  1050. [ExpectedException(typeof(EndOfStreamException))]
  1051. public void ReadSingleException ()
  1052. {
  1053. MemoryStream stream = new MemoryStream (new byte [] {65, 200, 0, 0, 0, 1, 2, 3, 4});
  1054. BinaryReader reader = new BinaryReader (stream);
  1055. try {
  1056. reader.ReadSingle ();
  1057. reader.ReadSingle ();
  1058. reader.ReadSingle ();
  1059. } finally {
  1060. reader.Close ();
  1061. stream.Close ();
  1062. }
  1063. }
  1064. [Test]
  1065. public void ReadString ()
  1066. {
  1067. MemoryStream stream = null;
  1068. BinaryReader reader = null;
  1069. try {
  1070. stream = new MemoryStream (new byte [] {6,109, 111, 110, 111, 58, 58});
  1071. reader = new BinaryReader (stream);
  1072. AssertEquals ("test#01", "mono::", reader.ReadString ());
  1073. stream = new MemoryStream (new byte [] {2,109, 111, 3, 111, 58, 58});
  1074. reader = new BinaryReader (stream);
  1075. AssertEquals ("test#02", "mo", reader.ReadString ());
  1076. AssertEquals ("test#03", "o::", reader.ReadString ());
  1077. } finally {
  1078. reader.Close ();
  1079. stream.Close ();
  1080. }
  1081. }
  1082. [Test]
  1083. [ExpectedException(typeof(EndOfStreamException))]
  1084. public void ReadStringException ()
  1085. {
  1086. MemoryStream stream = new MemoryStream (new byte [] {2,109, 111, 3, 111, 58, 58});
  1087. BinaryReader reader = new BinaryReader (stream);
  1088. try {
  1089. reader.ReadString ();
  1090. reader.ReadString ();
  1091. reader.ReadString ();
  1092. } finally {
  1093. reader.Close ();
  1094. stream.Close ();
  1095. }
  1096. }
  1097. [Test]
  1098. public void ReadUInt16 ()
  1099. {
  1100. MemoryStream stream = new MemoryStream (new byte [] {200, 200, 32, 43, 5, 3, 54, 0});
  1101. BinaryReader reader = new BinaryReader (stream);
  1102. try {
  1103. AssertEquals ("test#01", 51400, reader.ReadUInt16 ());
  1104. AssertEquals ("test#02", 11040, reader.ReadUInt16 ());
  1105. AssertEquals ("test#03", 773, reader.ReadUInt16 ());
  1106. AssertEquals ("test#04", 54, reader.ReadUInt16 ());
  1107. } finally {
  1108. reader.Close ();
  1109. stream.Close ();
  1110. }
  1111. }
  1112. [Test]
  1113. [ExpectedException(typeof(EndOfStreamException))]
  1114. public void ReadUInt16Exception ()
  1115. {
  1116. MemoryStream stream = new MemoryStream (new byte [] {65, 1});
  1117. BinaryReader reader = new BinaryReader (stream);
  1118. try {
  1119. reader.ReadUInt16 ();
  1120. reader.ReadUInt16 ();
  1121. } finally {
  1122. reader.Close ();
  1123. stream.Close ();
  1124. }
  1125. }
  1126. [Test]
  1127. public void ReadUInt32 ()
  1128. {
  1129. MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43, 5, 3, 54, 0});
  1130. BinaryReader reader = new BinaryReader (stream);
  1131. try {
  1132. AssertEquals ("test#01", 723517761, reader.ReadUInt32 ());
  1133. AssertEquals ("test#02", 3539717, reader.ReadUInt32 ());
  1134. } finally {
  1135. reader.Close ();
  1136. stream.Close ();
  1137. }
  1138. }
  1139. [Test]
  1140. [ExpectedException(typeof(EndOfStreamException))]
  1141. public void ReadUInt32Exception ()
  1142. {
  1143. MemoryStream stream = new MemoryStream (new byte [] {65, 1, 32, 43});
  1144. BinaryReader reader = new BinaryReader (stream);
  1145. try {
  1146. reader.ReadUInt32 ();
  1147. reader.ReadUInt32 ();
  1148. } finally {
  1149. reader.Close ();
  1150. stream.Close ();
  1151. }
  1152. }
  1153. [Test]
  1154. public void ReadUInt64 ()
  1155. {
  1156. 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});
  1157. BinaryReader reader = new BinaryReader (stream);
  1158. try {
  1159. AssertEquals ("test#01", 15202969475612993, reader.ReadUInt64 ());
  1160. AssertEquals ("test#02", 2471354792417887522, reader.ReadUInt64 ());
  1161. } finally {
  1162. reader.Close ();
  1163. stream.Close ();
  1164. }
  1165. }
  1166. [Test]
  1167. [ExpectedException(typeof(EndOfStreamException))]
  1168. public void ReadUInt64Exception ()
  1169. {
  1170. 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});
  1171. BinaryReader reader = new BinaryReader (stream);
  1172. try {
  1173. reader.ReadUInt64 ();
  1174. reader.ReadUInt64 ();
  1175. reader.ReadUInt64 ();
  1176. } finally {
  1177. reader.Close ();
  1178. stream.Close ();
  1179. }
  1180. }
  1181. private void DeleteFile (string path)
  1182. {
  1183. if (File.Exists (path))
  1184. File.Delete (path);
  1185. }
  1186. }
  1187. }