MemoryStreamTest.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688
  1. //
  2. // System.IO.MemoryStreamTest
  3. //
  4. // Authors:
  5. // Marcin Szczepanski ([email protected])
  6. // Gonzalo Paniagua Javier ([email protected])
  7. // Sebastien Pouliot <[email protected]>
  8. //
  9. // (c) 2003 Ximian, Inc. (http://www.ximian.com)
  10. // Copyright (C) 2004 Novell (http://www.novell.com)
  11. //
  12. using System;
  13. using System.IO;
  14. using System.Runtime.Serialization.Formatters.Binary;
  15. using System.Text;
  16. using NUnit.Framework;
  17. namespace MonoTests.System.IO
  18. {
  19. [TestFixture]
  20. public class MemoryStreamTest
  21. {
  22. MemoryStream testStream;
  23. byte [] testStreamData;
  24. [SetUp]
  25. public void SetUp ()
  26. {
  27. testStreamData = new byte [100];
  28. for (int i = 0; i < 100; i++)
  29. testStreamData[i] = (byte) (100 - i);
  30. testStream = new MemoryStream (testStreamData);
  31. }
  32. //
  33. // Verify that the first count bytes in testBytes are the same as
  34. // the count bytes from index start in testStreamData
  35. //
  36. void VerifyTestData (string id, byte [] testBytes, int start, int count)
  37. {
  38. if (testBytes == null)
  39. Assert.Fail (id + "+1 testBytes is null");
  40. if (start < 0 ||
  41. count < 0 ||
  42. start + count > testStreamData.Length ||
  43. start > testStreamData.Length)
  44. throw new ArgumentOutOfRangeException (id + "+2");
  45. for (int test = 0; test < count; test++) {
  46. if (testBytes [test] == testStreamData [start + test])
  47. continue;
  48. string failStr = "testByte {0} (testStream {1}) was <{2}>, expecting <{3}>";
  49. failStr = String.Format (failStr,
  50. test,
  51. start + test,
  52. testBytes [test],
  53. testStreamData [start + test]);
  54. Assert.Fail (id + "-3" + failStr);
  55. }
  56. }
  57. public void AssertEquals (string message, int expected, int actual)
  58. {
  59. Assert.AreEqual (expected, actual, message);
  60. }
  61. public void AssertEquals (string message, long expected, long actual)
  62. {
  63. Assert.AreEqual (expected, actual, message);
  64. }
  65. public void AssertEquals (string message, bool expected, bool actual)
  66. {
  67. Assert.AreEqual (expected, actual, message);
  68. }
  69. [Test]
  70. public void ConstructorsOne ()
  71. {
  72. MemoryStream ms = new MemoryStream();
  73. AssertEquals ("#01", 0L, ms.Length);
  74. AssertEquals ("#02", 0, ms.Capacity);
  75. AssertEquals ("#03", true, ms.CanWrite);
  76. }
  77. [Test]
  78. public void ConstructorsTwo ()
  79. {
  80. MemoryStream ms = new MemoryStream (10);
  81. AssertEquals ("#01", 0L, ms.Length);
  82. AssertEquals ("#02", 10, ms.Capacity);
  83. ms.Capacity = 0;
  84. byte [] buffer = ms.GetBuffer ();
  85. // Begin: wow!!!
  86. AssertEquals ("#03", -1, ms.ReadByte ());
  87. Assert.IsNull (buffer, "#04"); // <--
  88. ms.Read (new byte [5], 0, 5);
  89. AssertEquals ("#05", 0, ms.Position);
  90. AssertEquals ("#06", 0, ms.Length);
  91. // End
  92. }
  93. [Test]
  94. public void ConstructorsThree ()
  95. {
  96. MemoryStream ms = new MemoryStream (testStreamData);
  97. AssertEquals ("#01", 100, ms.Length);
  98. AssertEquals ("#02", 0, ms.Position);
  99. }
  100. [Test]
  101. public void ConstructorsFour ()
  102. {
  103. MemoryStream ms = new MemoryStream (testStreamData, true);
  104. AssertEquals ("#01", 100, ms.Length);
  105. AssertEquals ("#02", 0, ms.Position);
  106. ms.Position = 50;
  107. byte saved = testStreamData [50];
  108. try {
  109. ms.WriteByte (23);
  110. AssertEquals ("#03", testStreamData [50], 23);
  111. } finally {
  112. testStreamData [50] = saved;
  113. }
  114. ms.Position = 100;
  115. try {
  116. ms.WriteByte (23);
  117. } catch (Exception) {
  118. return;
  119. }
  120. Assert.Fail ("#04");
  121. }
  122. [Test]
  123. public void ConstructorsFive ()
  124. {
  125. MemoryStream ms = new MemoryStream (testStreamData, 50, 50);
  126. AssertEquals ("#01", 50, ms.Length);
  127. AssertEquals ("#02", 0, ms.Position);
  128. AssertEquals ("#03", 50, ms.Capacity);
  129. ms.Position = 1;
  130. byte saved = testStreamData [51];
  131. try {
  132. ms.WriteByte (23);
  133. AssertEquals ("#04", testStreamData [51], 23);
  134. } finally {
  135. testStreamData [51] = saved;
  136. }
  137. ms.Position = 100;
  138. bool gotException = false;
  139. try {
  140. ms.WriteByte (23);
  141. } catch (NotSupportedException) {
  142. gotException = true;
  143. }
  144. if (!gotException)
  145. Assert.Fail ("#05");
  146. ms.Capacity = 100; // Allowed. It's the same as the one in the ms.
  147. // This is lame, as the length is 50!!!
  148. gotException = false;
  149. try {
  150. ms.Capacity = 51;
  151. } catch (NotSupportedException) {
  152. gotException = true;
  153. }
  154. if (!gotException)
  155. Assert.Fail ("#07");
  156. AssertEquals ("#08", 50, ms.ToArray ().Length);
  157. }
  158. [Test]
  159. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  160. public void ConstructorsSix ()
  161. {
  162. MemoryStream ms = new MemoryStream (-2);
  163. }
  164. [Test]
  165. public void Read ()
  166. {
  167. byte [] readBytes = new byte [20];
  168. /* Test simple read */
  169. testStream.Read (readBytes, 0, 10);
  170. VerifyTestData ("R1", readBytes, 0, 10);
  171. /* Seek back to beginning */
  172. testStream.Seek (0, SeekOrigin.Begin);
  173. /* Read again, bit more this time */
  174. testStream.Read (readBytes, 0, 20);
  175. VerifyTestData ("R2", readBytes, 0, 20);
  176. /* Seek to 20 bytes from End */
  177. testStream.Seek (-20, SeekOrigin.End);
  178. testStream.Read (readBytes, 0, 20);
  179. VerifyTestData ("R3", readBytes, 80, 20);
  180. int readByte = testStream.ReadByte();
  181. Assert.AreEqual (-1, readByte, "R4");
  182. }
  183. [Test]
  184. public void WriteBytes ()
  185. {
  186. byte[] readBytes = new byte[100];
  187. MemoryStream ms = new MemoryStream (100);
  188. for (int i = 0; i < 100; i++)
  189. ms.WriteByte (testStreamData [i]);
  190. ms.Seek (0, SeekOrigin.Begin);
  191. testStream.Read (readBytes, 0, 100);
  192. VerifyTestData ("W1", readBytes, 0, 100);
  193. }
  194. [Test]
  195. public void WriteBlock ()
  196. {
  197. byte[] readBytes = new byte[100];
  198. MemoryStream ms = new MemoryStream (100);
  199. ms.Write (testStreamData, 0, 100);
  200. ms.Seek (0, SeekOrigin.Begin);
  201. testStream.Read (readBytes, 0, 100);
  202. VerifyTestData ("WB1", readBytes, 0, 100);
  203. byte[] arrayBytes = testStream.ToArray();
  204. AssertEquals ("#01", 100, arrayBytes.Length);
  205. VerifyTestData ("WB2", arrayBytes, 0, 100);
  206. }
  207. [Test]
  208. public void PositionLength ()
  209. {
  210. MemoryStream ms = new MemoryStream ();
  211. ms.Position = 4;
  212. ms.WriteByte ((byte) 'M');
  213. ms.WriteByte ((byte) 'O');
  214. AssertEquals ("#01", 6, ms.Length);
  215. AssertEquals ("#02", 6, ms.Position);
  216. ms.Position = 0;
  217. AssertEquals ("#03", 0, ms.Position);
  218. }
  219. [Test]
  220. [ExpectedException (typeof (NotSupportedException))]
  221. public void MorePositionLength ()
  222. {
  223. MemoryStream ms = new MemoryStream (testStreamData);
  224. ms.Position = 101;
  225. AssertEquals ("#01", 101, ms.Position);
  226. AssertEquals ("#02", 100, ms.Length);
  227. ms.WriteByte (1); // This should throw the exception
  228. }
  229. [Test]
  230. public void GetBufferOne ()
  231. {
  232. MemoryStream ms = new MemoryStream ();
  233. byte [] buffer = ms.GetBuffer ();
  234. AssertEquals ("#01", 0, buffer.Length);
  235. }
  236. [Test]
  237. public void GetBufferTwo ()
  238. {
  239. MemoryStream ms = new MemoryStream (100);
  240. byte [] buffer = ms.GetBuffer ();
  241. AssertEquals ("#01", 100, buffer.Length);
  242. ms.Write (testStreamData, 0, 100);
  243. ms.Write (testStreamData, 0, 100);
  244. AssertEquals ("#02", 200, ms.Length);
  245. buffer = ms.GetBuffer ();
  246. AssertEquals ("#03", 256, buffer.Length); // Minimun size after writing
  247. }
  248. [Test]
  249. public void Closed ()
  250. {
  251. MemoryStream ms = new MemoryStream (100);
  252. ms.Close ();
  253. bool thrown = false;
  254. try {
  255. int x = ms.Capacity;
  256. } catch (ObjectDisposedException) {
  257. thrown = true;
  258. }
  259. if (!thrown)
  260. Assert.Fail ("#01");
  261. thrown = false;
  262. try {
  263. ms.Capacity = 1;
  264. } catch (ObjectDisposedException) {
  265. thrown = true;
  266. }
  267. if (!thrown)
  268. Assert.Fail ("#02");
  269. // The first exception thrown is ObjectDisposed, not ArgumentNull
  270. thrown = false;
  271. try {
  272. ms.Read (null, 0, 1);
  273. } catch (ObjectDisposedException) {
  274. thrown = true;
  275. }
  276. if (!thrown)
  277. Assert.Fail ("#03");
  278. thrown = false;
  279. try {
  280. ms.Write (null, 0, 1);
  281. } catch (ObjectDisposedException) {
  282. thrown = true;
  283. }
  284. if (!thrown)
  285. Assert.Fail ("#03");
  286. }
  287. [Test]
  288. [ExpectedException (typeof (ObjectDisposedException))]
  289. public void Close_get_Length ()
  290. {
  291. MemoryStream ms = new MemoryStream (100);
  292. ms.Close ();
  293. long x = ms.Length;
  294. }
  295. [Test]
  296. [ExpectedException (typeof (ObjectDisposedException))]
  297. public void Close_get_Position ()
  298. {
  299. MemoryStream ms = new MemoryStream (100);
  300. ms.Close ();
  301. long x = ms.Position;
  302. }
  303. [Test]
  304. [ExpectedException (typeof (ObjectDisposedException))]
  305. public void Close_set_Position ()
  306. {
  307. MemoryStream ms = new MemoryStream (100);
  308. ms.Close ();
  309. ms.Position = 0;
  310. }
  311. [Test]
  312. public void Seek ()
  313. {
  314. MemoryStream ms = new MemoryStream (100);
  315. ms.Write (testStreamData, 0, 100);
  316. ms.Seek (0, SeekOrigin.Begin);
  317. ms.Position = 50;
  318. ms.Seek (-50, SeekOrigin.Current);
  319. ms.Seek (-50, SeekOrigin.End);
  320. bool thrown = false;
  321. ms.Position = 49;
  322. try {
  323. ms.Seek (-50, SeekOrigin.Current);
  324. } catch (IOException) {
  325. thrown = true;
  326. }
  327. if (!thrown)
  328. Assert.Fail ("#01");
  329. thrown = false;
  330. try {
  331. ms.Seek (Int64.MaxValue, SeekOrigin.Begin);
  332. } catch (ArgumentOutOfRangeException) {
  333. thrown = true;
  334. }
  335. if (!thrown)
  336. Assert.Fail ("#02");
  337. thrown=false;
  338. try {
  339. // Oh, yes. They throw IOException for this one, but ArgumentOutOfRange for the previous one
  340. ms.Seek (Int64.MinValue, SeekOrigin.Begin);
  341. } catch (IOException) {
  342. thrown = true;
  343. }
  344. if (!thrown)
  345. Assert.Fail ("#03");
  346. ms=new MemoryStream (256);
  347. ms.Write (testStreamData, 0, 100);
  348. ms.Position=0;
  349. AssertEquals ("#01", 100, ms.Length);
  350. AssertEquals ("#02", 0, ms.Position);
  351. ms.Position=128;
  352. AssertEquals ("#03", 100, ms.Length);
  353. AssertEquals ("#04", 128, ms.Position);
  354. ms.Position=768;
  355. AssertEquals ("#05", 100, ms.Length);
  356. AssertEquals ("#06", 768, ms.Position);
  357. ms.WriteByte (0);
  358. AssertEquals ("#07", 769, ms.Length);
  359. AssertEquals ("#08", 769, ms.Position);
  360. }
  361. [Test]
  362. [ExpectedException (typeof (ObjectDisposedException))]
  363. public void Seek_Disposed ()
  364. {
  365. MemoryStream ms = new MemoryStream ();
  366. ms.Close ();
  367. ms.Seek (0, SeekOrigin.Begin);
  368. }
  369. [Test]
  370. public void SetLength ()
  371. {
  372. MemoryStream ms = new MemoryStream ();
  373. ms.Write (testStreamData, 0, 100);
  374. ms.Position = 100;
  375. ms.SetLength (150);
  376. AssertEquals ("#01", 150, ms.Length);
  377. AssertEquals ("#02", 100, ms.Position);
  378. ms.SetLength (80);
  379. AssertEquals ("#03", 80, ms.Length);
  380. AssertEquals ("#04", 80, ms.Position);
  381. }
  382. [Test]
  383. [ExpectedException (typeof (NotSupportedException))]
  384. public void SetLength_ReadOnly ()
  385. {
  386. MemoryStream ms = new MemoryStream (testStreamData, false);
  387. ms.SetLength (10);
  388. }
  389. [Test]
  390. [ExpectedException (typeof (NotSupportedException))]
  391. public void WriteNonWritable ()
  392. {
  393. MemoryStream ms = new MemoryStream (testStreamData, false);
  394. ms.Write (testStreamData, 0, 100);
  395. }
  396. [Test]
  397. [ExpectedException (typeof (NotSupportedException))]
  398. public void WriteExpand ()
  399. {
  400. MemoryStream ms = new MemoryStream (testStreamData);
  401. ms.Write (testStreamData, 0, 100);
  402. ms.Write (testStreamData, 0, 100); // This one throws the exception
  403. }
  404. [Test]
  405. public void WriteByte ()
  406. {
  407. MemoryStream ms = new MemoryStream (100);
  408. ms.Write (testStreamData, 0, 100);
  409. ms.Position = 100;
  410. ms.WriteByte (101);
  411. AssertEquals ("#01", 101, ms.Position);
  412. AssertEquals ("#02", 101, ms.Length);
  413. AssertEquals ("#03", 256, ms.Capacity);
  414. ms.Write (testStreamData, 0, 100);
  415. ms.Write (testStreamData, 0, 100);
  416. // 301
  417. AssertEquals ("#04", 301, ms.Position);
  418. AssertEquals ("#05", 301, ms.Length);
  419. AssertEquals ("#06", 512, ms.Capacity);
  420. }
  421. [Test]
  422. public void WriteLengths () {
  423. MemoryStream ms=new MemoryStream (256);
  424. BinaryWriter writer=new BinaryWriter (ms);
  425. writer.Write ((byte)'1');
  426. AssertEquals ("#01", 1, ms.Length);
  427. AssertEquals ("#02", 256, ms.Capacity);
  428. writer.Write ((ushort)0);
  429. AssertEquals ("#03", 3, ms.Length);
  430. AssertEquals ("#04", 256, ms.Capacity);
  431. writer.Write (testStreamData, 0, 23);
  432. AssertEquals ("#05", 26, ms.Length);
  433. AssertEquals ("#06", 256, ms.Capacity);
  434. writer.Write (testStreamData);
  435. writer.Write (testStreamData);
  436. writer.Write (testStreamData);
  437. AssertEquals ("#07", 326, ms.Length);
  438. }
  439. [Test]
  440. public void MoreWriteByte ()
  441. {
  442. byte[] buffer = new byte [44];
  443. MemoryStream ms = new MemoryStream (buffer);
  444. BinaryWriter bw = new BinaryWriter (ms);
  445. for(int i=0; i < 44; i++)
  446. bw.Write ((byte) 1);
  447. }
  448. [Test]
  449. [ExpectedException (typeof (NotSupportedException))]
  450. public void MoreWriteByte2 ()
  451. {
  452. byte[] buffer = new byte [43]; // Note the 43 here
  453. MemoryStream ms = new MemoryStream (buffer);
  454. BinaryWriter bw = new BinaryWriter (ms);
  455. for(int i=0; i < 44; i++)
  456. bw.Write ((byte) 1);
  457. }
  458. [Test]
  459. public void Expand ()
  460. {
  461. byte[] array = new byte [8] { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 };
  462. MemoryStream ms = new MemoryStream ();
  463. ms.Write (array, 0, array.Length);
  464. ms.SetLength (4);
  465. ms.Seek (4, SeekOrigin.End);
  466. ms.WriteByte (0xFF);
  467. Assert.AreEqual ("01-01-01-01-00-00-00-00-FF", BitConverter.ToString (ms.ToArray ()), "Result");
  468. }
  469. [Test]
  470. public void PubliclyVisible ()
  471. {
  472. MemoryStream ms = new MemoryStream ();
  473. Assert.IsNotNull (ms.GetBuffer (), "ctor()");
  474. ms = new MemoryStream (1);
  475. Assert.IsNotNull (ms.GetBuffer (), "ctor(1)");
  476. ms = new MemoryStream (new byte[1], 0, 1, true, true);
  477. Assert.IsNotNull (ms.GetBuffer (), "ctor(byte[],int,int,bool,bool");
  478. }
  479. [Test]
  480. [ExpectedException (typeof (UnauthorizedAccessException))]
  481. public void PubliclyVisible_Ctor_ByteArray ()
  482. {
  483. MemoryStream ms = new MemoryStream (new byte[0]);
  484. Assert.IsNotNull (ms.GetBuffer ());
  485. }
  486. [Test]
  487. [ExpectedException (typeof (UnauthorizedAccessException))]
  488. public void PubliclyVisible_Ctor_ByteArray_Boolean ()
  489. {
  490. MemoryStream ms = new MemoryStream (new byte[0], true);
  491. Assert.IsNotNull (ms.GetBuffer ());
  492. }
  493. [Test]
  494. [ExpectedException (typeof (UnauthorizedAccessException))]
  495. public void PubliclyVisible_Ctor_ByteArray_Int_Int ()
  496. {
  497. MemoryStream ms = new MemoryStream (new byte[1], 0, 1);
  498. Assert.IsNotNull (ms.GetBuffer ());
  499. }
  500. [Test]
  501. [ExpectedException (typeof (UnauthorizedAccessException))]
  502. public void PubliclyVisible_Ctor_ByteArray_Int_Int_Boolean ()
  503. {
  504. MemoryStream ms = new MemoryStream (new byte[1], 0, 1, true);
  505. Assert.IsNotNull (ms.GetBuffer ());
  506. }
  507. [Test]
  508. [ExpectedException (typeof (UnauthorizedAccessException))]
  509. public void PubliclyVisible_Ctor_ByteArray_Int_Int_Boolean_Boolean ()
  510. {
  511. MemoryStream ms = new MemoryStream (new byte[1], 0, 1, true, false);
  512. Assert.IsNotNull (ms.GetBuffer ());
  513. }
  514. [Test] // bug #80205
  515. [Category ("NotWorking")]
  516. public void SerializeTest ()
  517. {
  518. MemoryStream input = new MemoryStream ();
  519. byte [] bufferIn = Encoding.UTF8.GetBytes ("some test");
  520. input.Write (bufferIn, 0, bufferIn.Length);
  521. input.Position = 0;
  522. BinaryFormatter bf = new BinaryFormatter ();
  523. MemoryStream ms = new MemoryStream ();
  524. bf.Serialize (ms, input);
  525. byte [] bufferOut = new byte [ms.Length];
  526. ms.Position = 0;
  527. ms.Read (bufferOut, 0, bufferOut.Length);
  528. Assert.AreEqual (_serialized, bufferOut);
  529. }
  530. [Test] // bug #80205
  531. [Category ("NotWorking")]
  532. public void DeserializeTest ()
  533. {
  534. MemoryStream ms = new MemoryStream ();
  535. ms.Write (_serialized, 0, _serialized.Length);
  536. ms.Position = 0;
  537. BinaryFormatter bf = new BinaryFormatter ();
  538. MemoryStream output = (MemoryStream) bf.Deserialize (ms);
  539. using (StreamReader sr = new StreamReader (output)) {
  540. Assert.AreEqual ("some test", sr.ReadToEnd ());
  541. }
  542. }
  543. private static byte [] _serialized = new byte [] {
  544. 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00,
  545. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00,
  546. 0x16, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x4f, 0x2e,
  547. 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61,
  548. 0x6d, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x5f, 0x62, 0x75, 0x66, 0x66,
  549. 0x65, 0x72, 0x07, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x09,
  550. 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x07, 0x5f,
  551. 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x09, 0x5f, 0x63, 0x61, 0x70,
  552. 0x61, 0x63, 0x69, 0x74, 0x79, 0x0b, 0x5f, 0x65, 0x78, 0x70, 0x61,
  553. 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x09, 0x5f, 0x77, 0x72, 0x69,
  554. 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x5f, 0x65, 0x78, 0x70, 0x6f,
  555. 0x73, 0x61, 0x62, 0x6c, 0x65, 0x07, 0x5f, 0x69, 0x73, 0x4f, 0x70,
  556. 0x65, 0x6e, 0x1d, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x42,
  557. 0x79, 0x52, 0x65, 0x66, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2b,
  558. 0x5f, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x07,
  559. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x08,
  560. 0x08, 0x08, 0x08, 0x01, 0x01, 0x01, 0x01, 0x09, 0x02, 0x00, 0x00,
  561. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00,
  562. 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x0a,
  563. 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x73,
  564. 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x65, 0x73, 0x74, 0x00, 0x00, 0x00,
  565. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  566. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  567. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  568. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  569. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  570. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  571. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  572. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  573. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  574. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  575. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  576. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  577. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  578. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  579. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  580. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  581. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  582. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  583. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  584. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  585. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  586. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  587. 0x00, 0x00, 0x0b };
  588. }
  589. }