1 // FileInfoTest.cs - NUnit Test Cases for System.IO.FileInfo class
3 // Ville Palo (vi64pa@koti.soon.fi)
10 using System
.Runtime
.Serialization
;
11 using System
.Runtime
.Serialization
.Formatters
.Binary
;
13 using NUnit
.Framework
;
15 namespace MonoTests
.System
.IO
18 public class FileInfoTest
20 string TempFolder
= Path
.Combine (Path
.GetTempPath (), "MonoTests.System.IO.Tests");
21 static readonly char DSC
= Path
.DirectorySeparatorChar
;
26 DeleteDirectory (TempFolder
);
27 Directory
.CreateDirectory (TempFolder
);
31 public void TearDown ()
33 DeleteDirectory (TempFolder
);
36 [Test
] // ctor (String)
37 public void Constructor1 ()
39 string path
= TempFolder
+ DSC
+ "FIT.Ctr.Test";
42 FileInfo info
= new FileInfo (path
);
43 Assert
.IsTrue (info
.DirectoryName
.EndsWith (".Tests"), "#1");
44 Assert
.IsFalse (info
.Exists
, "#2");
45 Assert
.AreEqual (".Test", info
.Extension
, "#3");
46 Assert
.AreEqual ("FIT.Ctr.Test", info
.Name
, "#4");
49 [Test
] // ctor (String)
50 public void Constructor1_FileName_Null ()
55 } catch (ArgumentNullException ex
) {
56 Assert
.AreEqual (typeof (ArgumentNullException
), ex
.GetType (), "#2");
57 Assert
.IsNull (ex
.InnerException
, "#3");
58 Assert
.IsNotNull (ex
.Message
, "#4");
59 Assert
.AreEqual ("fileName", ex
.ParamName
, "#5");
63 [Test
] // ctor (String)
64 public void Constructor1_FileName_Empty ()
67 new FileInfo (string.Empty
);
69 } catch (ArgumentException ex
) {
70 // Empty file name is not legal
71 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
72 Assert
.IsNull (ex
.InnerException
, "#3");
73 Assert
.IsNotNull (ex
.Message
, "#4");
74 Assert
.IsNull (ex
.ParamName
, "#5");
78 [Test
] // ctor (String)
79 public void Constructor1_FileName_InvalidPathChars ()
81 string path
= string.Empty
;
82 foreach (char c
in Path
.InvalidPathChars
)
86 } catch (ArgumentException ex
) {
87 // The path contains illegal characters
88 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
89 Assert
.IsNull (ex
.InnerException
, "#3");
90 Assert
.IsNotNull (ex
.Message
, "#4");
91 Assert
.IsNull (ex
.ParamName
, "#5");
95 [Test
] // ctor (String)
96 public void Constructor1_FileName_Whitespace ()
101 } catch (ArgumentException ex
) {
102 // The path is not of a legal form
103 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
104 Assert
.IsNull (ex
.InnerException
, "#3");
105 Assert
.IsNotNull (ex
.Message
, "#4");
106 Assert
.IsNull (ex
.ParamName
, "#5");
111 public void DirectoryTest ()
113 string path
= TempFolder
+ DSC
+ "FIT.Directory.Test";
116 FileInfo info
= new FileInfo (path
);
117 DirectoryInfo dir
= info
.Directory
;
118 Assert
.AreEqual ("MonoTests.System.IO.Tests", dir
.Name
);
122 public void Exists ()
124 string path
= TempFolder
+ DSC
+ "FIT.Exists.Test";
128 FileInfo info
= new FileInfo (path
);
129 Assert
.IsFalse (info
.Exists
, "#1");
131 File
.Create (path
).Close ();
132 Assert
.IsFalse (info
.Exists
, "#2");
133 info
= new FileInfo (path
);
134 Assert
.IsTrue (info
.Exists
, "#3");
135 info
= new FileInfo (TempFolder
);
136 Assert
.IsFalse (info
.Exists
, "#4");
144 [Category ("NotWorking")]
145 public void IsReadOnly ()
147 string path
= TempFolder
+ DSC
+ "FIT.IsReadOnly.Test";
151 using (FileStream stream
= File
.Create (path
)) {
152 stream
.WriteByte (12);
156 FileInfo info1
= new FileInfo (path
);
157 Assert
.IsFalse (info1
.IsReadOnly
, "#1");
159 FileInfo info2
= new FileInfo (path
);
160 info2
.IsReadOnly
= true;
161 Assert
.IsFalse (info1
.IsReadOnly
, "#2");
162 Assert
.IsTrue (info2
.IsReadOnly
, "#3");
164 FileInfo info3
= new FileInfo (path
);
165 Assert
.IsTrue (info3
.IsReadOnly
, "#4");
166 info3
.IsReadOnly
= false;
167 Assert
.IsFalse (info1
.IsReadOnly
, "#4");
168 Assert
.IsTrue (info2
.IsReadOnly
, "#5");
169 Assert
.IsFalse (info3
.IsReadOnly
, "#6");
171 File
.SetAttributes (path
, FileAttributes
.Normal
);
178 public void Length ()
180 string path
= TempFolder
+ DSC
+ "FIT.Length.Test";
184 FileStream stream
= File
.Create (path
);
185 FileInfo info
= new FileInfo (path
);
186 Assert
.AreEqual (0, info
.Length
, "#1");
187 stream
.WriteByte (12);
189 Assert
.AreEqual (0, info
.Length
, "#2");
190 info
= new FileInfo (path
);
191 Assert
.AreEqual (1, info
.Length
, "#3");
199 public void Length_FileDoesNotExist ()
201 string path
= TempFolder
+ DSC
+ "FIT.LengthException.Test";
203 FileInfo info
= new FileInfo (path
);
205 long l
= info
.Length
;
206 Assert
.Fail ("#1:" + l
);
207 } catch (FileNotFoundException ex
) {
208 Assert
.AreEqual (typeof (FileNotFoundException
), ex
.GetType (), "#2");
209 Assert
.AreEqual (path
, ex
.FileName
, "#3");
210 Assert
.IsNull (ex
.InnerException
, "#4");
211 Assert
.IsNotNull (ex
.Message
, "#5");
216 public void AppendText ()
218 string path
= TempFolder
+ DSC
+ "FIT.AppendText.Test";
222 FileInfo info
= new FileInfo (path
);
223 Assert
.IsFalse (info
.Exists
, "#1");
225 StreamWriter writer
= info
.AppendText ();
226 info
= new FileInfo (path
);
227 Assert
.IsTrue (info
.Exists
, "#2");
229 writer
.Write ("aaa");
233 Assert
.AreEqual (0, info
.Length
, "#3");
234 info
= new FileInfo (path
);
235 Assert
.AreEqual (3, info
.Length
, "#4");
241 [Test
] // CopyTo (String)
242 public void CopyTo1 ()
244 string path1
= TempFolder
+ DSC
+ "FIT.CopyTo.Source.Test";
245 string path2
= TempFolder
+ DSC
+ "FIT.CopyTo.Dest.Test";
249 File
.Create (path1
).Close ();
251 FileInfo info
= new FileInfo (path1
);
252 Assert
.IsTrue (info
.Exists
, "#1");
254 FileInfo info2
= info
.CopyTo (path2
);
255 info
= new FileInfo (path1
);
256 Assert
.IsTrue (info2
.Exists
, "#2");
263 [Test
] // CopyTo (String)
264 public void CopyTo1_DestFileName_AlreadyExists ()
266 string path1
= TempFolder
+ DSC
+ "FIT.CopyToException.Source.Test";
267 string path2
= TempFolder
+ DSC
+ "FIT.CopyToException.Dest.Test";
272 File
.Create (path1
).Close ();
273 File
.Create (path2
).Close ();
274 FileInfo info
= new FileInfo (path1
);
278 } catch (IOException ex
) {
279 // The file '...' already exists.
280 Assert
.AreEqual (typeof (IOException
), ex
.GetType (), "#2");
281 Assert
.IsNull (ex
.InnerException
, "#3");
282 Assert
.IsNotNull (ex
.Message
, "#4");
283 Assert
.IsTrue (ex
.Message
.IndexOf (path2
) != -1, "#5");
291 [Test
] // CopyTo (String)
292 public void CopyTo1_DestFileName_Null ()
294 string path
= TempFolder
+ DSC
+ "FIT.CopyToArgumentNullException.Test";
297 File
.Create (path
).Close ();
298 FileInfo info
= new FileInfo (path
);
302 } catch (ArgumentNullException ex
) {
303 Assert
.AreEqual (typeof (ArgumentNullException
), ex
.GetType (), "#2");
304 Assert
.IsNull (ex
.InnerException
, "#3");
305 Assert
.IsNotNull (ex
.Message
, "#4");
306 Assert
.AreEqual ("destFileName", ex
.ParamName
, "#5");
313 [Test
] // CopyTo (String)
314 public void CopyTo1_DestFileName_Empty ()
316 string path
= TempFolder
+ DSC
+ "FIT.CopyToArgument1Exception.Test";
320 File
.Create (path
).Close ();
321 FileInfo info
= new FileInfo (path
);
323 info
.CopyTo (string.Empty
);
325 } catch (ArgumentException ex
) {
326 // Empty file name is not legal
327 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
328 Assert
.IsNull (ex
.InnerException
, "#3");
329 Assert
.IsNotNull (ex
.Message
, "#4");
330 Assert
.AreEqual ("destFileName", ex
.ParamName
, "#5");
337 [Test
] // CopyTo (String)
338 public void CopyTo1_DestFileName_Whitespace ()
340 string path
= TempFolder
+ DSC
+ "FIT.CopyToArgument2Exception.Test";
344 File
.Create (path
).Close ();
345 FileInfo info
= new FileInfo (path
);
349 } catch (ArgumentException ex
) {
350 // The path is not of a legal form
351 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
352 Assert
.IsNull (ex
.InnerException
, "#3");
353 Assert
.IsNotNull (ex
.Message
, "#4");
354 Assert
.IsNull (ex
.ParamName
, "#5");
361 [Test
] // CopyTo (String)
362 public void CopyTo1_DestFileName_InvalidPathChars ()
364 string path
= TempFolder
+ DSC
+ "FIT.CopyToArgument4Exception.Test";
365 string path2
= string.Empty
;
369 File
.Create (path
).Close ();
370 FileInfo info
= new FileInfo (path
);
371 foreach (char c
in Path
.InvalidPathChars
)
376 } catch (ArgumentException ex
) {
377 // Illegal characters in path
378 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
379 Assert
.IsNull (ex
.InnerException
, "#3");
380 Assert
.IsNotNull (ex
.Message
, "#4");
381 Assert
.IsNull (ex
.ParamName
, "#5");
388 [Test
] // CopyTo (String, Boolean)
389 public void CopyTo2 ()
391 string path1
= TempFolder
+ DSC
+ "FIT.CopyTo2.Source.Test";
392 string path2
= TempFolder
+ DSC
+ "FIT.CopyTo2.Dest.Test";
396 File
.Create (path1
).Close ();
397 File
.Create (path2
).Close ();
398 FileInfo info
= new FileInfo (path1
);
400 FileInfo info2
= info
.CopyTo (path2
, true);
401 info
= new FileInfo (path1
);
402 Assert
.IsTrue (info
.Exists
, "#1");
403 Assert
.IsTrue (info2
.Exists
, "#2");
410 [Test
] // CopyTo (String, Boolean)
411 public void CopyTo2_DestFileName_AlreadyExists ()
413 string path1
= TempFolder
+ DSC
+ "FIT.CopyToException.Source.Test";
414 string path2
= TempFolder
+ DSC
+ "FIT.CopyToException.Dest.Test";
419 File
.Create (path1
).Close ();
420 File
.Create (path2
).Close ();
421 FileInfo info
= new FileInfo (path1
);
423 info
.CopyTo (path2
, false);
425 } catch (IOException ex
) {
426 // The file '...' already exists.
427 Assert
.AreEqual (typeof (IOException
), ex
.GetType (), "#2");
428 Assert
.IsNull (ex
.InnerException
, "#3");
429 Assert
.IsNotNull (ex
.Message
, "#4");
430 Assert
.IsTrue (ex
.Message
.IndexOf (path2
) != -1, "#5");
438 [Test
] // CopyTo (String, Boolean)
439 public void CopyTo2_DestFileName_Null ()
441 string path
= TempFolder
+ DSC
+ "FIT.CopyToArgumentNullException.Test";
444 File
.Create (path
).Close ();
445 FileInfo info
= new FileInfo (path
);
447 info
.CopyTo (null, false);
449 } catch (ArgumentNullException ex
) {
450 Assert
.AreEqual (typeof (ArgumentNullException
), ex
.GetType (), "#2");
451 Assert
.IsNull (ex
.InnerException
, "#3");
452 Assert
.IsNotNull (ex
.Message
, "#4");
453 Assert
.AreEqual ("destFileName", ex
.ParamName
, "#5");
460 [Test
] // CopyTo (String, Boolean)
461 public void CopyTo2_DestFileName_Empty ()
463 string path
= TempFolder
+ DSC
+ "FIT.CopyToArgument1Exception.Test";
467 File
.Create (path
).Close ();
468 FileInfo info
= new FileInfo (path
);
470 info
.CopyTo (string.Empty
, false);
472 } catch (ArgumentException ex
) {
473 // Empty file name is not legal
474 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
475 Assert
.IsNull (ex
.InnerException
, "#3");
476 Assert
.IsNotNull (ex
.Message
, "#4");
477 Assert
.AreEqual ("destFileName", ex
.ParamName
, "#5");
484 [Test
] // CopyTo (String, Boolean)
485 public void CopyTo2_DestFileName_Whitespace ()
487 string path
= TempFolder
+ DSC
+ "FIT.CopyToArgument2Exception.Test";
491 File
.Create (path
).Close ();
492 FileInfo info
= new FileInfo (path
);
494 info
.CopyTo (" ", false);
496 } catch (ArgumentException ex
) {
497 // The path is not of a legal form
498 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
499 Assert
.IsNull (ex
.InnerException
, "#3");
500 Assert
.IsNotNull (ex
.Message
, "#4");
501 Assert
.IsNull (ex
.ParamName
, "#5");
508 [Test
] // CopyTo (String, Boolean)
509 public void CopyTo2_DestFileName_InvalidPathChars ()
511 string path
= TempFolder
+ DSC
+ "FIT.CopyToArgument4Exception.Test";
512 string path2
= string.Empty
;
516 File
.Create (path
).Close ();
517 FileInfo info
= new FileInfo (path
);
518 foreach (char c
in Path
.InvalidPathChars
)
521 info
.CopyTo (path2
, false);
523 } catch (ArgumentException ex
) {
524 // Illegal characters in path
525 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
526 Assert
.IsNull (ex
.InnerException
, "#3");
527 Assert
.IsNotNull (ex
.Message
, "#4");
528 Assert
.IsNull (ex
.ParamName
, "#5");
536 public void Create ()
538 string path
= TempFolder
+ DSC
+ "FIT.Create.Test";
542 FileInfo info
= new FileInfo (path
);
543 Assert
.IsFalse (info
.Exists
, "#1");
544 FileStream stream
= info
.Create ();
545 Assert
.IsFalse (info
.Exists
, "#2");
546 info
= new FileInfo (path
);
547 Assert
.IsTrue (info
.Exists
, "#3");
548 Assert
.IsTrue (stream
.CanRead
, "#4");
549 Assert
.IsTrue (stream
.CanWrite
, "#5");
550 Assert
.IsTrue (stream
.CanSeek
, "#6");
558 public void CreateText ()
560 string path
= TempFolder
+ DSC
+ "FIT.CreateText.Test";
564 FileInfo info
= new FileInfo (path
);
565 Assert
.IsFalse (info
.Exists
, "#1");
566 StreamWriter writer
= info
.CreateText ();
567 writer
.WriteLine ("test");
569 info
= new FileInfo (path
);
570 Assert
.IsTrue (info
.Exists
, "#2");
577 public void CreateText_Directory ()
579 FileInfo info
= new FileInfo (TempFolder
);
583 } catch (UnauthorizedAccessException ex
) {
584 Assert
.AreEqual (typeof (UnauthorizedAccessException
), ex
.GetType (), "#2");
585 Assert
.IsNull (ex
.InnerException
, "#3");
586 Assert
.IsNotNull (ex
.Message
, "#4");
591 public void Delete ()
593 string path
= TempFolder
+ DSC
+ "FIT.Delete.Test";
597 FileInfo info
= new FileInfo (path
);
598 Assert
.IsFalse (info
.Exists
, "#1");
599 info
.Create ().Close ();
600 info
= new FileInfo (path
);
601 Assert
.IsTrue (info
.Exists
, "#2");
603 Assert
.IsTrue (info
.Exists
, "#3");
604 info
= new FileInfo (path
);
605 Assert
.IsFalse (info
.Exists
, "#4");
612 public void Delete_Directory ()
614 FileInfo info
= new FileInfo (TempFolder
);
618 } catch (UnauthorizedAccessException ex
) {
619 Assert
.AreEqual (typeof (UnauthorizedAccessException
), ex
.GetType (), "#2");
620 Assert
.IsNull (ex
.InnerException
, "#3");
621 Assert
.IsNotNull (ex
.Message
, "#4");
626 public void MoveTo ()
628 string path1
= TempFolder
+ DSC
+ "FIT.MoveTo.Source.Test";
629 string path2
= TempFolder
+ DSC
+ "FIT.MoveTo.Dest.Test";
634 File
.Create (path1
).Close ();
635 FileInfo info1
= new FileInfo (path1
);
636 FileInfo info2
= new FileInfo (path2
);
637 Assert
.IsTrue (info1
.Exists
, "#A1");
638 Assert
.AreEqual (path1
, info1
.FullName
, "#A2");
639 Assert
.IsFalse (info2
.Exists
, "#A3");
640 Assert
.AreEqual (path2
, info2
.FullName
, "#A4");
642 info1
.MoveTo (path2
);
643 info2
= new FileInfo (path2
);
644 Assert
.IsTrue (info1
.Exists
, "#B1");
645 Assert
.AreEqual (path2
, info1
.FullName
, "#B2");
646 Assert
.IsTrue (info2
.Exists
, "#B3");
647 Assert
.AreEqual (path2
, info2
.FullName
, "#B4");
655 public void MoveTo_DestFileName_AlreadyExists ()
657 string sourceFile
= TempFolder
+ DSC
+ "FIT.MoveTo.Source.Test";
661 // move to same directory
662 File
.Create (sourceFile
).Close ();
663 info
= new FileInfo (sourceFile
);
665 info
.MoveTo (TempFolder
);
667 } catch (IOException ex
) {
668 // Cannot create a file when that file already exists
669 Assert
.AreEqual (typeof (IOException
), ex
.GetType (), "#A2");
670 Assert
.IsNull (ex
.InnerException
, "#A3");
671 Assert
.IsNotNull (ex
.Message
, "#A4");
672 Assert
.IsFalse (ex
.Message
.IndexOf (sourceFile
) != -1, "#A5");
673 Assert
.IsFalse (ex
.Message
.IndexOf (TempFolder
) != -1, "#A6");
675 DeleteFile (sourceFile
);
678 // move to exist file
679 File
.Create (sourceFile
).Close ();
680 destFile
= TempFolder
+ DSC
+ "FIT.MoveTo.Dest.Test";
681 File
.Create (destFile
).Close ();
682 info
= new FileInfo (sourceFile
);
684 info
.MoveTo (destFile
);
686 } catch (IOException ex
) {
687 // Cannot create a file when that file already exists
688 Assert
.AreEqual (typeof (IOException
), ex
.GetType (), "#B2");
689 Assert
.IsNull (ex
.InnerException
, "#B3");
690 Assert
.IsNotNull (ex
.Message
, "#B4");
691 Assert
.IsFalse (ex
.Message
.IndexOf (sourceFile
) != -1, "#B5");
692 Assert
.IsFalse (ex
.Message
.IndexOf (destFile
) != -1, "#B6");
694 DeleteFile (sourceFile
);
695 DeleteFile (destFile
);
698 // move to existing directory
699 File
.Create (sourceFile
).Close ();
700 destFile
= TempFolder
+ Path
.DirectorySeparatorChar
+ "bar";
701 Directory
.CreateDirectory (destFile
);
702 info
= new FileInfo (sourceFile
);
704 info
.MoveTo (destFile
);
706 } catch (IOException ex
) {
707 // Cannot create a file when that file already exists
708 Assert
.AreEqual (typeof (IOException
), ex
.GetType (), "#C2");
709 Assert
.IsNull (ex
.InnerException
, "#C3");
710 Assert
.IsNotNull (ex
.Message
, "#C4");
711 Assert
.IsFalse (ex
.Message
.IndexOf (sourceFile
) != -1, "#C5");
712 Assert
.IsFalse (ex
.Message
.IndexOf (destFile
) != -1, "#C6");
714 DeleteFile (sourceFile
);
715 DeleteDirectory (destFile
);
720 public void MoveTo_DestFileName_DirectoryDoesNotExist ()
722 string sourceFile
= TempFolder
+ Path
.DirectorySeparatorChar
+ "foo";
723 string destFile
= Path
.Combine (Path
.Combine (TempFolder
, "doesnotexist"), "b");
724 DeleteFile (sourceFile
);
726 File
.Create (sourceFile
).Close ();
727 FileInfo info
= new FileInfo (sourceFile
);
729 info
.MoveTo (destFile
);
731 } catch (DirectoryNotFoundException ex
) {
732 // Could not find a part of the path
733 Assert
.AreEqual (typeof (DirectoryNotFoundException
), ex
.GetType (), "#2");
734 Assert
.IsNull (ex
.InnerException
, "#3");
735 Assert
.IsNotNull (ex
.Message
, "#4");
738 DeleteFile (sourceFile
);
743 public void MoveTo_DestFileName_Null ()
745 string path
= TempFolder
+ DSC
+ "FIT.MoveToArgumentNullException.Test";
749 File
.Create (path
).Close ();
750 FileInfo info
= new FileInfo (path
);
754 } catch (ArgumentNullException ex
) {
755 Assert
.AreEqual (typeof (ArgumentNullException
), ex
.GetType (), "#2");
756 Assert
.IsNull (ex
.InnerException
, "#3");
757 Assert
.IsNotNull (ex
.Message
, "#4");
758 Assert
.AreEqual ("destFileName", ex
.ParamName
, "#5");
766 public void MoveTo_DestFileName_Empty ()
768 string path
= TempFolder
+ DSC
+ "FIT.MoveToArgumentException.Test";
772 File
.Create (path
).Close ();
773 FileInfo info
= new FileInfo (path
);
775 info
.MoveTo (string.Empty
);
777 } catch (ArgumentException ex
) {
778 // Empty file name is not legal
779 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
780 Assert
.IsNull (ex
.InnerException
, "#3");
781 Assert
.IsNotNull (ex
.Message
, "#4");
782 Assert
.AreEqual ("destFileName", ex
.ParamName
, "#5");
790 public void MoveTo_DestFileName_Whitespace ()
792 string path
= TempFolder
+ DSC
+ "FIT.MoveToArgumentException.Test";
796 File
.Create (path
).Close ();
797 FileInfo info
= new FileInfo (path
);
801 } catch (ArgumentException ex
) {
802 // The path is not of a legal form
803 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
804 Assert
.IsNull (ex
.InnerException
, "#3");
805 Assert
.IsNotNull (ex
.Message
, "#4");
806 Assert
.IsNull (ex
.ParamName
, "#5");
814 public void MoveTo_FileDoesNotExist ()
816 string path1
= TempFolder
+ DSC
+ "FIT.MoveToFileNotFoundException.Src";
817 string path2
= TempFolder
+ DSC
+ "FIT.MoveToFileNotFoundException.Dst";
822 FileInfo info
= new FileInfo (path1
);
826 } catch (FileNotFoundException ex
) {
827 // Unable to find the specified file
828 Assert
.AreEqual (typeof (FileNotFoundException
), ex
.GetType (), "#2");
829 Assert
.IsNull (ex
.FileName
, "#2");
830 Assert
.IsNull (ex
.InnerException
, "#3");
831 Assert
.IsNotNull (ex
.Message
, "#4");
840 public void MoveTo_Same ()
842 string path
= TempFolder
+ DSC
+ "FIT.MoveToSame.Test";
846 File
.Create (path
).Close ();
847 FileInfo info
= new FileInfo (path
);
849 Assert
.IsTrue (info
.Exists
, "#1");
850 Assert
.IsTrue (File
.Exists (path
), "#2");
858 public void Replace1 ()
860 string path1
= TempFolder
+ DSC
+ "FIT.Replace.Source.Test";
861 string path2
= TempFolder
+ DSC
+ "FIT.Replace.Dest.Test";
862 string path3
= TempFolder
+ DSC
+ "FIT.Replace.Back.Test";
868 File
.Create (path1
).Close ();
869 File
.Create (path2
).Close ();
870 File
.Create (path3
).Close ();
871 FileInfo info
= new FileInfo (path1
);
872 Assert
.IsTrue (info
.Exists
, "#1");
873 FileInfo info2
= info
.Replace (path2
, path3
);
874 Assert
.IsTrue (info2
.Exists
, "#2");
875 FileInfo info3
= new FileInfo (path3
);
876 Assert
.IsTrue (info3
.Exists
, "#3");
884 public void Replace1_Backup_Null ()
886 string path1
= TempFolder
+ DSC
+ "FIT.Replace.Source.Test";
887 string path2
= TempFolder
+ DSC
+ "FIT.Replace.Dest.Test";
892 File
.Create (path1
).Close ();
893 File
.Create (path2
).Close ();
894 FileInfo info
= new FileInfo (path1
);
895 Assert
.IsTrue (info
.Exists
, "#1");
896 FileInfo info2
= info
.Replace (path2
, null);
897 Assert
.IsTrue (info2
.Exists
, "#2");
898 info
= new FileInfo (path1
);
899 Assert
.IsFalse (info
.Exists
, "#3");
906 public void Replace1_DestFileName_Null ()
908 string path1
= TempFolder
+ DSC
+ "FIT.Replace.Source.Test";
912 File
.Create (path1
).Close ();
913 FileInfo info
= new FileInfo (path1
);
914 info
.Replace (null, null);
916 } catch (ArgumentNullException ex
) {
917 Assert
.AreEqual (typeof (ArgumentNullException
), ex
.GetType (), "#2");
918 Assert
.IsNull (ex
.InnerException
, "#3");
919 Assert
.IsNotNull (ex
.Message
, "#4");
927 public void Replace1_DestFileName_Empty ()
929 string path1
= TempFolder
+ DSC
+ "FIT.Replace.Source.Test";
933 File
.Create (path1
).Close ();
934 FileInfo info
= new FileInfo (path1
);
935 info
.Replace (string.Empty
, null);
937 } catch (ArgumentException ex
) {
938 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
939 Assert
.IsNull (ex
.InnerException
, "#3");
940 Assert
.IsNotNull (ex
.Message
, "#4");
948 public void Replace1_DestFileName_WhiteSpace ()
950 string path1
= TempFolder
+ DSC
+ "FIT.Replace.Source.Test";
954 File
.Create (path1
).Close ();
955 FileInfo info
= new FileInfo (path1
);
956 info
.Replace (" ", null);
958 } catch (ArgumentException ex
) {
959 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
960 Assert
.IsNull (ex
.InnerException
, "#3");
961 Assert
.IsNotNull (ex
.Message
, "#4");
969 public void Replace1_DestFileName_InvalidPathChars ()
971 string path1
= TempFolder
+ DSC
+ "FIT.Replace.Source.Test";
972 string path2
= string.Empty
;
976 File
.Create (path1
).Close ();
977 FileInfo info
= new FileInfo (path1
);
978 foreach (char c
in Path
.InvalidPathChars
)
981 info
.Replace (path2
, null);
983 } catch (ArgumentException ex
) {
984 // Illegal characters in path
985 Assert
.AreEqual (typeof (ArgumentException
), ex
.GetType (), "#2");
986 Assert
.IsNull (ex
.InnerException
, "#3");
987 Assert
.IsNotNull (ex
.Message
, "#4");
988 Assert
.IsNull (ex
.ParamName
, "#5");
996 public void Replace1_DestFileName_FileNotFound ()
998 string path1
= TempFolder
+ DSC
+ "FIT.Replace.Source.Test";
999 string path2
= TempFolder
+ DSC
+ "FIT.Replace.Dest.Test";
1005 File
.Create (path1
).Close ();
1006 FileInfo info
= new FileInfo (path1
);
1007 info
.Replace (path2
, null);
1009 } catch (FileNotFoundException ex
) {
1010 Assert
.AreEqual (typeof (FileNotFoundException
), ex
.GetType (), "#2");
1011 Assert
.IsNull (ex
.InnerException
, "#3");
1012 Assert
.IsNotNull (ex
.Message
, "#4");
1020 public void Replace1_DestFileName_IsReadOnly ()
1022 string path1
= TempFolder
+ DSC
+ "FIT.Replace.Source.Test";
1023 string path2
= TempFolder
+ DSC
+ "FIT.Replace.Dest.Test";
1029 File
.Create (path1
).Close ();
1030 File
.Create (path2
).Close ();
1031 File
.SetAttributes (path2
, FileAttributes
.ReadOnly
);
1032 FileInfo info
= new FileInfo (path1
);
1033 info
.Replace (path2
, null);
1035 } catch (UnauthorizedAccessException ex
) {
1036 Assert
.AreEqual (typeof (UnauthorizedAccessException
), ex
.GetType (), "#2");
1037 Assert
.IsNull (ex
.InnerException
, "#3");
1038 Assert
.IsNotNull (ex
.Message
, "#4");
1041 File
.SetAttributes (path2
, FileAttributes
.Normal
);
1048 public void Replace1_Source_FileNotFound ()
1050 string path1
= TempFolder
+ DSC
+ "FIT.Replace.Source.Test";
1051 string path2
= TempFolder
+ DSC
+ "FIT.Replace.Dest.Test";
1056 File
.Create (path2
).Close ();
1057 FileInfo info
= new FileInfo (path1
);
1058 info
.Replace (path2
, null);
1060 } catch (FileNotFoundException ex
) {
1061 Assert
.AreEqual (typeof (FileNotFoundException
), ex
.GetType (), "#2");
1062 Assert
.IsNull (ex
.InnerException
, "#3");
1063 Assert
.IsNotNull (ex
.Message
, "#4");
1074 string path
= TempFolder
+ DSC
+ "FIT.Open.Test";
1076 FileStream stream
= null;
1078 FileInfo info
= new FileInfo (path
);
1079 stream
= info
.Open (FileMode
.CreateNew
);
1080 Assert
.IsTrue (stream
.CanRead
, "#A1");
1081 Assert
.IsTrue (stream
.CanSeek
, "#A2");
1082 Assert
.IsTrue (stream
.CanWrite
, "#A3");
1085 stream
= info
.Open (FileMode
.Open
);
1086 Assert
.IsTrue (stream
.CanRead
, "#B1");
1087 Assert
.IsTrue (stream
.CanSeek
, "#B2");
1088 Assert
.IsTrue (stream
.CanWrite
, "#B3");
1091 stream
= info
.Open (FileMode
.Append
, FileAccess
.Write
);
1092 Assert
.IsFalse (stream
.CanRead
, "#C1");
1093 Assert
.IsTrue (stream
.CanSeek
, "#C2");
1094 Assert
.IsTrue (stream
.CanWrite
, "#C3");
1097 stream
= info
.Open (FileMode
.Open
, FileAccess
.ReadWrite
, FileShare
.ReadWrite
);
1098 Assert
.IsTrue (stream
.CanRead
, "#D1");
1099 Assert
.IsTrue (stream
.CanSeek
, "#D2");
1100 Assert
.IsTrue (stream
.CanWrite
, "#D3");
1110 public void Open_FileDoesNotExist ()
1112 string path
= TempFolder
+ DSC
+ "FIT.OpenFileNotFoundException.Test";
1115 FileInfo info
= new FileInfo (path
);
1117 info
.Open (FileMode
.Open
);
1119 } catch (FileNotFoundException ex
) {
1120 Assert
.AreEqual (typeof (FileNotFoundException
), ex
.GetType (), "#2");
1121 Assert
.AreEqual (path
, ex
.FileName
, "#3");
1122 Assert
.IsNull (ex
.InnerException
, "#4");
1123 Assert
.IsNotNull (ex
.Message
, "#5");
1128 public void OpenRead ()
1130 string path
= TempFolder
+ DSC
+ "FIT.OpenRead.Test";
1132 FileStream stream
= null;
1134 File
.Create (path
).Close ();
1135 FileInfo info
= new FileInfo (path
);
1136 stream
= info
.OpenRead ();
1137 Assert
.IsTrue (stream
.CanRead
, "#1");
1138 Assert
.IsTrue (stream
.CanSeek
, "#2");
1139 Assert
.IsFalse (stream
.CanWrite
, "#3");
1150 public void OpenRead_FileLock ()
1152 string path
= TempFolder
+ DSC
+ "FIT.OpenReadIOException.Test";
1154 FileStream stream
= null;
1157 stream
= File
.Create (path
);
1158 FileInfo info
= new FileInfo (path
);
1162 } catch (IOException ex
) {
1163 // The process cannot access the file because
1164 // it is being used by another process
1165 Assert
.AreEqual (typeof (IOException
), ex
.GetType (), "#2");
1166 Assert
.IsNull (ex
.InnerException
, "#3");
1167 Assert
.IsNotNull (ex
.Message
, "#4");
1177 public void OpenRead_Directory ()
1179 FileInfo info
= new FileInfo (TempFolder
);
1183 } catch (UnauthorizedAccessException ex
) {
1184 Assert
.AreEqual (typeof (UnauthorizedAccessException
), ex
.GetType (), "#2");
1185 Assert
.IsNull (ex
.InnerException
, "#3");
1186 Assert
.IsNotNull (ex
.Message
, "#4");
1191 public void OpenText ()
1193 string path
= TempFolder
+ DSC
+ "FIT.OpenText.Test";
1195 StreamReader reader
= null;
1197 File
.Create (path
).Close ();
1198 FileInfo info
= new FileInfo (path
);
1199 reader
= info
.OpenText ();
1200 Assert
.AreEqual (-1, reader
.Peek ());
1209 public void OpenText_FileDoesNotExist ()
1211 string path
= TempFolder
+ DSC
+ "FIT.OpenTextFileNotFoundException.Test";
1213 FileInfo info
= new FileInfo (path
);
1217 } catch (FileNotFoundException ex
) {
1218 Assert
.AreEqual (typeof (FileNotFoundException
), ex
.GetType (), "#2");
1219 Assert
.AreEqual (path
, ex
.FileName
, "#3");
1220 Assert
.IsNull (ex
.InnerException
, "#4");
1221 Assert
.IsNotNull (ex
.Message
, "#5");
1226 public void OpenText_Directory ()
1228 FileInfo info
= new FileInfo (TempFolder
);
1232 } catch (UnauthorizedAccessException ex
) {
1233 Assert
.AreEqual (typeof (UnauthorizedAccessException
), ex
.GetType (), "#2");
1234 Assert
.IsNull (ex
.InnerException
, "#3");
1235 Assert
.IsNotNull (ex
.Message
, "#4");
1240 public void OpenWrite ()
1242 string path
= TempFolder
+ DSC
+ "FIT.OpenWrite.Test";
1244 FileStream stream
= null;
1246 File
.Create (path
).Close ();
1247 FileInfo info
= new FileInfo (path
);
1248 stream
= info
.OpenWrite ();
1249 Assert
.IsFalse (stream
.CanRead
, "#1");
1250 Assert
.IsTrue (stream
.CanSeek
, "#2");
1251 Assert
.IsTrue (stream
.CanWrite
, "#3");
1260 public void OpenWrite_Directory ()
1262 FileInfo info
= new FileInfo (TempFolder
);
1266 } catch (UnauthorizedAccessException ex
) {
1267 Assert
.AreEqual (typeof (UnauthorizedAccessException
), ex
.GetType (), "#2");
1268 Assert
.IsNull (ex
.InnerException
, "#3");
1269 Assert
.IsNotNull (ex
.Message
, "#4");
1274 public void Serialization ()
1277 SerializationInfo si
;
1279 info
= new FileInfo ("Test");
1280 si
= new SerializationInfo (typeof (FileInfo
), new FormatterConverter ());
1281 info
.GetObjectData (si
, new StreamingContext ());
1283 Assert
.AreEqual (2, si
.MemberCount
, "#A1");
1284 Assert
.AreEqual ("Test", si
.GetString ("OriginalPath"), "#A2");
1285 Assert
.AreEqual (Path
.Combine (Directory
.GetCurrentDirectory (), "Test"), si
.GetString ("FullPath"), "#A3");
1287 info
= new FileInfo (TempFolder
);
1288 si
= new SerializationInfo (typeof (FileInfo
), new FormatterConverter ());
1289 info
.GetObjectData (si
, new StreamingContext ());
1291 Assert
.AreEqual (2, si
.MemberCount
, "#B1");
1292 Assert
.AreEqual (TempFolder
, si
.GetString ("OriginalPath"), "#B2");
1293 Assert
.AreEqual (TempFolder
, si
.GetString ("FullPath"), "#B3");
1297 public void Deserialization ()
1299 FileInfo info
= new FileInfo ("Test");
1301 MemoryStream ms
= new MemoryStream ();
1302 BinaryFormatter bf
= new BinaryFormatter ();
1303 bf
.Serialize (ms
, info
);
1306 FileInfo clone
= (FileInfo
) bf
.Deserialize (ms
);
1307 Assert
.AreEqual (info
.Name
, clone
.Name
, "#1");
1308 Assert
.AreEqual (info
.FullName
, clone
.FullName
, "#2");
1313 [Category ("MobileNotWorking")]
1314 public void ToStringVariety ()
1316 Assert
.AreEqual ("foo", new FileInfo ("foo").ToString ());
1317 Assert
.AreEqual ("c:/foo", new FileInfo ("c:/foo").ToString ());
1318 Assert
.AreEqual ("/usr/local/foo", new FileInfo ("/usr/local/foo").ToString ());
1319 Assert
.AreEqual ("c:\\foo", new FileInfo ("c:\\foo").ToString ());
1320 Assert
.AreEqual ("/usr/local\\foo", new FileInfo ("/usr/local\\foo").ToString ());
1321 Assert
.AreEqual ("foo/BAR/baz", new FileInfo ("foo/BAR/baz").ToString ());
1322 Assert
.AreEqual ("c:/documents and settings", new FileInfo ("c:/documents and settings").ToString ());
1323 Assert
.AreEqual ("c:/docUme~1", new FileInfo ("c:/docUme~1").ToString ());
1326 void DeleteFile (string path
)
1328 if (File
.Exists (path
))
1332 void DeleteDirectory (string path
)
1334 if (Directory
.Exists (path
))
1335 Directory
.Delete (path
, true);