2 // System.IO.StringWriter
5 // Ville Palo (vi64pa@kolumbus.fi)
10 using NUnit
.Framework
;
15 namespace MonoTests
.System
.IO
{
18 public class BinaryWriterTest
: Assertion
{
21 string TempFolder
= Path
.Combine (Path
.GetTempPath (), "MonoTests.System.IO.Tests");
24 protected void SetUp() {
25 if (Directory
.Exists (TempFolder
))
26 Directory
.Delete (TempFolder
, true);
27 Directory
.CreateDirectory (TempFolder
);
31 public void TearDown()
33 if (Directory
.Exists (TempFolder
))
34 Directory
.Delete (TempFolder
, true);
40 MemoryStream stream
= new MemoryStream ();
41 BinaryWriter writer
= new BinaryWriter (stream
);
42 AssertEquals ("test#01", true, writer
.BaseStream
.CanRead
);
43 AssertEquals ("test#02", true, writer
.BaseStream
.CanSeek
);
44 AssertEquals ("test#03", true, writer
.BaseStream
.CanWrite
);
46 writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
47 AssertEquals ("test#04", true, writer
.BaseStream
.CanRead
);
48 AssertEquals ("test#05", true, writer
.BaseStream
.CanSeek
);
49 AssertEquals ("test#06", true, writer
.BaseStream
.CanWrite
);
54 /// Throws an exception if stream is null
57 [ExpectedException(typeof(ArgumentNullException
))]
58 public void CtorNullExceptionStream ()
60 BinaryWriter reader
= new BinaryWriter (null);
64 /// Throws an exception if encoding is null
67 [ExpectedException(typeof(ArgumentNullException
))]
68 public void CtorNullExceptionStreamEncoding ()
70 MemoryStream stream
= new MemoryStream ();
71 BinaryWriter reader
= new BinaryWriter (stream
, null);
75 /// Throws an exception if stream is closed
78 [ExpectedException(typeof(ArgumentException
))]
79 public void CtorExceptionStreamClosed ()
81 MemoryStream stream
= new MemoryStream ();
83 BinaryWriter writer
= new BinaryWriter (stream
);
87 /// Throws an exception if stream does not support writing
90 [ExpectedException(typeof(ArgumentException
))]
91 public void CtorArgumentExceptionStreamCannotWrite ()
93 string path
= TempFolder
+ "/BinaryWriterTest.1";
95 FileStream stream
= null;
96 BinaryWriter reader
= null;
99 stream
= new FileStream (path
, FileMode
.OpenOrCreate
, FileAccess
.Read
);
100 reader
= new BinaryWriter (stream
);
111 public void Encoding ()
113 MemoryStream stream
= new MemoryStream ();
114 BinaryWriter writer
= new BinaryWriter (stream
);
115 writer
.Write ("t*st");
117 byte [] bytes
= stream
.GetBuffer ();
118 AssertEquals ("test#01", 4, bytes
[0]);
119 AssertEquals ("test#02", 116, bytes
[1]);
120 AssertEquals ("test#03", 42, bytes
[2]);
121 AssertEquals ("test#04", 115, bytes
[3]);
122 AssertEquals ("test#05", 116, bytes
[4]);
123 AssertEquals ("test#06", 0, bytes
[5]);
125 stream
= new MemoryStream ();
126 writer
= new BinaryWriter (stream
, new UnicodeEncoding ());
127 writer
.Write ("t*st");
129 bytes
= stream
.GetBuffer ();
130 AssertEquals ("test#07", 8, bytes
[0]);
131 AssertEquals ("test#08", 116, bytes
[1]);
132 AssertEquals ("test#09", 0, bytes
[2]);
133 AssertEquals ("test#10", 42, bytes
[3]);
134 AssertEquals ("test#11", 0, bytes
[4]);
135 AssertEquals ("test#12", 115, bytes
[5]);
136 AssertEquals ("test#13", 0, bytes
[6]);
137 AssertEquals ("test#14", 116, bytes
[7]);
138 AssertEquals ("test#15", 0, bytes
[8]);
140 stream
= new MemoryStream ();
141 writer
= new BinaryWriter (stream
, new UTF7Encoding ());
142 writer
.Write ("t*st");
144 bytes
= stream
.GetBuffer ();
145 AssertEquals ("test#16", 8, bytes
[0]);
146 AssertEquals ("test#17", 116, bytes
[1]);
147 AssertEquals ("test#18", 43, bytes
[2]);
148 AssertEquals ("test#19", 65, bytes
[3]);
149 AssertEquals ("test#21", 67, bytes
[4]);
150 AssertEquals ("test#22", 111, bytes
[5]);
151 AssertEquals ("test#23", 45, bytes
[6]);
152 AssertEquals ("test#24", 115, bytes
[7]);
153 AssertEquals ("test#25", 116, bytes
[8]);
154 AssertEquals ("test#26", 0, bytes
[9]);
155 AssertEquals ("test#27", 0, bytes
[10]);
157 stream
= new MemoryStream ();
158 writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
159 writer
.Write ("t*st");
160 bytes
= stream
.GetBuffer ();
161 AssertEquals ("test#28", 4, bytes
[0]);
162 AssertEquals ("test#29", 116, bytes
[1]);
163 AssertEquals ("test#30", 42, bytes
[2]);
164 AssertEquals ("test#31", 115, bytes
[3]);
165 AssertEquals ("test#32", 116, bytes
[4]);
166 AssertEquals ("test#33", 0, bytes
[5]);
170 [ExpectedException(typeof(ObjectDisposedException
))]
171 public void Close1 ()
173 MemoryStream stream
= new MemoryStream ();
174 BinaryWriter writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
176 writer
.Write ("Test");
180 public void Close2 ()
182 MemoryStream stream
= new MemoryStream ();
183 BinaryWriter writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
190 [ExpectedException(typeof(ObjectDisposedException
))]
191 public void Close3 ()
193 MemoryStream stream
= new MemoryStream ();
194 BinaryWriter writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
196 writer
.Seek (1, SeekOrigin
.Begin
);
200 public void Close4 ()
202 MemoryStream stream
= new MemoryStream ();
203 BinaryWriter writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
205 AssertEquals ("test#01", false, writer
.BaseStream
.CanRead
);
206 AssertEquals ("test#01", false, writer
.BaseStream
.CanWrite
);
207 AssertEquals ("test#01", false, writer
.BaseStream
.CanSeek
);
213 MemoryStream stream
= new MemoryStream ();
214 BinaryWriter writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
216 writer
.Write ("Test");
217 writer
.Seek (2, SeekOrigin
.Begin
);
219 writer
.Seek (400, SeekOrigin
.Begin
);
221 writer
.Seek (-394, SeekOrigin
.End
);
223 writer
.Seek (-2, SeekOrigin
.Current
);
226 byte [] bytes
= stream
.GetBuffer ();
227 AssertEquals ("test#01", 512, bytes
.Length
);
228 AssertEquals ("test#02", 4, bytes
[0]);
229 AssertEquals ("test#03", 84, bytes
[1]);
230 AssertEquals ("test#04", 1, bytes
[2]);
231 AssertEquals ("test#05", 45, bytes
[3]);
232 AssertEquals ("test#06", 116, bytes
[4]);
233 AssertEquals ("test#07", 0, bytes
[5]);
234 AssertEquals ("test#08", 0, bytes
[6]);
235 AssertEquals ("test#09", 0, bytes
[7]);
236 AssertEquals ("test#10", 1, bytes
[8]);
237 AssertEquals ("test#11", 45, bytes
[9]);
238 AssertEquals ("test#12", 0, bytes
[10]);
239 AssertEquals ("test#13", 0, bytes
[11]);
240 AssertEquals ("test#14", 0, bytes
[12]);
241 AssertEquals ("test#15", 1, bytes
[400]);
245 [ExpectedException(typeof(IOException
))]
246 public void SeekException ()
248 MemoryStream stream
= new MemoryStream ();
249 BinaryWriter writer
= new BinaryWriter (stream
);
251 writer
.Write ("Test");
252 writer
.Seek (-12, SeekOrigin
.Begin
);
256 public void WriteCharArray ()
258 MemoryStream stream
= new MemoryStream ();
259 BinaryWriter writer
= new BinaryWriter (stream
);
261 writer
.Write (new char [] {'m', 'o', 'n', 'o', ':', ':'}
);
262 writer
.Write (new char [] {':', ':', 'O', 'N', 'O', 'M'}
);
264 byte [] bytes
= stream
.GetBuffer ();
266 AssertEquals ("test#01", 256, bytes
.Length
);
267 AssertEquals ("test#02", 109, bytes
[0]);
268 AssertEquals ("test#03", 111, bytes
[1]);
269 AssertEquals ("test#04", 110, bytes
[2]);
270 AssertEquals ("test#05", 111, bytes
[3]);
271 AssertEquals ("test#06", 58, bytes
[4]);
272 AssertEquals ("test#07", 58, bytes
[5]);
273 AssertEquals ("test#08", 58, bytes
[6]);
274 AssertEquals ("test#09", 58, bytes
[7]);
275 AssertEquals ("test#10", 79, bytes
[8]);
276 AssertEquals ("test#11", 78, bytes
[9]);
277 AssertEquals ("test#12", 79, bytes
[10]);
278 AssertEquals ("test#13", 77, bytes
[11]);
279 AssertEquals ("test#14", 0, bytes
[12]);
280 AssertEquals ("test#15", 0, bytes
[13]);
284 public void WriteByteArray ()
286 MemoryStream stream
= new MemoryStream ();
287 BinaryWriter writer
= new BinaryWriter (stream
);
289 writer
.Write (new byte [] {1, 2, 3, 4, 5, 6}
);
290 writer
.Write (new byte [] {6, 5, 4, 3, 2, 1}
);
292 byte [] bytes
= stream
.GetBuffer ();
293 AssertEquals ("test#01", 256, bytes
.Length
);
294 AssertEquals ("test#02", 1, bytes
[0]);
295 AssertEquals ("test#03", 2, bytes
[1]);
296 AssertEquals ("test#04", 3, bytes
[2]);
297 AssertEquals ("test#05", 4, bytes
[3]);
298 AssertEquals ("test#06", 5, bytes
[4]);
299 AssertEquals ("test#07", 6, bytes
[5]);
300 AssertEquals ("test#08", 6, bytes
[6]);
301 AssertEquals ("test#09", 5, bytes
[7]);
302 AssertEquals ("test#10", 4, bytes
[8]);
303 AssertEquals ("test#11", 3, bytes
[9]);
304 AssertEquals ("test#12", 2, bytes
[10]);
305 AssertEquals ("test#13", 1, bytes
[11]);
306 AssertEquals ("test#14", 0, bytes
[12]);
307 AssertEquals ("test#15", 0, bytes
[13]);
312 public void WriteInt ()
316 long l
= 9999999999999;
318 MemoryStream stream
= new MemoryStream ();
319 BinaryWriter writer
= new BinaryWriter (stream
);
322 bytes
= stream
.GetBuffer ();
323 AssertEquals ("test#01", 256, bytes
.Length
);
324 AssertEquals ("test#02", 64, bytes
[0]);
325 AssertEquals ("test#03", 0, bytes
[1]);
328 bytes
= stream
.GetBuffer ();
329 AssertEquals ("test#04", 256, bytes
.Length
);
330 AssertEquals ("test#05", 64, bytes
[0]);
331 AssertEquals ("test#06", 0, bytes
[1]);
332 AssertEquals ("test#07", 64, bytes
[2]);
333 AssertEquals ("test#08", 109, bytes
[3]);
334 AssertEquals ("test#09", 218, bytes
[4]);
335 AssertEquals ("test#10", 3, bytes
[5]);
336 AssertEquals ("test#11", 0, bytes
[6]);
339 bytes
= stream
.GetBuffer ();
340 AssertEquals ("test#12", 256, bytes
.Length
);
341 AssertEquals ("test#13", 255, bytes
[6]);
342 AssertEquals ("test#14", 159, bytes
[7]);
343 AssertEquals ("test#15", 114, bytes
[8]);
344 AssertEquals ("test#16", 78, bytes
[9]);
345 AssertEquals ("test#17", 24, bytes
[10]);
346 AssertEquals ("test#18", 9, bytes
[11]);
347 AssertEquals ("test#19", 0, bytes
[12]);
351 public void WriteDecimal ()
353 MemoryStream stream
= new MemoryStream ();
354 BinaryWriter writer
= new BinaryWriter (stream
);
356 decimal d1
= 19932143214312.32M
;
357 decimal d2
= -8995034512332157M
;
361 byte [] bytes
= stream
.GetBuffer ();
363 AssertEquals ("test#01", 256, bytes
.Length
);
364 AssertEquals ("test#02", 192, bytes
[0]);
365 AssertEquals ("test#03", 18, bytes
[1]);
366 AssertEquals ("test#04", 151, bytes
[2]);
367 AssertEquals ("test#05", 95, bytes
[3]);
368 AssertEquals ("test#06", 209, bytes
[4]);
369 AssertEquals ("test#07", 20, bytes
[5]);
370 AssertEquals ("test#08", 7, bytes
[6]);
371 AssertEquals ("test#09", 0, bytes
[7]);
372 AssertEquals ("test#10", 0, bytes
[8]);
373 AssertEquals ("test#11", 0, bytes
[9]);
374 AssertEquals ("test#12", 0, bytes
[10]);
375 AssertEquals ("test#13", 0, bytes
[11]);
376 AssertEquals ("test#14", 0, bytes
[12]);
377 AssertEquals ("test#15", 0, bytes
[13]);
378 AssertEquals ("test#16", 2, bytes
[14]);
379 AssertEquals ("test#17", 0, bytes
[15]);
380 AssertEquals ("test#18", 125, bytes
[16]);
381 AssertEquals ("test#19", 149, bytes
[17]);
382 AssertEquals ("test#20", 217, bytes
[18]);
383 AssertEquals ("test#21", 172, bytes
[19]);
384 AssertEquals ("test#22", 239, bytes
[20]);
385 AssertEquals ("test#23", 244, bytes
[21]);
386 AssertEquals ("test#24", 31, bytes
[22]);
387 AssertEquals ("test#25", 0, bytes
[23]);
388 AssertEquals ("test#26", 0, bytes
[24]);
389 AssertEquals ("test#27", 0, bytes
[25]);
390 AssertEquals ("test#28", 0, bytes
[26]);
391 AssertEquals ("test#29", 0, bytes
[27]);
392 AssertEquals ("test#30", 0, bytes
[28]);
393 AssertEquals ("test#31", 0, bytes
[29]);
394 AssertEquals ("test#32", 0, bytes
[30]);
395 AssertEquals ("test#33", 128, bytes
[31]);
396 AssertEquals ("test#34", 0, bytes
[32]);
397 AssertEquals ("test#35", 0, bytes
[33]);
398 AssertEquals ("test#36", 0, bytes
[34]);
399 AssertEquals ("test#37", 0, bytes
[35]);
400 AssertEquals ("test#38", 0, bytes
[36]);
401 AssertEquals ("test#39", 0, bytes
[37]);
402 AssertEquals ("test#40", 0, bytes
[38]);
403 AssertEquals ("test#41", 0, bytes
[39]);
404 AssertEquals ("test#42", 0, bytes
[40]);
405 AssertEquals ("test#43", 0, bytes
[41]);
406 AssertEquals ("test#44", 0, bytes
[42]);
407 AssertEquals ("test#45", 0, bytes
[43]);
408 AssertEquals ("test#46", 0, bytes
[44]);
409 AssertEquals ("test#47", 0, bytes
[45]);
410 AssertEquals ("test#48", 0, bytes
[46]);
414 public void WriteFloat ()
416 MemoryStream stream
= new MemoryStream ();
417 BinaryWriter writer
= new BinaryWriter (stream
);
418 float f1
= 1.543E+10F
;
419 float f2
= -9.6534E-6f
;
423 byte [] bytes
= stream
.GetBuffer ();
424 AssertEquals ("test#01", 256, bytes
.Length
);
425 AssertEquals ("test#02", 199, bytes
[0]);
426 AssertEquals ("test#03", 236, bytes
[1]);
427 AssertEquals ("test#04", 101, bytes
[2]);
428 AssertEquals ("test#05", 80, bytes
[3]);
429 AssertEquals ("test#06", 10, bytes
[4]);
430 AssertEquals ("test#07", 245, bytes
[5]);
431 AssertEquals ("test#08", 33, bytes
[6]);
432 AssertEquals ("test#09", 183, bytes
[7]);
433 AssertEquals ("test#10", 0, bytes
[8]);
434 AssertEquals ("test#11", 0, bytes
[9]);
438 public void WriteDouble ()
440 MemoryStream stream
= new MemoryStream ();
441 BinaryWriter writer
= new BinaryWriter (stream
);
442 double d1
= 1.543E+100;
443 double d2
= -9.6534E-129;
447 byte [] bytes
= stream
.GetBuffer ();
448 AssertEquals ("test#01", 256, bytes
.Length
);
449 AssertEquals ("test#02", 49, bytes
[0]);
450 AssertEquals ("test#03", 69, bytes
[1]);
451 AssertEquals ("test#04", 15, bytes
[2]);
452 AssertEquals ("test#05", 157, bytes
[3]);
453 AssertEquals ("test#06", 211, bytes
[4]);
454 AssertEquals ("test#07", 55, bytes
[5]);
455 AssertEquals ("test#08", 188, bytes
[6]);
456 AssertEquals ("test#09", 84, bytes
[7]);
457 AssertEquals ("test#10", 76, bytes
[8]);
458 AssertEquals ("test#11", 59, bytes
[9]);
459 AssertEquals ("test#12", 59, bytes
[10]);
460 AssertEquals ("test#13", 60, bytes
[11]);
461 AssertEquals ("test#14", 4, bytes
[12]);
462 AssertEquals ("test#15", 196, bytes
[13]);
463 AssertEquals ("test#16", 90, bytes
[14]);
464 AssertEquals ("test#17", 165, bytes
[15]);
465 AssertEquals ("test#18", 0, bytes
[16]);
469 public void WriteByteAndChar ()
475 MemoryStream stream
= new MemoryStream ();
476 BinaryWriter writer
= new BinaryWriter (stream
);
482 byte [] bytes
= stream
.GetBuffer ();
483 AssertEquals ("test#01", 256, bytes
.Length
);
484 AssertEquals ("test#02", 12, bytes
[0]);
485 AssertEquals ("test#03", 45, bytes
[1]);
486 AssertEquals ("test#04", 64, bytes
[2]);
487 AssertEquals ("test#05", 77, bytes
[3]);
488 AssertEquals ("test#06", 0, bytes
[4]);
492 public void WriteString ()
494 MemoryStream stream
= new MemoryStream ();
495 BinaryWriter writer
= new BinaryWriter (stream
);
501 byte [] bytes
= stream
.GetBuffer ();
502 AssertEquals ("test#01", 256, bytes
.Length
);
503 AssertEquals ("test#02", 3, bytes
[0]);
504 AssertEquals ("test#03", 97, bytes
[1]);
505 AssertEquals ("test#04", 98, bytes
[2]);
506 AssertEquals ("test#05", 99, bytes
[3]);
507 AssertEquals ("test#06", 4, bytes
[4]);
508 AssertEquals ("test#07", 68, bytes
[5]);
509 AssertEquals ("test#08", 101, bytes
[6]);
510 AssertEquals ("test#09", 70, bytes
[7]);
511 AssertEquals ("test#10", 10, bytes
[8]);
512 AssertEquals ("test#11", 0, bytes
[9]);
515 private void DeleteFile (string path
)
517 if (File
.Exists (path
))