2 // System.IO.Directory
\r
5 // Ville Palo (vi64pa@kolumbus.fi)
\r
7 // (C) 2003 Ville Palo
\r
9 // TODO: Find out why ArgumentOutOfRange tests does not release directories properly
\r
13 using System.Collections.Generic;
\r
14 using System.Diagnostics;
\r
15 using System.Globalization;
\r
18 using System.Threading;
\r
23 using NUnit.Framework;
\r
25 namespace MonoTests.System.IO
\r
29 public class DirectoryTest
\r
31 static readonly string TempSubFolder = "MonoTests.System.IO.Tests";
\r
32 string TempFolder = Path.Combine (Path.GetTempPath (), TempSubFolder);
\r
33 static readonly char DSC = Path.DirectorySeparatorChar;
\r
36 public void SetUp ()
\r
38 if (!Directory.Exists (TempFolder))
\r
39 Directory.CreateDirectory (TempFolder);
\r
41 Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
\r
45 public void TearDown ()
\r
47 if (Directory.Exists (TempFolder))
\r
48 Directory.Delete (TempFolder, true);
\r
52 public void EnumerateFilesListSymlinks ()
\r
55 Assert.Ignore ("Not running on Unix.");
\r
57 var afile = Path.Combine (TempFolder, "afile.src");
\r
58 var bfile = Path.Combine (TempFolder, "bfile.src");
\r
59 var cdir = Path.Combine (TempFolder, "cdir.src");
\r
61 File.AppendAllText (afile, "hello");
\r
62 var info = new UnixFileInfo (afile);
\r
63 info.CreateSymbolicLink (bfile);
\r
64 Directory.CreateDirectory (cdir);
\r
66 var files0 = Directory.GetFiles (TempFolder, "*.src");
\r
67 Array.Sort (files0);
\r
68 Assert.AreEqual (2, files0.Length, "#1");
\r
69 Assert.AreEqual (afile, files0 [0], "#2");
\r
70 Assert.AreEqual (bfile, files0 [1], "#3");
\r
73 var files1 = new List<string> (Directory.EnumerateFiles (TempFolder, "*.src")).ToArray ();
\r
74 Array.Sort (files1);
\r
75 Assert.AreEqual (2, files1.Length, "#1.b");
\r
76 Assert.AreEqual (afile, files1 [0], "#2.b");
\r
77 Assert.AreEqual (bfile, files1 [1], "#3.b");
\r
80 var files2 = Directory.GetFileSystemEntries (TempFolder, "*.src");
\r
81 Array.Sort (files2);
\r
82 Assert.AreEqual (3, files2.Length, "#1.c");
\r
83 Assert.AreEqual (afile, files2 [0], "#2.c");
\r
84 Assert.AreEqual (bfile, files2 [1], "#3.c");
\r
85 Assert.AreEqual (cdir, files2 [2], "#4.c");
\r
88 var files3 = new List<string> (Directory.EnumerateFileSystemEntries (TempFolder, "*.src")).ToArray ();
\r
89 Array.Sort (files3);
\r
90 Assert.AreEqual (3, files3.Length, "#1.d");
\r
91 Assert.AreEqual (afile, files3 [0], "#2.d");
\r
92 Assert.AreEqual (bfile, files3 [1], "#3.d");
\r
93 Assert.AreEqual (cdir, files3 [2], "#4.d");
\r
98 public void CreateDirectory ()
\r
100 string path = TempFolder + DSC + "DirectoryTest.Test.1";
\r
101 DeleteDirectory (path);
\r
103 DirectoryInfo info = Directory.CreateDirectory (path);
\r
104 Assert.IsTrue (info.Exists, "#1");
\r
105 Assert.AreEqual (".1", info.Extension, "#2");
\r
106 Assert.IsTrue (info.FullName.EndsWith ("DirectoryTest.Test.1"), "#3");
\r
107 Assert.AreEqual ("DirectoryTest.Test.1", info.Name, "#4");
\r
109 DeleteDirectory (path);
\r
113 /* Commented out: a directory named ":" is legal in unix
\r
115 public void CreateDirectoryNotSupportedException ()
\r
117 DeleteDirectory (":");
\r
119 DirectoryInfo info = Directory.CreateDirectory (":");
\r
120 Assert.Fail ("#1");
\r
121 } catch (ArgumentException ex) {
\r
122 // The path is not of a legal form
\r
123 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
124 Assert.IsNull (ex.InnerException, "#3");
\r
125 Assert.IsNotNull (ex.Message, "#4");
\r
126 Assert.IsNull (ex.ParamName, "#5");
\r
128 DeleteDirectory (":");
\r
133 public void CreateDirectory_Path_Null ()
\r
136 Directory.CreateDirectory (null as string);
\r
137 Assert.Fail ("#1");
\r
138 } catch (ArgumentNullException ex) {
\r
139 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
140 Assert.IsNull (ex.InnerException, "#3");
\r
141 Assert.IsNotNull (ex.Message, "#4");
\r
142 Assert.AreEqual ("path", ex.ParamName, "#5");
\r
147 public void CreateDirectory_Path_Empty ()
\r
150 Directory.CreateDirectory (string.Empty);
\r
151 Assert.Fail ("#1");
\r
152 } catch (ArgumentException ex) {
\r
153 // Path cannot be the empty string or all whitespace
\r
154 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
155 Assert.IsNull (ex.InnerException, "#3");
\r
156 Assert.IsNotNull (ex.Message, "#4");
\r
157 Assert.IsNull (ex.ParamName, "#5");
\r
162 public void CreateDirectory_Path_Whitespace ()
\r
165 Directory.CreateDirectory (" ");
\r
166 Assert.Fail ("#1");
\r
167 } catch (ArgumentException ex) {
\r
168 // The path is not of a legal form
\r
169 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
170 Assert.IsNull (ex.InnerException, "#3");
\r
171 Assert.IsNotNull (ex.Message, "#4");
\r
172 Assert.IsNull (ex.ParamName, "#5");
\r
177 public void CreateDirectory_Path_InvalidChars ()
\r
179 string path = TempFolder + DSC + "DirectoryTest.Test";
\r
180 DeleteDirectory (path);
\r
184 DirectoryInfo info = Directory.CreateDirectory (path);
\r
185 Assert.Fail ("#1");
\r
186 } catch (ArgumentException ex) {
\r
187 // The path contains illegal characters
\r
188 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
189 Assert.IsNull (ex.InnerException, "#3");
\r
190 Assert.IsNotNull (ex.Message, "#4");
\r
191 Assert.IsNull (ex.ParamName, "#5");
\r
193 DeleteDirectory (path);
\r
198 public void CreateDirectoryAlreadyExists ()
\r
200 string path = TempFolder + DSC + "DirectoryTest.Test.Exists";
\r
201 DeleteDirectory (path);
\r
203 DirectoryInfo info1 = Directory.CreateDirectory (path);
\r
204 DirectoryInfo info2 = Directory.CreateDirectory (path);
\r
206 Assert.IsTrue (info2.Exists, "#1");
\r
207 Assert.IsTrue (info2.FullName.EndsWith ("DirectoryTest.Test.Exists"), "#2");
\r
208 Assert.AreEqual ("DirectoryTest.Test.Exists", info2.Name, "#3");
\r
210 DeleteDirectory (path);
\r
215 public void CreateDirectoryAlreadyExistsAsFile ()
\r
217 string path = TempFolder + DSC + "DirectoryTest.Test.ExistsAsFile";
\r
218 DeleteDirectory (path);
\r
221 FileStream fstream = File.Create (path);
\r
224 DirectoryInfo dinfo = Directory.CreateDirectory (path);
\r
226 Assert.Fail ("#1");
\r
227 } catch (IOException ex) {
\r
228 Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
\r
229 // exception message contains the path
\r
230 Assert.IsTrue (ex.Message.Contains (path), "#3");
\r
231 Assert.IsNull (ex.InnerException, "#4");
\r
233 Assert.IsFalse (dinfo.Exists, "#2");
\r
234 Assert.IsTrue (dinfo.FullName.EndsWith ("DirectoryTest.Test.ExistsAsFile"), "#3");
\r
235 Assert.AreEqual ("DirectoryTest.Test.ExistsAsFile", dinfo.Name, "#4");
\r
238 DeleteDirectory (path);
\r
244 public void Delete ()
\r
246 string path = TempFolder + DSC + "DirectoryTest.Test.Delete.1";
\r
247 DeleteDirectory (path);
\r
249 Directory.CreateDirectory (path);
\r
250 Assert.IsTrue (Directory.Exists (path), "#1");
\r
252 Directory.CreateDirectory (path + DSC + "DirectoryTest.Test.Delete.1.2");
\r
253 Assert.IsTrue (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#2");
\r
255 Directory.Delete (path + DSC + "DirectoryTest.Test.Delete.1.2");
\r
256 Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#3");
\r
257 Assert.IsTrue (Directory.Exists (path), "#4");
\r
259 Directory.Delete (path);
\r
260 Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#5");
\r
261 Assert.IsFalse (Directory.Exists (path), "#6");
\r
263 Directory.CreateDirectory (path);
\r
264 Directory.CreateDirectory (path + DSC + "DirectoryTest.Test.Delete.1.2");
\r
265 Assert.IsTrue (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#7");
\r
266 Assert.IsTrue (Directory.Exists (path), "#8");
\r
268 Directory.Delete (path, true);
\r
269 Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#9");
\r
270 Assert.IsFalse (Directory.Exists (path), "#10");
\r
272 DeleteDirectory (path);
\r
277 [ExpectedException(typeof(ArgumentException))]
\r
278 public void DeleteArgumentException ()
\r
280 Directory.Delete (string.Empty);
\r
284 [ExpectedException(typeof(ArgumentException))]
\r
285 public void DeleteArgumentException2 ()
\r
287 Directory.Delete (" ");
\r
291 [ExpectedException(typeof(ArgumentException))]
\r
292 public void DeleteArgumentException3 ()
\r
294 string path = TempFolder + DSC + "DirectoryTest.Test.4";
\r
295 DeleteDirectory (path);
\r
297 path += Path.InvalidPathChars [0];
\r
298 Directory.Delete (path);
\r
302 [ExpectedException(typeof(ArgumentNullException))]
\r
303 public void DeleteArgumentNullException ()
\r
305 Directory.Delete (null as string);
\r
309 [ExpectedException(typeof(DirectoryNotFoundException))]
\r
310 public void DeleteDirectoryNotFoundException ()
\r
312 string path = TempFolder + DSC + "DirectoryTest.Test.5";
\r
313 DeleteDirectory (path);
\r
315 Directory.Delete (path);
\r
319 [ExpectedException(typeof(IOException))]
\r
320 public void DeleteArgumentException4 ()
\r
322 string path = TempFolder + DSC + "DirectoryTest.Test.6";
\r
323 DeleteDirectory (path);
\r
324 FileStream s = null;
\r
325 Directory.CreateDirectory (path);
\r
327 s = File.Create (path + DSC + "DirectoryTest.Test.6");
\r
328 Directory.Delete (path);
\r
332 DeleteDirectory (path);
\r
337 public void DeleteDirectoryOnExistingFileName ()
\r
339 string path = TempFolder + DSC + "DirectoryTest.Test.ExistsAsFile";
\r
340 DeleteDirectory (path);
\r
343 FileStream fstream = File.Create (path);
\r
346 Directory.Delete (path);
\r
347 Assert.Fail ("#1");
\r
349 catch (IOException ex) {
\r
350 Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
\r
351 // exception message DOES NOT contains the path
\r
352 Assert.IsFalse (ex.Message.IndexOf (path) >= 0, "#3");
\r
353 Assert.IsNull (ex.InnerException, "#4");
\r
356 DeleteDirectory (path);
\r
362 public void Exists ()
\r
364 Assert.IsFalse (Directory.Exists (null as string));
\r
367 #if !MOBILE // We don't support yet the Process class.
\r
368 [Test] // bug #78239
\r
369 public void ExistsAccessDenied ()
\r
371 if (!RunningOnUnix)
\r
372 Assert.Ignore ("Not running on Unix."); // this test does not work on Windows.
\r
374 string path = TempFolder + DSC + "ExistsAccessDenied";
\r
376 Directory.CreateDirectory (path);
\r
377 Mono.Posix.Syscall.chmod (path, 0);
\r
379 Assert.IsFalse (Directory.Exists(path + DSC + "b"));
\r
381 Mono.Posix.Syscall.chmod (path, (Mono.Posix.FileMode) 755);
\r
382 Directory.Delete (path);
\r
388 [ExpectedException(typeof(ArgumentNullException))]
\r
389 public void GetCreationTimeException1 ()
\r
391 Directory.GetCreationTime (null as string);
\r
395 [ExpectedException(typeof(ArgumentException))]
\r
396 public void GetCreationTimeException2 ()
\r
398 Directory.GetCreationTime (string.Empty);
\r
403 [ExpectedException(typeof(IOException))]
\r
405 public void GetCreationTimeException_NonExistingPath ()
\r
407 string path = TempFolder + DSC + "DirectoryTest.GetCreationTime.1";
\r
408 DeleteDirectory (path);
\r
410 DateTime time = Directory.GetCreationTime (path);
\r
413 DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
\r
414 Assert.AreEqual (expectedTime.Year, time.Year, "#1");
\r
415 Assert.AreEqual (expectedTime.Month, time.Month, "#2");
\r
416 Assert.AreEqual (expectedTime.Day, time.Day, "#3");
\r
417 Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
\r
418 Assert.AreEqual (expectedTime.Second, time.Second, "#5");
\r
419 Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
\r
422 DeleteDirectory (path);
\r
427 [ExpectedException(typeof(ArgumentException))]
\r
428 public void GetCreationTimeException4 ()
\r
430 Directory.GetCreationTime (" ");
\r
434 [ExpectedException(typeof(ArgumentException))]
\r
435 public void GetCreationTimeException5 ()
\r
437 Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());
\r
441 [ExpectedException(typeof(ArgumentNullException))]
\r
442 public void GetCreationTimeUtcException1 ()
\r
444 Directory.GetCreationTimeUtc (null as string);
\r
448 [ExpectedException(typeof(ArgumentException))]
\r
449 public void GetCreationTimeUtcException2 ()
\r
451 Directory.GetCreationTimeUtc (string.Empty);
\r
456 [ExpectedException (typeof (IOException))]
\r
458 public void GetCreationTimeUtc_NonExistingPath ()
\r
460 string path = TempFolder + DSC + "DirectoryTest.GetCreationTimeUtc.1";
\r
461 DeleteDirectory (path);
\r
464 DateTime time = Directory.GetCreationTimeUtc (path);
\r
467 Assert.AreEqual (1601, time.Year, "#1");
\r
468 Assert.AreEqual (1, time.Month, "#2");
\r
469 Assert.AreEqual (1, time.Day, "#3");
\r
470 Assert.AreEqual (0, time.Hour, "#4");
\r
471 Assert.AreEqual (0, time.Second, "#5");
\r
472 Assert.AreEqual (0, time.Millisecond, "#6");
\r
475 DeleteDirectory (path);
\r
480 [ExpectedException(typeof(ArgumentException))]
\r
481 public void GetCreationTimeUtcException4 ()
\r
483 Directory.GetCreationTimeUtc (" ");
\r
487 [ExpectedException(typeof(ArgumentException))]
\r
488 public void GetCreationTimeUtcException5 ()
\r
490 Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());
\r
494 [ExpectedException(typeof(ArgumentNullException))]
\r
495 public void GetLastAccessTime_Null ()
\r
497 Directory.GetLastAccessTime (null as string);
\r
501 [ExpectedException(typeof(ArgumentException))]
\r
502 public void GetLastAccessTimeException2 ()
\r
504 Directory.GetLastAccessTime (string.Empty);
\r
509 [ExpectedException (typeof (IOException))]
\r
511 public void GetLastAccessTime_NonExistingPath ()
\r
513 string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTime.1";
\r
514 DeleteDirectory (path);
\r
517 DateTime time = Directory.GetLastAccessTime (path);
\r
520 DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
\r
521 Assert.AreEqual (expectedTime.Year, time.Year, "#1");
\r
522 Assert.AreEqual (expectedTime.Month, time.Month, "#2");
\r
523 Assert.AreEqual (expectedTime.Day, time.Day, "#3");
\r
524 Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
\r
525 Assert.AreEqual (expectedTime.Second, time.Second, "#5");
\r
526 Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
\r
529 DeleteDirectory (path);
\r
534 [ExpectedException(typeof(ArgumentException))]
\r
535 public void GetLastAccessTimeException4 ()
\r
537 Directory.GetLastAccessTime (" ");
\r
541 [ExpectedException(typeof(ArgumentException))]
\r
542 public void GetLastAccessTimeException5 ()
\r
544 Directory.GetLastAccessTime (Path.InvalidPathChars [0].ToString ());
\r
548 [ExpectedException(typeof(ArgumentNullException))]
\r
549 public void GetLastAccessTimeUtc_Null ()
\r
551 Directory.GetLastAccessTimeUtc (null as string);
\r
555 [ExpectedException(typeof(ArgumentException))]
\r
556 public void GetLastAccessTimeUtcException2 ()
\r
558 Directory.GetLastAccessTimeUtc (string.Empty);
\r
563 [ExpectedException (typeof (IOException))]
\r
565 public void GetLastAccessTimeUtc_NonExistingPath ()
\r
567 string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTimeUtc.1";
\r
568 DeleteDirectory (path);
\r
570 DateTime time = Directory.GetLastAccessTimeUtc (path);
\r
573 Assert.AreEqual (1601, time.Year, "#1");
\r
574 Assert.AreEqual (1, time.Month, "#2");
\r
575 Assert.AreEqual (1, time.Day, "#3");
\r
576 Assert.AreEqual (0, time.Hour, "#4");
\r
577 Assert.AreEqual (0, time.Second, "#5");
\r
578 Assert.AreEqual (0, time.Millisecond, "#6");
\r
581 DeleteDirectory (path);
\r
586 [ExpectedException(typeof(ArgumentException))]
\r
587 public void GetLastAccessTimeUtcException4 ()
\r
589 Directory.GetLastAccessTimeUtc (" ");
\r
593 [ExpectedException(typeof(ArgumentException))]
\r
594 public void GetLastAccessTimeUtcException5 ()
\r
596 Directory.GetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString ());
\r
600 [ExpectedException(typeof(ArgumentNullException))]
\r
601 public void GetLastWriteTimeException1 ()
\r
603 Directory.GetLastWriteTime (null as string);
\r
607 [ExpectedException(typeof(ArgumentException))]
\r
608 public void GetLastWriteTimeException2 ()
\r
610 Directory.GetLastWriteTime (string.Empty);
\r
615 [ExpectedException (typeof (IOException))]
\r
617 public void GetLastWriteTime_NonExistingPath ()
\r
619 string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTime.1";
\r
620 DeleteDirectory (path);
\r
622 DateTime time = Directory.GetLastWriteTime (path);
\r
625 DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
\r
626 Assert.AreEqual (expectedTime.Year, time.Year, "#1");
\r
627 Assert.AreEqual (expectedTime.Month, time.Month, "#2");
\r
628 Assert.AreEqual (expectedTime.Day, time.Day, "#3");
\r
629 Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
\r
630 Assert.AreEqual (expectedTime.Second, time.Second, "#5");
\r
631 Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
\r
634 DeleteDirectory (path);
\r
639 [ExpectedException(typeof(ArgumentException))]
\r
640 public void GetLastWriteTimeException4 ()
\r
642 Directory.GetLastWriteTime (" ");
\r
646 [ExpectedException(typeof(ArgumentException))]
\r
647 public void GetLastWriteTimeException5 ()
\r
649 Directory.GetLastWriteTime (Path.InvalidPathChars [0].ToString ());
\r
653 [ExpectedException(typeof(ArgumentNullException))]
\r
654 public void GetLastWriteTimeUtcException1 ()
\r
656 Directory.GetLastWriteTimeUtc (null as string);
\r
660 [ExpectedException(typeof(ArgumentException))]
\r
661 public void GetLastWriteTimeUtcException2 ()
\r
663 Directory.GetLastWriteTimeUtc (string.Empty);
\r
668 [ExpectedException (typeof (IOException))]
\r
670 public void GetLastWriteTimeUtc_NonExistingPath ()
\r
672 string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTimeUtc.1";
\r
673 DeleteDirectory (path);
\r
675 DateTime time = Directory.GetLastWriteTimeUtc (path);
\r
678 Assert.AreEqual (1601, time.Year, "#1");
\r
679 Assert.AreEqual (1, time.Month, "#2");
\r
680 Assert.AreEqual (1, time.Day, "#3");
\r
681 Assert.AreEqual (0, time.Hour, "#4");
\r
682 Assert.AreEqual (0, time.Second, "#5");
\r
683 Assert.AreEqual (0, time.Millisecond, "#6");
\r
686 DeleteDirectory (path);
\r
692 [ExpectedException(typeof(ArgumentException))]
\r
693 public void GetLastWriteTimeUtcException4 ()
\r
695 Directory.GetLastWriteTimeUtc (" ");
\r
699 [ExpectedException(typeof(ArgumentException))]
\r
700 public void GetLastWriteTimeUtcException5 ()
\r
702 Directory.GetLastWriteTimeUtc (Path.InvalidPathChars[0].ToString ());
\r
706 public void Move_DestDirName_Empty ()
\r
709 Directory.Move (TempFolder, string.Empty);
\r
710 Assert.Fail ("#A1");
\r
711 } catch (ArgumentException ex) {
\r
712 // Empty file name is not legal
\r
713 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
714 Assert.IsNull (ex.InnerException, "#A3");
\r
715 Assert.IsNotNull (ex.Message, "#A4");
\r
716 Assert.IsNotNull (ex.ParamName, "#A5");
\r
717 Assert.AreEqual ("destDirName", ex.ParamName, "#A6");
\r
721 Directory.Move (TempFolder, " ");
\r
722 Assert.Fail ("#B1");
\r
723 } catch (ArgumentException ex) {
\r
724 // The path is not of a legal form
\r
725 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
726 Assert.IsNull (ex.InnerException, "#B3");
\r
727 Assert.IsNotNull (ex.Message, "#B4");
\r
732 public void Move_DestDirName_Null ()
\r
735 Directory.Move (TempFolder, (string) null);
\r
736 Assert.Fail ("#1");
\r
737 } catch (ArgumentNullException ex) {
\r
738 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
739 Assert.IsNull (ex.InnerException, "#3");
\r
740 Assert.IsNotNull (ex.Message, "#4");
\r
741 Assert.IsNotNull (ex.ParamName, "#5");
\r
742 Assert.AreEqual ("destDirName", ex.ParamName, "#6");
\r
747 public void Move_SourceDirName_Empty ()
\r
750 Directory.Move (string.Empty, TempFolder);
\r
751 Assert.Fail ("#A1");
\r
752 } catch (ArgumentException ex) {
\r
753 // Empty file name is not legal
\r
754 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
755 Assert.IsNull (ex.InnerException, "#A3");
\r
756 Assert.IsNotNull (ex.Message, "#A4");
\r
757 Assert.IsNotNull (ex.ParamName, "#A5");
\r
758 Assert.AreEqual ("sourceDirName", ex.ParamName, "#A6");
\r
762 Directory.Move (" ", TempFolder);
\r
763 Assert.Fail ("#B1");
\r
764 } catch (ArgumentException ex) {
\r
765 // The path is not of a legal form
\r
766 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
767 Assert.IsNull (ex.InnerException, "#B3");
\r
768 Assert.IsNotNull (ex.Message, "#B4");
\r
773 public void Move_SourceDirName_Null ()
\r
776 Directory.Move ((string) null, TempFolder);
\r
777 Assert.Fail ("#1");
\r
778 } catch (ArgumentNullException ex) {
\r
779 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
780 Assert.IsNull (ex.InnerException, "#3");
\r
781 Assert.IsNotNull (ex.Message, "#4");
\r
782 Assert.IsNotNull (ex.ParamName, "#5");
\r
783 Assert.AreEqual ("sourceDirName", ex.ParamName, "#6");
\r
788 public void MoveDirectory ()
\r
790 string path = TempFolder + DSC + "DirectoryTest.Test.9";
\r
791 string path2 = TempFolder + DSC + "DirectoryTest.Test.10";
\r
792 DeleteDirectory (path);
\r
793 DeleteDirectory (path2);
\r
795 Directory.CreateDirectory (path);
\r
796 Directory.CreateDirectory (path + DSC + "dir");
\r
797 Assert.IsTrue (Directory.Exists (path + DSC + "dir"), "#1");
\r
799 Directory.Move (path, path2);
\r
800 Assert.IsFalse (Directory.Exists (path + DSC + "dir"), "#2");
\r
801 Assert.IsTrue (Directory.Exists (path2 + DSC + "dir"), "#3");
\r
803 DeleteDirectory (path);
\r
804 DeleteDirectory (path2);
\r
805 if (Directory.Exists (path2 + DSC + "dir"))
\r
806 Directory.Delete (path2 + DSC + "dir", true);
\r
811 [ExpectedException (typeof (IOException))]
\r
812 public void MoveDirectory_Same ()
\r
814 string path = TempFolder + DSC + "DirectoryTest.Test.8";
\r
815 DeleteDirectory (path);
\r
817 Directory.Move (path, path);
\r
819 DeleteDirectory (path);
\r
824 public void MoveFile ()
\r
826 string tempFile1 = Path.Combine (TempFolder, "temp1.txt");
\r
827 string tempFile2 = Path.Combine (TempFolder, "temp2.txt");
\r
829 using (StreamWriter sw = File.CreateText (tempFile1)) {
\r
830 sw.Write ("temp1");
\r
832 Assert.IsFalse (File.Exists (tempFile2), "#1");
\r
833 Directory.Move (tempFile1, tempFile2);
\r
834 Assert.IsFalse (File.Exists (tempFile1), "#2");
\r
835 Assert.IsTrue (File.Exists (tempFile2), "#3");
\r
836 using (StreamReader sr = File.OpenText (tempFile2)) {
\r
837 Assert.AreEqual ("temp1", sr.ReadToEnd (), "#4");
\r
842 public void MoveFile_DestDir_Exists ()
\r
844 string tempFile = Path.Combine (TempFolder, "temp1.txt");
\r
845 string tempDir = Path.Combine (TempFolder, "temp2");
\r
847 using (StreamWriter sw = File.CreateText (tempFile)) {
\r
848 sw.Write ("temp1");
\r
850 Directory.CreateDirectory (tempDir);
\r
853 Directory.Move (tempFile, tempDir);
\r
854 Assert.Fail ("#A1");
\r
855 } catch (IOException ex) {
\r
856 // Cannot create a file when that file already exists
\r
857 Assert.AreEqual (typeof (IOException), ex.GetType (), "#A2");
\r
858 Assert.IsNull (ex.InnerException, "#A3");
\r
859 Assert.IsNotNull (ex.Message, "#A4");
\r
862 Assert.IsTrue (File.Exists (tempFile), "#B1");
\r
863 Assert.IsFalse (File.Exists (tempDir), "#B2");
\r
864 Assert.IsTrue (Directory.Exists (tempDir), "#B3");
\r
868 public void MoveFile_DestFile_Exists ()
\r
870 string tempFile1 = Path.Combine (TempFolder, "temp1.txt");
\r
871 string tempFile2 = Path.Combine (TempFolder, "temp2.txt");
\r
873 using (StreamWriter sw = File.CreateText (tempFile1)) {
\r
874 sw.Write ("temp1");
\r
876 using (StreamWriter sw = File.CreateText (tempFile2)) {
\r
877 sw.Write ("temp2");
\r
881 Directory.Move (tempFile1, tempFile2);
\r
882 Assert.Fail ("#A1");
\r
883 } catch (IOException ex) {
\r
884 // Cannot create a file when that file already exists
\r
885 Assert.AreEqual (typeof (IOException), ex.GetType (), "#A2");
\r
886 Assert.IsNull (ex.InnerException, "#A3");
\r
887 Assert.IsNotNull (ex.Message, "#A4");
\r
890 Assert.IsTrue (File.Exists (tempFile1), "#B1");
\r
891 using (StreamReader sr = File.OpenText (tempFile1)) {
\r
892 Assert.AreEqual ("temp1", sr.ReadToEnd (), "#B2");
\r
895 Assert.IsTrue (File.Exists (tempFile2), "#C1");
\r
896 using (StreamReader sr = File.OpenText (tempFile2)) {
\r
897 Assert.AreEqual ("temp2", sr.ReadToEnd (), "#C2");
\r
902 public void MoveFile_Same ()
\r
904 string tempFile = Path.Combine (TempFolder, "temp.txt");
\r
907 Directory.Move (tempFile, tempFile);
\r
908 Assert.Fail ("#1");
\r
909 } catch (IOException ex) {
\r
910 // Source and destination path must be different
\r
911 Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
\r
912 Assert.IsNull (ex.InnerException, "#3");
\r
913 Assert.IsNotNull (ex.Message, "#4");
\r
918 [ExpectedException(typeof(ArgumentException))]
\r
919 [Ignore ("On IA64, causes nunit to abort due to bug #76388")]
\r
920 public void MoveException4 ()
\r
922 string path = TempFolder + DSC + "DirectoryTest.Test.13";
\r
923 path += Path.InvalidPathChars [0];
\r
924 string path2 = TempFolder + DSC + "DirectoryTest.Test.13";
\r
925 DeleteDirectory (path);
\r
926 DeleteDirectory (path2);
\r
928 Directory.CreateDirectory (path2);
\r
929 Directory.Move (path2, path);
\r
931 DeleteDirectory (path);
\r
932 DeleteDirectory (path2);
\r
937 [ExpectedException(typeof(DirectoryNotFoundException))]
\r
938 public void MoveException5 ()
\r
940 string path = TempFolder + DSC + "DirectoryTest.Test.14";
\r
941 DeleteDirectory (path);
\r
943 Directory.Move (path, path + "Test.Test");
\r
945 DeleteDirectory (path);
\r
946 DeleteDirectory (path + "Test.Test");
\r
951 [ExpectedException(typeof(IOException))]
\r
952 public void MoveDirectory_Dest_SubDir ()
\r
954 string path = TempFolder + DSC + "DirectoryTest.Test.15";
\r
955 DeleteDirectory (path);
\r
957 Directory.CreateDirectory (path);
\r
958 Directory.Move (path, path + DSC + "dir");
\r
960 DeleteDirectory (path);
\r
961 DeleteDirectory (path + DSC + "dir");
\r
966 [ExpectedException (typeof (IOException))]
\r
967 public void MoveDirectory_Dest_Exists ()
\r
969 string path = TempFolder + DSC + "DirectoryTest.Test.16";
\r
970 string path2 = TempFolder + DSC + "DirectoryTest.Test.17";
\r
972 DeleteDirectory (path);
\r
973 DeleteDirectory (path2);
\r
975 Directory.CreateDirectory (path);
\r
976 Directory.CreateDirectory (path2);
\r
977 Directory.Move (path, path2);
\r
979 DeleteDirectory (path);
\r
980 DeleteDirectory (path2);
\r
985 public void CreationTime ()
\r
988 Assert.Ignore ("Unix doesn't support CreationTime");
\r
990 string path = TempFolder + DSC + "DirectoryTest.CreationTime.1";
\r
991 DeleteDirectory (path);
\r
994 Directory.CreateDirectory (path);
\r
995 Directory.SetCreationTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
997 DateTime time = Directory.GetCreationTime (path);
\r
998 Assert.AreEqual (2003, time.Year, "#A1");
\r
999 Assert.AreEqual (6, time.Month, "#A2");
\r
1000 Assert.AreEqual (4, time.Day, "#A3");
\r
1001 Assert.AreEqual (6, time.Hour, "#A4");
\r
1002 Assert.AreEqual (4, time.Minute, "#A5");
\r
1003 Assert.AreEqual (0, time.Second, "#A6");
\r
1005 time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetCreationTimeUtc (path));
\r
1006 Assert.AreEqual (2003, time.Year, "#B1");
\r
1007 Assert.AreEqual (6, time.Month, "#B2");
\r
1008 Assert.AreEqual (4, time.Day, "#B3");
\r
1009 Assert.AreEqual (6, time.Hour, "#B4");
\r
1010 Assert.AreEqual (4, time.Minute, "#B5");
\r
1011 Assert.AreEqual (0, time.Second, "#B6");
\r
1013 Directory.SetCreationTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1014 time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetCreationTime (path));
\r
1015 Assert.AreEqual (2003, time.Year, "#C1");
\r
1016 Assert.AreEqual (6, time.Month, "#C2");
\r
1017 Assert.AreEqual (4, time.Day, "#C3");
\r
1018 Assert.AreEqual (6, time.Hour, "#C4");
\r
1019 Assert.AreEqual (4, time.Minute, "#C5");
\r
1020 Assert.AreEqual (0, time.Second, "#C6");
\r
1022 time = Directory.GetCreationTimeUtc (path);
\r
1023 Assert.AreEqual (2003, time.Year, "#D1");
\r
1024 Assert.AreEqual (6, time.Month, "#D2");
\r
1025 Assert.AreEqual (4, time.Day, "#D3");
\r
1026 Assert.AreEqual (6, time.Hour, "#D4");
\r
1027 Assert.AreEqual (4, time.Minute, "#D5");
\r
1028 Assert.AreEqual (0, time.Second, "#D6");
\r
1030 DeleteDirectory (path);
\r
1035 public void LastAccessTime ()
\r
1037 string path = TempFolder + DSC + "DirectoryTest.AccessTime.1";
\r
1038 DeleteDirectory (path);
\r
1041 Directory.CreateDirectory (path);
\r
1042 Directory.SetLastAccessTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1044 DateTime time = Directory.GetLastAccessTime (path);
\r
1045 Assert.AreEqual (2003, time.Year, "#A1");
\r
1046 Assert.AreEqual (6, time.Month, "#A2");
\r
1047 Assert.AreEqual (4, time.Day, "#A3");
\r
1048 Assert.AreEqual (6, time.Hour, "#A4");
\r
1049 Assert.AreEqual (4, time.Minute, "#A5");
\r
1050 Assert.AreEqual (0, time.Second, "#A6");
\r
1052 time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastAccessTimeUtc (path));
\r
1053 Assert.AreEqual (2003, time.Year, "#B1");
\r
1054 Assert.AreEqual (6, time.Month, "#B2");
\r
1055 Assert.AreEqual (4, time.Day, "#B3");
\r
1056 Assert.AreEqual (6, time.Hour, "#B4");
\r
1057 Assert.AreEqual (4, time.Minute, "#B5");
\r
1058 Assert.AreEqual (0, time.Second, "#B6");
\r
1060 Directory.SetLastAccessTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1061 time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastAccessTime (path));
\r
1062 Assert.AreEqual (2003, time.Year, "#C1");
\r
1063 Assert.AreEqual (6, time.Month, "#C2");
\r
1064 Assert.AreEqual (4, time.Day, "#C3");
\r
1065 Assert.AreEqual (6, time.Hour, "#C4");
\r
1066 Assert.AreEqual (4, time.Minute, "#C5");
\r
1067 Assert.AreEqual (0, time.Second, "#C6");
\r
1069 time = Directory.GetLastAccessTimeUtc (path);
\r
1070 Assert.AreEqual (2003, time.Year, "#D1");
\r
1071 Assert.AreEqual (6, time.Month, "#D2");
\r
1072 Assert.AreEqual (4, time.Day, "#D3");
\r
1073 Assert.AreEqual (6, time.Hour, "#D4");
\r
1074 Assert.AreEqual (4, time.Minute, "#D5");
\r
1075 Assert.AreEqual (0, time.Second, "#D6");
\r
1077 DeleteDirectory (path);
\r
1082 public void LastWriteTime ()
\r
1084 string path = TempFolder + DSC + "DirectoryTest.WriteTime.1";
\r
1085 DeleteDirectory (path);
\r
1088 Directory.CreateDirectory (path);
\r
1089 Directory.SetLastWriteTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1091 DateTime time = Directory.GetLastWriteTime (path);
\r
1092 Assert.AreEqual (2003, time.Year, "#A1");
\r
1093 Assert.AreEqual (6, time.Month, "#A2");
\r
1094 Assert.AreEqual (4, time.Day, "#A3");
\r
1095 Assert.AreEqual (6, time.Hour, "#A4");
\r
1096 Assert.AreEqual (4, time.Minute, "#A5");
\r
1097 Assert.AreEqual (0, time.Second, "#A6");
\r
1099 time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastWriteTimeUtc (path));
\r
1100 Assert.AreEqual (2003, time.Year, "#B1");
\r
1101 Assert.AreEqual (6, time.Month, "#B2");
\r
1102 Assert.AreEqual (4, time.Day, "#B3");
\r
1103 Assert.AreEqual (6, time.Hour, "#B4");
\r
1104 Assert.AreEqual (4, time.Minute, "#B5");
\r
1105 Assert.AreEqual (0, time.Second, "#B6");
\r
1107 Directory.SetLastWriteTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1108 time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastWriteTime (path));
\r
1109 Assert.AreEqual (2003, time.Year, "#C1");
\r
1110 Assert.AreEqual (6, time.Month, "#C2");
\r
1111 Assert.AreEqual (4, time.Day, "#C3");
\r
1112 Assert.AreEqual (6, time.Hour, "#C4");
\r
1113 Assert.AreEqual (4, time.Minute, "#C5");
\r
1114 Assert.AreEqual (0, time.Second, "#C6");
\r
1116 time = Directory.GetLastWriteTimeUtc (path);
\r
1117 Assert.AreEqual (2003, time.Year, "#D1");
\r
1118 Assert.AreEqual (6, time.Month, "#D2");
\r
1119 Assert.AreEqual (4, time.Day, "#D3");
\r
1120 Assert.AreEqual (6, time.Hour, "#D4");
\r
1121 Assert.AreEqual (4, time.Minute, "#D5");
\r
1122 Assert.AreEqual (0, time.Second, "#D6");
\r
1124 DeleteDirectory (path);
\r
1129 [ExpectedException(typeof(ArgumentNullException))]
\r
1130 public void SetLastWriteTimeException1 ()
\r
1132 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1133 Directory.SetLastWriteTime (null as string, time);
\r
1137 [ExpectedException(typeof(ArgumentException))]
\r
1138 public void SetLastWriteTimeException2 ()
\r
1140 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1141 Directory.SetLastWriteTime (string.Empty, time);
\r
1145 [ExpectedException(typeof(FileNotFoundException))]
\r
1146 public void SetLastWriteTimeException3 ()
\r
1148 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1149 string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTime.2";
\r
1150 DeleteDirectory (path);
\r
1152 Directory.SetLastWriteTime (path, time);
\r
1154 DeleteDirectory (path);
\r
1159 [ExpectedException(typeof(ArgumentException))]
\r
1160 public void SetLastWriteTimeException4 ()
\r
1162 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1163 Directory.SetLastWriteTime (" ", time);
\r
1167 [ExpectedException(typeof(ArgumentException))]
\r
1168 public void SetLastWriteTimeException5 ()
\r
1170 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1171 Directory.SetLastWriteTime (Path.InvalidPathChars [0].ToString (), time);
\r
1175 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1176 // public void SetLastWriteTimeException6 ()
\r
1178 // DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
\r
1179 // string path = TempFolder + Path.DirectorySeparatorChar + "DirectoryTest.SetLastWriteTime.1";
\r
1182 // if (!Directory.Exists (path))
\r
1183 // Directory.CreateDirectory (path);
\r
1185 // Directory.SetLastWriteTime (path, time);
\r
1187 // DeleteDirectory (path);
\r
1193 [ExpectedException(typeof(ArgumentNullException))]
\r
1194 public void SetLastWriteTimeUtcException1 ()
\r
1196 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1197 Directory.SetLastWriteTimeUtc (null as string, time);
\r
1201 [ExpectedException(typeof(ArgumentException))]
\r
1202 public void SetLastWriteTimeUtcException2 ()
\r
1204 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1205 Directory.SetLastWriteTimeUtc (string.Empty, time);
\r
1209 [ExpectedException(typeof(FileNotFoundException))]
\r
1210 public void SetLastWriteTimeUtcException3 ()
\r
1212 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1213 string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.2";
\r
1214 DeleteDirectory (path);
\r
1216 Directory.SetLastWriteTimeUtc (path, time);
\r
1218 DeleteDirectory (path);
\r
1223 [ExpectedException(typeof(ArgumentException))]
\r
1224 public void SetLastWriteTimeUtcException4 ()
\r
1226 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1227 Directory.SetLastWriteTimeUtc (" ", time);
\r
1231 [ExpectedException(typeof(ArgumentException))]
\r
1232 public void SetLastWriteTimeUtcException5 ()
\r
1234 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1235 Directory.SetLastWriteTimeUtc (Path.InvalidPathChars [0].ToString (), time);
\r
1239 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1240 // public void SetLastWriteTimeUtcException6 ()
\r
1242 // DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
\r
1243 // string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.1";
\r
1245 // if (!Directory.Exists (path))
\r
1246 // Directory.CreateDirectory (path);
\r
1248 // Directory.SetLastWriteTimeUtc (path, time);
\r
1250 // DeleteDirectory (path);
\r
1255 [ExpectedException(typeof(ArgumentNullException))]
\r
1256 public void SetLastAccessTimeException1 ()
\r
1258 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1259 Directory.SetLastAccessTime (null as string, time);
\r
1263 [ExpectedException(typeof(ArgumentException))]
\r
1264 public void SetLastAccessTimeException2 ()
\r
1266 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1267 Directory.SetLastAccessTime (string.Empty, time);
\r
1271 [ExpectedException(typeof(FileNotFoundException))]
\r
1272 public void SetLastAccessTimeException3 ()
\r
1274 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1275 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.2";
\r
1276 DeleteDirectory (path);
\r
1278 Directory.SetLastAccessTime (path, time);
\r
1280 DeleteDirectory (path);
\r
1285 [ExpectedException(typeof(ArgumentException))]
\r
1286 public void SetLastAccessTimeException4 ()
\r
1288 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1289 Directory.SetLastAccessTime (" ", time);
\r
1293 [ExpectedException(typeof(ArgumentException))]
\r
1294 public void SetLastAccessTimeException5 ()
\r
1296 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1297 Directory.SetLastAccessTime (Path.InvalidPathChars [0].ToString (), time);
\r
1301 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1302 // public void SetLastAccessTimeException6 ()
\r
1304 // DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
\r
1305 // string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.1";
\r
1307 // if (!Directory.Exists (path))
\r
1308 // Directory.CreateDirectory (path);
\r
1310 // Directory.SetLastAccessTime (path, time);
\r
1312 // DeleteDirectory (path);
\r
1318 [ExpectedException(typeof(ArgumentNullException))]
\r
1319 public void SetLastAccessTimeUtcException1 ()
\r
1321 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1322 Directory.SetLastAccessTimeUtc (null as string, time);
\r
1326 [ExpectedException(typeof(ArgumentException))]
\r
1327 public void SetLastAccessTimeUtcException2 ()
\r
1329 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1330 Directory.SetLastAccessTimeUtc (string.Empty, time);
\r
1334 [ExpectedException(typeof(FileNotFoundException))]
\r
1335 public void SetLastAccessTimeUtcException3 ()
\r
1337 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1338 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";
\r
1339 DeleteDirectory (path);
\r
1341 Directory.SetLastAccessTimeUtc (path, time);
\r
1343 DeleteDirectory (path);
\r
1348 [ExpectedException(typeof(ArgumentException))]
\r
1349 public void SetLastAccessTimeUtcException4 ()
\r
1351 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1352 Directory.SetLastAccessTimeUtc (" ", time);
\r
1356 [ExpectedException(typeof(ArgumentException))]
\r
1357 public void SetLastAccessTimeUtcException5 ()
\r
1359 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1360 Directory.SetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString (), time);
\r
1364 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1365 // public void SetLastAccessTimeUtcException6 ()
\r
1367 // DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
\r
1368 // string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";
\r
1370 // if (!Directory.Exists (path))
\r
1371 // Directory.CreateDirectory (path);
\r
1373 // Directory.SetLastAccessTimeUtc (path, time);
\r
1375 // DeleteDirectory (path);
\r
1380 [ExpectedException(typeof(ArgumentNullException))]
\r
1381 public void SetCreationTimeException1 ()
\r
1383 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1384 Directory.SetCreationTime (null as string, time);
\r
1388 [ExpectedException(typeof(ArgumentException))]
\r
1389 public void SetCreationTimeException2 ()
\r
1391 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1392 Directory.SetCreationTime (string.Empty, time);
\r
1396 [ExpectedException(typeof(FileNotFoundException))]
\r
1397 public void SetCreationTimeException3 ()
\r
1399 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1400 string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.2";
\r
1401 DeleteDirectory (path);
\r
1404 Directory.SetCreationTime (path, time);
\r
1406 DeleteDirectory (path);
\r
1411 [ExpectedException(typeof(ArgumentException))]
\r
1412 public void SetCreationTimeException4 ()
\r
1414 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1415 Directory.SetCreationTime (" ", time);
\r
1419 [ExpectedException(typeof(ArgumentException))]
\r
1420 public void SetCreationTimeException5 ()
\r
1422 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1423 Directory.SetCreationTime (Path.InvalidPathChars [0].ToString (), time);
\r
1427 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1428 // public void SetCreationTimeException6 ()
\r
1430 // DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
\r
1431 // string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.1";
\r
1433 // if (!Directory.Exists (path))
\r
1434 // Directory.CreateDirectory (path);
\r
1436 // Directory.SetCreationTime (path, time);
\r
1437 // DeleteDirectory (path);
\r
1439 // DeleteDirectory (path);
\r
1445 [ExpectedException(typeof(ArgumentNullException))]
\r
1446 public void SetCreationTimeUtcException1 ()
\r
1448 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1449 Directory.SetCreationTimeUtc (null as string, time);
\r
1453 [ExpectedException(typeof(ArgumentException))]
\r
1454 public void SetCreationTimeUtcException2 ()
\r
1456 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1457 Directory.SetCreationTimeUtc (string.Empty, time);
\r
1461 [ExpectedException(typeof(FileNotFoundException))]
\r
1462 public void SetCreationTimeUtcException3 ()
\r
1464 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1465 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";
\r
1466 DeleteDirectory (path);
\r
1469 Directory.SetCreationTimeUtc (path, time);
\r
1470 DeleteDirectory (path);
\r
1472 DeleteDirectory (path);
\r
1477 [ExpectedException(typeof(ArgumentException))]
\r
1478 public void SetCreationTimeUtcException4 ()
\r
1480 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1481 Directory.SetCreationTimeUtc (" ", time);
\r
1485 [ExpectedException(typeof(ArgumentException))]
\r
1486 public void SetCreationTimeUtcException5 ()
\r
1488 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1489 Directory.SetCreationTimeUtc (Path.InvalidPathChars [0].ToString (), time);
\r
1493 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1494 // public void SetCreationTimeUtcException6 ()
\r
1496 // DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
\r
1497 // string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";
\r
1499 // if (!Directory.Exists (path))
\r
1500 // Directory.CreateDirectory (path);
\r
1502 // Directory.SetCreationTimeUtc (path, time);
\r
1503 // DeleteDirectory (path);
\r
1505 // DeleteDirectory (path);
\r
1510 public void GetDirectories ()
\r
1512 string path = TempFolder;
\r
1513 string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetDirectories";
\r
1514 DeleteDirectory (DirPath);
\r
1517 Directory.CreateDirectory (DirPath);
\r
1519 string [] dirs = Directory.GetDirectories (path);
\r
1521 foreach (string directory in dirs) {
\r
1523 if (directory == DirPath)
\r
1527 Assert.Fail ("Directory Not Found");
\r
1529 DeleteDirectory (DirPath);
\r
1533 [Test] // bug #346123
\r
1534 public void GetDirectories_Backslash ()
\r
1536 if (!RunningOnUnix)
\r
1537 // on Windows, backslash is used as directory separator
\r
1538 Assert.Ignore ("Not running on Unix.");
\r
1540 string dir = Path.Combine (TempFolder, @"sub\dir");
\r
1541 Directory.CreateDirectory (dir);
\r
1543 Assert.IsTrue (Directory.Exists (dir), "#A1");
\r
1544 Assert.IsFalse (Directory.Exists (Path.Combine (TempFolder, "dir")), "#A2");
\r
1546 string [] dirs = Directory.GetDirectories (TempFolder);
\r
1547 Assert.AreEqual (1, dirs.Length, "#B1");
\r
1548 Assert.AreEqual (dir, dirs [0], "#B2");
\r
1552 public void GetParentOfRootDirectory ()
\r
1554 DirectoryInfo info;
\r
1556 info = Directory.GetParent (Path.GetPathRoot (Path.GetTempPath ()));
\r
1557 Assert.IsNull (info);
\r
1561 public void GetFiles ()
\r
1563 string path = TempFolder;
\r
1564 string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetFiles";
\r
1565 if (File.Exists (DirPath))
\r
1566 File.Delete (DirPath);
\r
1569 File.Create (DirPath).Close ();
\r
1570 string [] files = Directory.GetFiles (TempFolder);
\r
1571 foreach (string directory in files) {
\r
1573 if (directory == DirPath)
\r
1577 Assert.Fail ("File Not Found");
\r
1579 if (File.Exists (DirPath))
\r
1580 File.Delete (DirPath);
\r
1584 [Test] // bug #346123
\r
1585 public void GetFiles_Backslash ()
\r
1587 if (!RunningOnUnix)
\r
1588 // on Windows, backslash is used as directory separator
\r
1589 Assert.Ignore ("Not running on Unix.");
\r
1591 string file = Path.Combine (TempFolder, @"doc\temp1.file");
\r
1592 File.Create (file).Close ();
\r
1594 Assert.IsTrue (File.Exists (file), "#A1");
\r
1595 Assert.IsFalse (File.Exists (Path.Combine (TempFolder, "temp1.file")), "#A2");
\r
1597 string [] files = Directory.GetFiles (TempFolder);
\r
1598 Assert.AreEqual (1, files.Length, "#B1");
\r
1599 Assert.AreEqual (file, files [0], "#B2");
\r
1602 [Test] // bug #82212 and bug #325107
\r
1603 public void GetFiles_Pattern ()
\r
1605 string [] files = Directory.GetFiles (TempFolder, "*.*");
\r
1606 Assert.IsNotNull (files, "#A1");
\r
1607 Assert.AreEqual (0, files.Length, "#A2");
\r
1609 string tempFile1 = Path.Combine (TempFolder, "tempFile1");
\r
1610 File.Create (tempFile1).Close ();
\r
1612 files = Directory.GetFiles (TempFolder, "*.*");
\r
1613 Assert.IsNotNull (files, "#B1");
\r
1614 Assert.AreEqual (1, files.Length, "#B2");
\r
1615 Assert.AreEqual (tempFile1, files [0], "#B3");
\r
1617 string tempFile2 = Path.Combine (TempFolder, "FileTemp2.tmp");
\r
1618 File.Create (tempFile2).Close ();
\r
1620 files = Directory.GetFiles (TempFolder, "*.*");
\r
1621 Assert.IsNotNull (files, "#C1");
\r
1622 Assert.AreEqual (2, files.Length, "#C2");
\r
1624 files = Directory.GetFiles (TempFolder, "temp*.*");
\r
1625 Assert.IsNotNull (files, "#D1");
\r
1626 Assert.AreEqual (1, files.Length, "#D2");
\r
1627 Assert.AreEqual (tempFile1, files [0], "#D3");
\r
1629 string tempFile3 = Path.Combine (TempFolder, "tempFile3.txt");
\r
1630 File.Create (tempFile3).Close ();
\r
1632 files = Directory.GetFiles (TempFolder, "*File*.*");
\r
1633 Assert.IsNotNull (files, "#E1");
\r
1634 Assert.AreEqual (3, files.Length, "#E2");
\r
1636 files = Directory.GetFiles (TempFolder, "*File*.tmp");
\r
1637 Assert.IsNotNull (files, "#F1");
\r
1638 Assert.AreEqual (1, files.Length, "#F2");
\r
1639 Assert.AreEqual (tempFile2, files [0], "#F3");
\r
1641 files = Directory.GetFiles (TempFolder, "*tempFile*");
\r
1642 Assert.IsNotNull (files, "#G1");
\r
1643 Assert.AreEqual (2, files.Length, "#G2");
\r
1645 files = Directory.GetFiles (TempFolder, "*tempFile1");
\r
1646 Assert.IsNotNull (files, "#H1");
\r
1647 Assert.AreEqual (1, files.Length, "#H2");
\r
1648 Assert.AreEqual (tempFile1, files [0], "#H3");
\r
1650 files = Directory.GetFiles (TempFolder, "*.txt");
\r
1651 Assert.IsNotNull (files, "#I1");
\r
1652 Assert.AreEqual (1, files.Length, "#I2");
\r
1653 Assert.AreEqual (tempFile3, files [0], "#I3");
\r
1655 files = Directory.GetFiles (TempFolder, "*.t*");
\r
1656 Assert.IsNotNull (files, "#J1");
\r
1657 Assert.AreEqual (2, files.Length, "#J2");
\r
1659 files = Directory.GetFiles (TempFolder, "temp*.*");
\r
1660 Assert.IsNotNull (files, "#K1");
\r
1661 Assert.AreEqual (2, files.Length, "#K2");
\r
1663 File.Delete (tempFile1);
\r
1665 files = Directory.GetFiles (TempFolder, "temp*.*");
\r
1666 Assert.IsNotNull (files, "#L1");
\r
1667 Assert.AreEqual (1, files.Length, "#L2");
\r
1668 Assert.AreEqual (tempFile3, files [0], "#L3");
\r
1670 files = Directory.GetFiles (TempFolder, ".*");
\r
1671 Assert.IsNotNull (files, "#M1");
\r
1672 Assert.AreEqual (0, files.Length, "#M2");
\r
1674 string tempFile4 = Path.Combine (TempFolder, "tempFile4.");
\r
1675 File.Create (tempFile4).Close ();
\r
1677 files = Directory.GetFiles (TempFolder, "temp*.");
\r
1678 Assert.IsNotNull (files, "#N1");
\r
1679 Assert.AreEqual (1, files.Length, "#N2");
\r
1680 if (RunningOnUnix)
\r
1681 Assert.AreEqual (tempFile4, files [0], "#N3");
\r
1682 else // on Windows, the trailing dot is automatically trimmed
\r
1683 Assert.AreEqual (Path.Combine (TempFolder, "tempFile4"), files [0], "#N3");
\r
1687 public void GetFiles_580090 ()
\r
1689 string cwd = Directory.GetCurrentDirectory ();
\r
1690 Directory.SetCurrentDirectory (Path.GetTempPath ());
\r
1692 string tempFile = Path.Combine (TempFolder, "tempFile.txt");
\r
1693 File.Create (tempFile).Close ();
\r
1696 string [] files = Directory.GetFiles (".", TempSubFolder + DSC + "*.t*");
\r
1697 Assert.IsNotNull (files, "#J1");
\r
1698 Assert.AreEqual (1, files.Length, "#J2");
\r
1701 Directory.SetCurrentDirectory (cwd);
\r
1707 [ExpectedException (typeof (ArgumentNullException))]
\r
1708 public void SetCurrentDirectoryNull ()
\r
1710 Directory.SetCurrentDirectory (null);
\r
1714 [ExpectedException (typeof (ArgumentException))]
\r
1715 public void SetCurrentDirectoryEmpty ()
\r
1717 Directory.SetCurrentDirectory (String.Empty);
\r
1721 [ExpectedException (typeof (ArgumentException))]
\r
1722 public void SetCurrentDirectoryWhitespace ()
\r
1724 Directory.SetCurrentDirectory (" ");
\r
1729 public void GetNoFiles () // Bug 58875. This throwed an exception on windows.
\r
1731 DirectoryInfo dir = new DirectoryInfo (".");
\r
1732 dir.GetFiles ("*.nonext");
\r
1736 public void FilenameOnly () // bug 78209
\r
1738 Directory.GetParent ("somefile");
\r
1741 private static bool RunningOnUnix {
\r
1743 // check for Unix platforms - see FAQ for more details
\r
1744 // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
\r
1745 int platform = (int) Environment.OSVersion.Platform;
\r
1746 return ((platform == 4) || (platform == 128) || (platform == 6));
\r
1750 private void DeleteDirectory (string path)
\r
1752 if (Directory.Exists (path))
\r
1753 Directory.Delete (path, true);
\r
1756 private void DeleteFile (string path)
\r
1758 if (File.Exists (path))
\r
1759 File.Delete (path);
\r