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
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 !TARGET_JVM && !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 return; // 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 [Category("TargetJvmNotSupported")] // GetCreationTime not supported for TARGET_JVM
\r
389 [ExpectedException(typeof(ArgumentNullException))]
\r
390 public void GetCreationTimeException1 ()
\r
392 Directory.GetCreationTime (null as string);
\r
396 [ExpectedException(typeof(ArgumentException))]
\r
397 [Category("TargetJvmNotSupported")] // GetCreationTime not supported for TARGET_JVM
\r
398 public void GetCreationTimeException2 ()
\r
400 Directory.GetCreationTime (string.Empty);
\r
405 [ExpectedException(typeof(IOException))]
\r
407 [Category("TargetJvmNotSupported")] // GetCreationTime not supported for TARGET_JVM
\r
408 public void GetCreationTimeException_NonExistingPath ()
\r
410 string path = TempFolder + DSC + "DirectoryTest.GetCreationTime.1";
\r
411 DeleteDirectory (path);
\r
413 DateTime time = Directory.GetCreationTime (path);
\r
416 DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
\r
417 Assert.AreEqual (expectedTime.Year, time.Year, "#1");
\r
418 Assert.AreEqual (expectedTime.Month, time.Month, "#2");
\r
419 Assert.AreEqual (expectedTime.Day, time.Day, "#3");
\r
420 Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
\r
421 Assert.AreEqual (expectedTime.Second, time.Second, "#5");
\r
422 Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
\r
425 DeleteDirectory (path);
\r
430 [ExpectedException(typeof(ArgumentException))]
\r
431 [Category("TargetJvmNotSupported")] // GetCreationTime not supported for TARGET_JVM
\r
432 public void GetCreationTimeException4 ()
\r
434 Directory.GetCreationTime (" ");
\r
438 [ExpectedException(typeof(ArgumentException))]
\r
439 [Category("TargetJvmNotSupported")] // GetCreationTime not supported for TARGET_JVM
\r
440 public void GetCreationTimeException5 ()
\r
442 Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());
\r
446 [ExpectedException(typeof(ArgumentNullException))]
\r
447 [Category("TargetJvmNotSupported")] // GetCreationTime not supported for TARGET_JVM
\r
448 public void GetCreationTimeUtcException1 ()
\r
450 Directory.GetCreationTimeUtc (null as string);
\r
454 [ExpectedException(typeof(ArgumentException))]
\r
455 [Category("TargetJvmNotSupported")] // GetCreationTime not supported for TARGET_JVM
\r
456 public void GetCreationTimeUtcException2 ()
\r
458 Directory.GetCreationTimeUtc (string.Empty);
\r
463 [ExpectedException (typeof (IOException))]
\r
465 [Category("TargetJvmNotSupported")] // GetCreationTime not supported for TARGET_JVM
\r
466 public void GetCreationTimeUtc_NonExistingPath ()
\r
468 string path = TempFolder + DSC + "DirectoryTest.GetCreationTimeUtc.1";
\r
469 DeleteDirectory (path);
\r
472 DateTime time = Directory.GetCreationTimeUtc (path);
\r
475 Assert.AreEqual (1601, time.Year, "#1");
\r
476 Assert.AreEqual (1, time.Month, "#2");
\r
477 Assert.AreEqual (1, time.Day, "#3");
\r
478 Assert.AreEqual (0, time.Hour, "#4");
\r
479 Assert.AreEqual (0, time.Second, "#5");
\r
480 Assert.AreEqual (0, time.Millisecond, "#6");
\r
483 DeleteDirectory (path);
\r
488 [ExpectedException(typeof(ArgumentException))]
\r
489 [Category("TargetJvmNotSupported")] // GetCreationTime not supported for TARGET_JVM
\r
490 public void GetCreationTimeUtcException4 ()
\r
492 Directory.GetCreationTimeUtc (" ");
\r
496 [ExpectedException(typeof(ArgumentException))]
\r
497 [Category("TargetJvmNotSupported")] // GetCreationTime not supported for TARGET_JVM
\r
498 public void GetCreationTimeUtcException5 ()
\r
500 Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());
\r
504 [ExpectedException(typeof(ArgumentNullException))]
\r
505 [Category("TargetJvmNotSupported")] // GetLastAccessTime not supported for TARGET_JVM
\r
506 public void GetLastAccessTime_Null ()
\r
508 Directory.GetLastAccessTime (null as string);
\r
512 [ExpectedException(typeof(ArgumentException))]
\r
513 [Category("TargetJvmNotSupported")] // GetLastAccessTime not supported for TARGET_JVM
\r
514 public void GetLastAccessTimeException2 ()
\r
516 Directory.GetLastAccessTime (string.Empty);
\r
521 [ExpectedException (typeof (IOException))]
\r
523 [Category("TargetJvmNotSupported")] // GetLastAccessTime not supported for TARGET_JVM
\r
524 public void GetLastAccessTime_NonExistingPath ()
\r
526 string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTime.1";
\r
527 DeleteDirectory (path);
\r
530 DateTime time = Directory.GetLastAccessTime (path);
\r
533 DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
\r
534 Assert.AreEqual (expectedTime.Year, time.Year, "#1");
\r
535 Assert.AreEqual (expectedTime.Month, time.Month, "#2");
\r
536 Assert.AreEqual (expectedTime.Day, time.Day, "#3");
\r
537 Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
\r
538 Assert.AreEqual (expectedTime.Second, time.Second, "#5");
\r
539 Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
\r
542 DeleteDirectory (path);
\r
547 [ExpectedException(typeof(ArgumentException))]
\r
548 [Category("TargetJvmNotSupported")] // GetLastAccessTime not supported for TARGET_JVM
\r
549 public void GetLastAccessTimeException4 ()
\r
551 Directory.GetLastAccessTime (" ");
\r
555 [ExpectedException(typeof(ArgumentException))]
\r
556 [Category("TargetJvmNotSupported")] // GetLastAccessTime not supported for TARGET_JVM
\r
557 public void GetLastAccessTimeException5 ()
\r
559 Directory.GetLastAccessTime (Path.InvalidPathChars [0].ToString ());
\r
563 [ExpectedException(typeof(ArgumentNullException))]
\r
564 [Category("TargetJvmNotSupported")] // GetLastAccessTime not supported for TARGET_JVM
\r
565 public void GetLastAccessTimeUtc_Null ()
\r
567 Directory.GetLastAccessTimeUtc (null as string);
\r
571 [ExpectedException(typeof(ArgumentException))]
\r
572 [Category("TargetJvmNotSupported")] // GetLastAccessTime not supported for TARGET_JVM
\r
573 public void GetLastAccessTimeUtcException2 ()
\r
575 Directory.GetLastAccessTimeUtc (string.Empty);
\r
580 [ExpectedException (typeof (IOException))]
\r
582 [Category("TargetJvmNotSupported")] // GetLastAccessTime not supported for TARGET_JVM
\r
583 public void GetLastAccessTimeUtc_NonExistingPath ()
\r
585 string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTimeUtc.1";
\r
586 DeleteDirectory (path);
\r
588 DateTime time = Directory.GetLastAccessTimeUtc (path);
\r
591 Assert.AreEqual (1601, time.Year, "#1");
\r
592 Assert.AreEqual (1, time.Month, "#2");
\r
593 Assert.AreEqual (1, time.Day, "#3");
\r
594 Assert.AreEqual (0, time.Hour, "#4");
\r
595 Assert.AreEqual (0, time.Second, "#5");
\r
596 Assert.AreEqual (0, time.Millisecond, "#6");
\r
599 DeleteDirectory (path);
\r
604 [ExpectedException(typeof(ArgumentException))]
\r
605 [Category("TargetJvmNotSupported")] // GetLastAccessTime not supported for TARGET_JVM
\r
606 public void GetLastAccessTimeUtcException4 ()
\r
608 Directory.GetLastAccessTimeUtc (" ");
\r
612 [ExpectedException(typeof(ArgumentException))]
\r
613 [Category("TargetJvmNotSupported")] // GetLastAccessTime not supported for TARGET_JVM
\r
614 public void GetLastAccessTimeUtcException5 ()
\r
616 Directory.GetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString ());
\r
620 [ExpectedException(typeof(ArgumentNullException))]
\r
621 public void GetLastWriteTimeException1 ()
\r
623 Directory.GetLastWriteTime (null as string);
\r
627 [ExpectedException(typeof(ArgumentException))]
\r
628 public void GetLastWriteTimeException2 ()
\r
630 Directory.GetLastWriteTime (string.Empty);
\r
635 [ExpectedException (typeof (IOException))]
\r
637 public void GetLastWriteTime_NonExistingPath ()
\r
639 string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTime.1";
\r
640 DeleteDirectory (path);
\r
642 DateTime time = Directory.GetLastWriteTime (path);
\r
645 DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
\r
646 Assert.AreEqual (expectedTime.Year, time.Year, "#1");
\r
647 Assert.AreEqual (expectedTime.Month, time.Month, "#2");
\r
648 Assert.AreEqual (expectedTime.Day, time.Day, "#3");
\r
649 Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
\r
650 Assert.AreEqual (expectedTime.Second, time.Second, "#5");
\r
651 Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
\r
654 DeleteDirectory (path);
\r
659 [ExpectedException(typeof(ArgumentException))]
\r
660 public void GetLastWriteTimeException4 ()
\r
662 Directory.GetLastWriteTime (" ");
\r
666 [ExpectedException(typeof(ArgumentException))]
\r
667 public void GetLastWriteTimeException5 ()
\r
669 Directory.GetLastWriteTime (Path.InvalidPathChars [0].ToString ());
\r
673 [ExpectedException(typeof(ArgumentNullException))]
\r
674 public void GetLastWriteTimeUtcException1 ()
\r
676 Directory.GetLastWriteTimeUtc (null as string);
\r
680 [ExpectedException(typeof(ArgumentException))]
\r
681 public void GetLastWriteTimeUtcException2 ()
\r
683 Directory.GetLastWriteTimeUtc (string.Empty);
\r
688 [ExpectedException (typeof (IOException))]
\r
690 public void GetLastWriteTimeUtc_NonExistingPath ()
\r
692 string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTimeUtc.1";
\r
693 DeleteDirectory (path);
\r
695 DateTime time = Directory.GetLastWriteTimeUtc (path);
\r
698 Assert.AreEqual (1601, time.Year, "#1");
\r
699 Assert.AreEqual (1, time.Month, "#2");
\r
700 Assert.AreEqual (1, time.Day, "#3");
\r
701 Assert.AreEqual (0, time.Hour, "#4");
\r
702 Assert.AreEqual (0, time.Second, "#5");
\r
703 Assert.AreEqual (0, time.Millisecond, "#6");
\r
706 DeleteDirectory (path);
\r
712 [ExpectedException(typeof(ArgumentException))]
\r
713 public void GetLastWriteTimeUtcException4 ()
\r
715 Directory.GetLastWriteTimeUtc (" ");
\r
719 [ExpectedException(typeof(ArgumentException))]
\r
720 public void GetLastWriteTimeUtcException5 ()
\r
722 Directory.GetLastWriteTimeUtc (Path.InvalidPathChars[0].ToString ());
\r
726 public void Move_DestDirName_Empty ()
\r
729 Directory.Move (TempFolder, string.Empty);
\r
730 Assert.Fail ("#A1");
\r
731 } catch (ArgumentException ex) {
\r
732 // Empty file name is not legal
\r
733 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
734 Assert.IsNull (ex.InnerException, "#A3");
\r
735 Assert.IsNotNull (ex.Message, "#A4");
\r
736 Assert.IsNotNull (ex.ParamName, "#A5");
\r
737 Assert.AreEqual ("destDirName", ex.ParamName, "#A6");
\r
741 Directory.Move (TempFolder, " ");
\r
742 Assert.Fail ("#B1");
\r
743 } catch (ArgumentException ex) {
\r
744 // The path is not of a legal form
\r
745 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
746 Assert.IsNull (ex.InnerException, "#B3");
\r
747 Assert.IsNotNull (ex.Message, "#B4");
\r
752 public void Move_DestDirName_Null ()
\r
755 Directory.Move (TempFolder, (string) null);
\r
756 Assert.Fail ("#1");
\r
757 } catch (ArgumentNullException ex) {
\r
758 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
759 Assert.IsNull (ex.InnerException, "#3");
\r
760 Assert.IsNotNull (ex.Message, "#4");
\r
761 Assert.IsNotNull (ex.ParamName, "#5");
\r
762 Assert.AreEqual ("destDirName", ex.ParamName, "#6");
\r
767 public void Move_SourceDirName_Empty ()
\r
770 Directory.Move (string.Empty, TempFolder);
\r
771 Assert.Fail ("#A1");
\r
772 } catch (ArgumentException ex) {
\r
773 // Empty file name is not legal
\r
774 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
775 Assert.IsNull (ex.InnerException, "#A3");
\r
776 Assert.IsNotNull (ex.Message, "#A4");
\r
777 Assert.IsNotNull (ex.ParamName, "#A5");
\r
778 Assert.AreEqual ("sourceDirName", ex.ParamName, "#A6");
\r
782 Directory.Move (" ", TempFolder);
\r
783 Assert.Fail ("#B1");
\r
784 } catch (ArgumentException ex) {
\r
785 // The path is not of a legal form
\r
786 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
787 Assert.IsNull (ex.InnerException, "#B3");
\r
788 Assert.IsNotNull (ex.Message, "#B4");
\r
793 public void Move_SourceDirName_Null ()
\r
796 Directory.Move ((string) null, TempFolder);
\r
797 Assert.Fail ("#1");
\r
798 } catch (ArgumentNullException ex) {
\r
799 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
800 Assert.IsNull (ex.InnerException, "#3");
\r
801 Assert.IsNotNull (ex.Message, "#4");
\r
802 Assert.IsNotNull (ex.ParamName, "#5");
\r
803 Assert.AreEqual ("sourceDirName", ex.ParamName, "#6");
\r
808 public void MoveDirectory ()
\r
810 string path = TempFolder + DSC + "DirectoryTest.Test.9";
\r
811 string path2 = TempFolder + DSC + "DirectoryTest.Test.10";
\r
812 DeleteDirectory (path);
\r
813 DeleteDirectory (path2);
\r
815 Directory.CreateDirectory (path);
\r
816 Directory.CreateDirectory (path + DSC + "dir");
\r
817 Assert.IsTrue (Directory.Exists (path + DSC + "dir"), "#1");
\r
819 Directory.Move (path, path2);
\r
820 Assert.IsFalse (Directory.Exists (path + DSC + "dir"), "#2");
\r
821 Assert.IsTrue (Directory.Exists (path2 + DSC + "dir"), "#3");
\r
823 DeleteDirectory (path);
\r
824 DeleteDirectory (path2);
\r
825 if (Directory.Exists (path2 + DSC + "dir"))
\r
826 Directory.Delete (path2 + DSC + "dir", true);
\r
831 [ExpectedException (typeof (IOException))]
\r
832 public void MoveDirectory_Same ()
\r
834 string path = TempFolder + DSC + "DirectoryTest.Test.8";
\r
835 DeleteDirectory (path);
\r
837 Directory.Move (path, path);
\r
839 DeleteDirectory (path);
\r
844 public void MoveFile ()
\r
846 string tempFile1 = Path.Combine (TempFolder, "temp1.txt");
\r
847 string tempFile2 = Path.Combine (TempFolder, "temp2.txt");
\r
849 using (StreamWriter sw = File.CreateText (tempFile1)) {
\r
850 sw.Write ("temp1");
\r
852 Assert.IsFalse (File.Exists (tempFile2), "#1");
\r
853 Directory.Move (tempFile1, tempFile2);
\r
854 Assert.IsFalse (File.Exists (tempFile1), "#2");
\r
855 Assert.IsTrue (File.Exists (tempFile2), "#3");
\r
856 using (StreamReader sr = File.OpenText (tempFile2)) {
\r
857 Assert.AreEqual ("temp1", sr.ReadToEnd (), "#4");
\r
862 public void MoveFile_DestDir_Exists ()
\r
864 string tempFile = Path.Combine (TempFolder, "temp1.txt");
\r
865 string tempDir = Path.Combine (TempFolder, "temp2");
\r
867 using (StreamWriter sw = File.CreateText (tempFile)) {
\r
868 sw.Write ("temp1");
\r
870 Directory.CreateDirectory (tempDir);
\r
873 Directory.Move (tempFile, tempDir);
\r
874 Assert.Fail ("#A1");
\r
875 } catch (IOException ex) {
\r
876 // Cannot create a file when that file already exists
\r
877 Assert.AreEqual (typeof (IOException), ex.GetType (), "#A2");
\r
878 Assert.IsNull (ex.InnerException, "#A3");
\r
879 Assert.IsNotNull (ex.Message, "#A4");
\r
882 Assert.IsTrue (File.Exists (tempFile), "#B1");
\r
883 Assert.IsFalse (File.Exists (tempDir), "#B2");
\r
884 Assert.IsTrue (Directory.Exists (tempDir), "#B3");
\r
888 public void MoveFile_DestFile_Exists ()
\r
890 string tempFile1 = Path.Combine (TempFolder, "temp1.txt");
\r
891 string tempFile2 = Path.Combine (TempFolder, "temp2.txt");
\r
893 using (StreamWriter sw = File.CreateText (tempFile1)) {
\r
894 sw.Write ("temp1");
\r
896 using (StreamWriter sw = File.CreateText (tempFile2)) {
\r
897 sw.Write ("temp2");
\r
901 Directory.Move (tempFile1, tempFile2);
\r
902 Assert.Fail ("#A1");
\r
903 } catch (IOException ex) {
\r
904 // Cannot create a file when that file already exists
\r
905 Assert.AreEqual (typeof (IOException), ex.GetType (), "#A2");
\r
906 Assert.IsNull (ex.InnerException, "#A3");
\r
907 Assert.IsNotNull (ex.Message, "#A4");
\r
910 Assert.IsTrue (File.Exists (tempFile1), "#B1");
\r
911 using (StreamReader sr = File.OpenText (tempFile1)) {
\r
912 Assert.AreEqual ("temp1", sr.ReadToEnd (), "#B2");
\r
915 Assert.IsTrue (File.Exists (tempFile2), "#C1");
\r
916 using (StreamReader sr = File.OpenText (tempFile2)) {
\r
917 Assert.AreEqual ("temp2", sr.ReadToEnd (), "#C2");
\r
922 public void MoveFile_Same ()
\r
924 string tempFile = Path.Combine (TempFolder, "temp.txt");
\r
927 Directory.Move (tempFile, tempFile);
\r
928 Assert.Fail ("#1");
\r
929 } catch (IOException ex) {
\r
930 // Source and destination path must be different
\r
931 Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
\r
932 Assert.IsNull (ex.InnerException, "#3");
\r
933 Assert.IsNotNull (ex.Message, "#4");
\r
938 [ExpectedException(typeof(ArgumentException))]
\r
939 [Ignore ("On IA64, causes nunit to abort due to bug #76388")]
\r
940 public void MoveException4 ()
\r
942 string path = TempFolder + DSC + "DirectoryTest.Test.13";
\r
943 path += Path.InvalidPathChars [0];
\r
944 string path2 = TempFolder + DSC + "DirectoryTest.Test.13";
\r
945 DeleteDirectory (path);
\r
946 DeleteDirectory (path2);
\r
948 Directory.CreateDirectory (path2);
\r
949 Directory.Move (path2, path);
\r
951 DeleteDirectory (path);
\r
952 DeleteDirectory (path2);
\r
957 [ExpectedException(typeof(DirectoryNotFoundException))]
\r
958 public void MoveException5 ()
\r
960 string path = TempFolder + DSC + "DirectoryTest.Test.14";
\r
961 DeleteDirectory (path);
\r
963 Directory.Move (path, path + "Test.Test");
\r
965 DeleteDirectory (path);
\r
966 DeleteDirectory (path + "Test.Test");
\r
971 [ExpectedException(typeof(IOException))]
\r
972 public void MoveDirectory_Dest_SubDir ()
\r
974 string path = TempFolder + DSC + "DirectoryTest.Test.15";
\r
975 DeleteDirectory (path);
\r
977 Directory.CreateDirectory (path);
\r
978 Directory.Move (path, path + DSC + "dir");
\r
980 DeleteDirectory (path);
\r
981 DeleteDirectory (path + DSC + "dir");
\r
986 [ExpectedException (typeof (IOException))]
\r
987 public void MoveDirectory_Dest_Exists ()
\r
989 string path = TempFolder + DSC + "DirectoryTest.Test.16";
\r
990 string path2 = TempFolder + DSC + "DirectoryTest.Test.17";
\r
992 DeleteDirectory (path);
\r
993 DeleteDirectory (path2);
\r
995 Directory.CreateDirectory (path);
\r
996 Directory.CreateDirectory (path2);
\r
997 Directory.Move (path, path2);
\r
999 DeleteDirectory (path);
\r
1000 DeleteDirectory (path2);
\r
1005 [Category("TargetJvmNotSupported")] // CreationTime not supported for TARGET_JVM
\r
1006 public void CreationTime ()
\r
1008 if (RunningOnUnix)
\r
1009 Assert.Ignore ("Unix doesn't support CreationTime");
\r
1011 string path = TempFolder + DSC + "DirectoryTest.CreationTime.1";
\r
1012 DeleteDirectory (path);
\r
1015 Directory.CreateDirectory (path);
\r
1016 Directory.SetCreationTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1018 DateTime time = Directory.GetCreationTime (path);
\r
1019 Assert.AreEqual (2003, time.Year, "#A1");
\r
1020 Assert.AreEqual (6, time.Month, "#A2");
\r
1021 Assert.AreEqual (4, time.Day, "#A3");
\r
1022 Assert.AreEqual (6, time.Hour, "#A4");
\r
1023 Assert.AreEqual (4, time.Minute, "#A5");
\r
1024 Assert.AreEqual (0, time.Second, "#A6");
\r
1026 time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetCreationTimeUtc (path));
\r
1027 Assert.AreEqual (2003, time.Year, "#B1");
\r
1028 Assert.AreEqual (6, time.Month, "#B2");
\r
1029 Assert.AreEqual (4, time.Day, "#B3");
\r
1030 Assert.AreEqual (6, time.Hour, "#B4");
\r
1031 Assert.AreEqual (4, time.Minute, "#B5");
\r
1032 Assert.AreEqual (0, time.Second, "#B6");
\r
1034 Directory.SetCreationTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1035 time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetCreationTime (path));
\r
1036 Assert.AreEqual (2003, time.Year, "#C1");
\r
1037 Assert.AreEqual (6, time.Month, "#C2");
\r
1038 Assert.AreEqual (4, time.Day, "#C3");
\r
1039 Assert.AreEqual (6, time.Hour, "#C4");
\r
1040 Assert.AreEqual (4, time.Minute, "#C5");
\r
1041 Assert.AreEqual (0, time.Second, "#C6");
\r
1043 time = Directory.GetCreationTimeUtc (path);
\r
1044 Assert.AreEqual (2003, time.Year, "#D1");
\r
1045 Assert.AreEqual (6, time.Month, "#D2");
\r
1046 Assert.AreEqual (4, time.Day, "#D3");
\r
1047 Assert.AreEqual (6, time.Hour, "#D4");
\r
1048 Assert.AreEqual (4, time.Minute, "#D5");
\r
1049 Assert.AreEqual (0, time.Second, "#D6");
\r
1051 DeleteDirectory (path);
\r
1056 [Category("TargetJvmNotSupported")] // LastAccessTime not supported for TARGET_JVM
\r
1057 public void LastAccessTime ()
\r
1059 string path = TempFolder + DSC + "DirectoryTest.AccessTime.1";
\r
1060 DeleteDirectory (path);
\r
1063 Directory.CreateDirectory (path);
\r
1064 Directory.SetLastAccessTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1066 DateTime time = Directory.GetLastAccessTime (path);
\r
1067 Assert.AreEqual (2003, time.Year, "#A1");
\r
1068 Assert.AreEqual (6, time.Month, "#A2");
\r
1069 Assert.AreEqual (4, time.Day, "#A3");
\r
1070 Assert.AreEqual (6, time.Hour, "#A4");
\r
1071 Assert.AreEqual (4, time.Minute, "#A5");
\r
1072 Assert.AreEqual (0, time.Second, "#A6");
\r
1074 time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastAccessTimeUtc (path));
\r
1075 Assert.AreEqual (2003, time.Year, "#B1");
\r
1076 Assert.AreEqual (6, time.Month, "#B2");
\r
1077 Assert.AreEqual (4, time.Day, "#B3");
\r
1078 Assert.AreEqual (6, time.Hour, "#B4");
\r
1079 Assert.AreEqual (4, time.Minute, "#B5");
\r
1080 Assert.AreEqual (0, time.Second, "#B6");
\r
1082 Directory.SetLastAccessTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1083 time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastAccessTime (path));
\r
1084 Assert.AreEqual (2003, time.Year, "#C1");
\r
1085 Assert.AreEqual (6, time.Month, "#C2");
\r
1086 Assert.AreEqual (4, time.Day, "#C3");
\r
1087 Assert.AreEqual (6, time.Hour, "#C4");
\r
1088 Assert.AreEqual (4, time.Minute, "#C5");
\r
1089 Assert.AreEqual (0, time.Second, "#C6");
\r
1091 time = Directory.GetLastAccessTimeUtc (path);
\r
1092 Assert.AreEqual (2003, time.Year, "#D1");
\r
1093 Assert.AreEqual (6, time.Month, "#D2");
\r
1094 Assert.AreEqual (4, time.Day, "#D3");
\r
1095 Assert.AreEqual (6, time.Hour, "#D4");
\r
1096 Assert.AreEqual (4, time.Minute, "#D5");
\r
1097 Assert.AreEqual (0, time.Second, "#D6");
\r
1099 DeleteDirectory (path);
\r
1104 public void LastWriteTime ()
\r
1106 string path = TempFolder + DSC + "DirectoryTest.WriteTime.1";
\r
1107 DeleteDirectory (path);
\r
1110 Directory.CreateDirectory (path);
\r
1111 Directory.SetLastWriteTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1113 DateTime time = Directory.GetLastWriteTime (path);
\r
1114 Assert.AreEqual (2003, time.Year, "#A1");
\r
1115 Assert.AreEqual (6, time.Month, "#A2");
\r
1116 Assert.AreEqual (4, time.Day, "#A3");
\r
1117 Assert.AreEqual (6, time.Hour, "#A4");
\r
1118 Assert.AreEqual (4, time.Minute, "#A5");
\r
1119 Assert.AreEqual (0, time.Second, "#A6");
\r
1121 time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastWriteTimeUtc (path));
\r
1122 Assert.AreEqual (2003, time.Year, "#B1");
\r
1123 Assert.AreEqual (6, time.Month, "#B2");
\r
1124 Assert.AreEqual (4, time.Day, "#B3");
\r
1125 Assert.AreEqual (6, time.Hour, "#B4");
\r
1126 Assert.AreEqual (4, time.Minute, "#B5");
\r
1127 Assert.AreEqual (0, time.Second, "#B6");
\r
1129 Directory.SetLastWriteTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1130 time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastWriteTime (path));
\r
1131 Assert.AreEqual (2003, time.Year, "#C1");
\r
1132 Assert.AreEqual (6, time.Month, "#C2");
\r
1133 Assert.AreEqual (4, time.Day, "#C3");
\r
1134 Assert.AreEqual (6, time.Hour, "#C4");
\r
1135 Assert.AreEqual (4, time.Minute, "#C5");
\r
1136 Assert.AreEqual (0, time.Second, "#C6");
\r
1138 time = Directory.GetLastWriteTimeUtc (path);
\r
1139 Assert.AreEqual (2003, time.Year, "#D1");
\r
1140 Assert.AreEqual (6, time.Month, "#D2");
\r
1141 Assert.AreEqual (4, time.Day, "#D3");
\r
1142 Assert.AreEqual (6, time.Hour, "#D4");
\r
1143 Assert.AreEqual (4, time.Minute, "#D5");
\r
1144 Assert.AreEqual (0, time.Second, "#D6");
\r
1146 DeleteDirectory (path);
\r
1151 [ExpectedException(typeof(ArgumentNullException))]
\r
1152 public void SetLastWriteTimeException1 ()
\r
1154 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1155 Directory.SetLastWriteTime (null as string, time);
\r
1159 [ExpectedException(typeof(ArgumentException))]
\r
1160 public void SetLastWriteTimeException2 ()
\r
1162 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1163 Directory.SetLastWriteTime (string.Empty, time);
\r
1167 [ExpectedException(typeof(FileNotFoundException))]
\r
1168 public void SetLastWriteTimeException3 ()
\r
1170 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1171 string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTime.2";
\r
1172 DeleteDirectory (path);
\r
1174 Directory.SetLastWriteTime (path, time);
\r
1176 DeleteDirectory (path);
\r
1181 [ExpectedException(typeof(ArgumentException))]
\r
1182 public void SetLastWriteTimeException4 ()
\r
1184 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1185 Directory.SetLastWriteTime (" ", time);
\r
1189 [ExpectedException(typeof(ArgumentException))]
\r
1190 public void SetLastWriteTimeException5 ()
\r
1192 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1193 Directory.SetLastWriteTime (Path.InvalidPathChars [0].ToString (), time);
\r
1197 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1198 // public void SetLastWriteTimeException6 ()
\r
1200 // DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
\r
1201 // string path = TempFolder + Path.DirectorySeparatorChar + "DirectoryTest.SetLastWriteTime.1";
\r
1204 // if (!Directory.Exists (path))
\r
1205 // Directory.CreateDirectory (path);
\r
1207 // Directory.SetLastWriteTime (path, time);
\r
1209 // DeleteDirectory (path);
\r
1215 [ExpectedException(typeof(ArgumentNullException))]
\r
1216 public void SetLastWriteTimeUtcException1 ()
\r
1218 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1219 Directory.SetLastWriteTimeUtc (null as string, time);
\r
1223 [ExpectedException(typeof(ArgumentException))]
\r
1224 public void SetLastWriteTimeUtcException2 ()
\r
1226 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1227 Directory.SetLastWriteTimeUtc (string.Empty, time);
\r
1231 [ExpectedException(typeof(FileNotFoundException))]
\r
1232 public void SetLastWriteTimeUtcException3 ()
\r
1234 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1235 string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.2";
\r
1236 DeleteDirectory (path);
\r
1238 Directory.SetLastWriteTimeUtc (path, time);
\r
1240 DeleteDirectory (path);
\r
1245 [ExpectedException(typeof(ArgumentException))]
\r
1246 public void SetLastWriteTimeUtcException4 ()
\r
1248 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1249 Directory.SetLastWriteTimeUtc (" ", time);
\r
1253 [ExpectedException(typeof(ArgumentException))]
\r
1254 public void SetLastWriteTimeUtcException5 ()
\r
1256 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1257 Directory.SetLastWriteTimeUtc (Path.InvalidPathChars [0].ToString (), time);
\r
1261 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1262 // public void SetLastWriteTimeUtcException6 ()
\r
1264 // DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
\r
1265 // string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.1";
\r
1267 // if (!Directory.Exists (path))
\r
1268 // Directory.CreateDirectory (path);
\r
1270 // Directory.SetLastWriteTimeUtc (path, time);
\r
1272 // DeleteDirectory (path);
\r
1277 [ExpectedException(typeof(ArgumentNullException))]
\r
1278 [Category("TargetJvmNotSupported")] // SetLastAccessTime not supported for TARGET_JVM
\r
1279 public void SetLastAccessTimeException1 ()
\r
1281 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1282 Directory.SetLastAccessTime (null as string, time);
\r
1286 [ExpectedException(typeof(ArgumentException))]
\r
1287 [Category("TargetJvmNotSupported")] // SetLastAccessTime not supported for TARGET_JVM
\r
1288 public void SetLastAccessTimeException2 ()
\r
1290 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1291 Directory.SetLastAccessTime (string.Empty, time);
\r
1295 [ExpectedException(typeof(FileNotFoundException))]
\r
1296 [Category("TargetJvmNotSupported")] // SetLastAccessTime not supported for TARGET_JVM
\r
1297 public void SetLastAccessTimeException3 ()
\r
1299 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1300 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.2";
\r
1301 DeleteDirectory (path);
\r
1303 Directory.SetLastAccessTime (path, time);
\r
1305 DeleteDirectory (path);
\r
1310 [ExpectedException(typeof(ArgumentException))]
\r
1311 [Category("TargetJvmNotSupported")] // SetLastAccessTime not supported for TARGET_JVM
\r
1312 public void SetLastAccessTimeException4 ()
\r
1314 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1315 Directory.SetLastAccessTime (" ", time);
\r
1319 [ExpectedException(typeof(ArgumentException))]
\r
1320 [Category("TargetJvmNotSupported")] // SetLastAccessTime not supported for TARGET_JVM
\r
1321 public void SetLastAccessTimeException5 ()
\r
1323 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1324 Directory.SetLastAccessTime (Path.InvalidPathChars [0].ToString (), time);
\r
1328 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1329 // public void SetLastAccessTimeException6 ()
\r
1331 // DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
\r
1332 // string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.1";
\r
1334 // if (!Directory.Exists (path))
\r
1335 // Directory.CreateDirectory (path);
\r
1337 // Directory.SetLastAccessTime (path, time);
\r
1339 // DeleteDirectory (path);
\r
1345 [ExpectedException(typeof(ArgumentNullException))]
\r
1346 [Category("TargetJvmNotSupported")] // SetLastAccessTime not supported for TARGET_JVM
\r
1347 public void SetLastAccessTimeUtcException1 ()
\r
1349 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1350 Directory.SetLastAccessTimeUtc (null as string, time);
\r
1354 [ExpectedException(typeof(ArgumentException))]
\r
1355 [Category("TargetJvmNotSupported")] // SetLastAccessTime not supported for TARGET_JVM
\r
1356 public void SetLastAccessTimeUtcException2 ()
\r
1358 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1359 Directory.SetLastAccessTimeUtc (string.Empty, time);
\r
1363 [ExpectedException(typeof(FileNotFoundException))]
\r
1364 [Category("TargetJvmNotSupported")] // SetLastAccessTime not supported for TARGET_JVM
\r
1365 public void SetLastAccessTimeUtcException3 ()
\r
1367 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1368 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";
\r
1369 DeleteDirectory (path);
\r
1371 Directory.SetLastAccessTimeUtc (path, time);
\r
1373 DeleteDirectory (path);
\r
1378 [ExpectedException(typeof(ArgumentException))]
\r
1379 [Category("TargetJvmNotSupported")] // SetLastAccessTime not supported for TARGET_JVM
\r
1380 public void SetLastAccessTimeUtcException4 ()
\r
1382 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1383 Directory.SetLastAccessTimeUtc (" ", time);
\r
1387 [ExpectedException(typeof(ArgumentException))]
\r
1388 [Category("TargetJvmNotSupported")] // SetLastAccessTime not supported for TARGET_JVM
\r
1389 public void SetLastAccessTimeUtcException5 ()
\r
1391 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1392 Directory.SetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString (), time);
\r
1396 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1397 // public void SetLastAccessTimeUtcException6 ()
\r
1399 // DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
\r
1400 // string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";
\r
1402 // if (!Directory.Exists (path))
\r
1403 // Directory.CreateDirectory (path);
\r
1405 // Directory.SetLastAccessTimeUtc (path, time);
\r
1407 // DeleteDirectory (path);
\r
1412 [ExpectedException(typeof(ArgumentNullException))]
\r
1413 [Category("TargetJvmNotSupported")] // SetCreationTime not supported for TARGET_JVM
\r
1414 public void SetCreationTimeException1 ()
\r
1416 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1417 Directory.SetCreationTime (null as string, time);
\r
1421 [ExpectedException(typeof(ArgumentException))]
\r
1422 [Category("TargetJvmNotSupported")] // SetCreationTime not supported for TARGET_JVM
\r
1423 public void SetCreationTimeException2 ()
\r
1425 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1426 Directory.SetCreationTime (string.Empty, time);
\r
1430 [ExpectedException(typeof(FileNotFoundException))]
\r
1431 [Category("TargetJvmNotSupported")] // SetCreationTime not supported for TARGET_JVM
\r
1432 public void SetCreationTimeException3 ()
\r
1434 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1435 string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.2";
\r
1436 DeleteDirectory (path);
\r
1439 Directory.SetCreationTime (path, time);
\r
1441 DeleteDirectory (path);
\r
1446 [ExpectedException(typeof(ArgumentException))]
\r
1447 [Category("TargetJvmNotSupported")] // SetCreationTime not supported for TARGET_JVM
\r
1448 public void SetCreationTimeException4 ()
\r
1450 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1451 Directory.SetCreationTime (" ", time);
\r
1455 [ExpectedException(typeof(ArgumentException))]
\r
1456 [Category("TargetJvmNotSupported")] // SetCreationTime not supported for TARGET_JVM
\r
1457 public void SetCreationTimeException5 ()
\r
1459 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1460 Directory.SetCreationTime (Path.InvalidPathChars [0].ToString (), time);
\r
1464 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1465 // public void SetCreationTimeException6 ()
\r
1467 // DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
\r
1468 // string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.1";
\r
1470 // if (!Directory.Exists (path))
\r
1471 // Directory.CreateDirectory (path);
\r
1473 // Directory.SetCreationTime (path, time);
\r
1474 // DeleteDirectory (path);
\r
1476 // DeleteDirectory (path);
\r
1482 [ExpectedException(typeof(ArgumentNullException))]
\r
1483 [Category("TargetJvmNotSupported")] // SetCreationTime not supported for TARGET_JVM
\r
1484 public void SetCreationTimeUtcException1 ()
\r
1486 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1487 Directory.SetCreationTimeUtc (null as string, time);
\r
1491 [ExpectedException(typeof(ArgumentException))]
\r
1492 [Category("TargetJvmNotSupported")] // SetCreationTime not supported for TARGET_JVM
\r
1493 public void SetCreationTimeUtcException2 ()
\r
1495 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1496 Directory.SetCreationTimeUtc (string.Empty, time);
\r
1500 [ExpectedException(typeof(FileNotFoundException))]
\r
1501 [Category("TargetJvmNotSupported")] // SetCreationTime not supported for TARGET_JVM
\r
1502 public void SetCreationTimeUtcException3 ()
\r
1504 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1505 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";
\r
1506 DeleteDirectory (path);
\r
1509 Directory.SetCreationTimeUtc (path, time);
\r
1510 DeleteDirectory (path);
\r
1512 DeleteDirectory (path);
\r
1517 [ExpectedException(typeof(ArgumentException))]
\r
1518 [Category("TargetJvmNotSupported")] // SetCreationTime not supported for TARGET_JVM
\r
1519 public void SetCreationTimeUtcException4 ()
\r
1521 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1522 Directory.SetCreationTimeUtc (" ", time);
\r
1526 [ExpectedException(typeof(ArgumentException))]
\r
1527 [Category("TargetJvmNotSupported")] // SetCreationTime not supported for TARGET_JVM
\r
1528 public void SetCreationTimeUtcException5 ()
\r
1530 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1531 Directory.SetCreationTimeUtc (Path.InvalidPathChars [0].ToString (), time);
\r
1535 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1536 // public void SetCreationTimeUtcException6 ()
\r
1538 // DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
\r
1539 // string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";
\r
1541 // if (!Directory.Exists (path))
\r
1542 // Directory.CreateDirectory (path);
\r
1544 // Directory.SetCreationTimeUtc (path, time);
\r
1545 // DeleteDirectory (path);
\r
1547 // DeleteDirectory (path);
\r
1552 public void GetDirectories ()
\r
1554 string path = TempFolder;
\r
1555 string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetDirectories";
\r
1556 DeleteDirectory (DirPath);
\r
1559 Directory.CreateDirectory (DirPath);
\r
1561 string [] dirs = Directory.GetDirectories (path);
\r
1563 foreach (string directory in dirs) {
\r
1565 if (directory == DirPath)
\r
1569 Assert.Fail ("Directory Not Found");
\r
1571 DeleteDirectory (DirPath);
\r
1575 [Test] // bug #346123
\r
1576 public void GetDirectories_Backslash ()
\r
1578 if (!RunningOnUnix)
\r
1579 // on Windows, backslash is used as directory separator
\r
1582 string dir = Path.Combine (TempFolder, @"sub\dir");
\r
1583 Directory.CreateDirectory (dir);
\r
1585 Assert.IsTrue (Directory.Exists (dir), "#A1");
\r
1586 Assert.IsFalse (Directory.Exists (Path.Combine (TempFolder, "dir")), "#A2");
\r
1588 string [] dirs = Directory.GetDirectories (TempFolder);
\r
1589 Assert.AreEqual (1, dirs.Length, "#B1");
\r
1590 Assert.AreEqual (dir, dirs [0], "#B2");
\r
1594 public void GetParentOfRootDirectory ()
\r
1596 DirectoryInfo info;
\r
1598 info = Directory.GetParent (Path.GetPathRoot (Path.GetTempPath ()));
\r
1599 Assert.IsNull (info);
\r
1603 public void GetFiles ()
\r
1605 string path = TempFolder;
\r
1606 string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetFiles";
\r
1607 if (File.Exists (DirPath))
\r
1608 File.Delete (DirPath);
\r
1611 File.Create (DirPath).Close ();
\r
1612 string [] files = Directory.GetFiles (TempFolder);
\r
1613 foreach (string directory in files) {
\r
1615 if (directory == DirPath)
\r
1619 Assert.Fail ("File Not Found");
\r
1621 if (File.Exists (DirPath))
\r
1622 File.Delete (DirPath);
\r
1626 [Test] // bug #346123
\r
1627 public void GetFiles_Backslash ()
\r
1629 if (!RunningOnUnix)
\r
1630 // on Windows, backslash is used as directory separator
\r
1633 string file = Path.Combine (TempFolder, @"doc\temp1.file");
\r
1634 File.Create (file).Close ();
\r
1636 Assert.IsTrue (File.Exists (file), "#A1");
\r
1637 Assert.IsFalse (File.Exists (Path.Combine (TempFolder, "temp1.file")), "#A2");
\r
1639 string [] files = Directory.GetFiles (TempFolder);
\r
1640 Assert.AreEqual (1, files.Length, "#B1");
\r
1641 Assert.AreEqual (file, files [0], "#B2");
\r
1644 [Test] // bug #82212 and bug #325107
\r
1645 public void GetFiles_Pattern ()
\r
1647 string [] files = Directory.GetFiles (TempFolder, "*.*");
\r
1648 Assert.IsNotNull (files, "#A1");
\r
1649 Assert.AreEqual (0, files.Length, "#A2");
\r
1651 string tempFile1 = Path.Combine (TempFolder, "tempFile1");
\r
1652 File.Create (tempFile1).Close ();
\r
1654 files = Directory.GetFiles (TempFolder, "*.*");
\r
1655 Assert.IsNotNull (files, "#B1");
\r
1656 Assert.AreEqual (1, files.Length, "#B2");
\r
1657 Assert.AreEqual (tempFile1, files [0], "#B3");
\r
1659 string tempFile2 = Path.Combine (TempFolder, "FileTemp2.tmp");
\r
1660 File.Create (tempFile2).Close ();
\r
1662 files = Directory.GetFiles (TempFolder, "*.*");
\r
1663 Assert.IsNotNull (files, "#C1");
\r
1664 Assert.AreEqual (2, files.Length, "#C2");
\r
1666 files = Directory.GetFiles (TempFolder, "temp*.*");
\r
1667 Assert.IsNotNull (files, "#D1");
\r
1668 Assert.AreEqual (1, files.Length, "#D2");
\r
1669 Assert.AreEqual (tempFile1, files [0], "#D3");
\r
1671 string tempFile3 = Path.Combine (TempFolder, "tempFile3.txt");
\r
1672 File.Create (tempFile3).Close ();
\r
1674 files = Directory.GetFiles (TempFolder, "*File*.*");
\r
1675 Assert.IsNotNull (files, "#E1");
\r
1676 Assert.AreEqual (3, files.Length, "#E2");
\r
1678 files = Directory.GetFiles (TempFolder, "*File*.tmp");
\r
1679 Assert.IsNotNull (files, "#F1");
\r
1680 Assert.AreEqual (1, files.Length, "#F2");
\r
1681 Assert.AreEqual (tempFile2, files [0], "#F3");
\r
1683 files = Directory.GetFiles (TempFolder, "*tempFile*");
\r
1684 Assert.IsNotNull (files, "#G1");
\r
1685 Assert.AreEqual (2, files.Length, "#G2");
\r
1687 files = Directory.GetFiles (TempFolder, "*tempFile1");
\r
1688 Assert.IsNotNull (files, "#H1");
\r
1689 Assert.AreEqual (1, files.Length, "#H2");
\r
1690 Assert.AreEqual (tempFile1, files [0], "#H3");
\r
1692 files = Directory.GetFiles (TempFolder, "*.txt");
\r
1693 Assert.IsNotNull (files, "#I1");
\r
1694 Assert.AreEqual (1, files.Length, "#I2");
\r
1695 Assert.AreEqual (tempFile3, files [0], "#I3");
\r
1697 files = Directory.GetFiles (TempFolder, "*.t*");
\r
1698 Assert.IsNotNull (files, "#J1");
\r
1699 Assert.AreEqual (2, files.Length, "#J2");
\r
1701 files = Directory.GetFiles (TempFolder, "temp*.*");
\r
1702 Assert.IsNotNull (files, "#K1");
\r
1703 Assert.AreEqual (2, files.Length, "#K2");
\r
1705 File.Delete (tempFile1);
\r
1707 files = Directory.GetFiles (TempFolder, "temp*.*");
\r
1708 Assert.IsNotNull (files, "#L1");
\r
1709 Assert.AreEqual (1, files.Length, "#L2");
\r
1710 Assert.AreEqual (tempFile3, files [0], "#L3");
\r
1712 files = Directory.GetFiles (TempFolder, ".*");
\r
1713 Assert.IsNotNull (files, "#M1");
\r
1714 Assert.AreEqual (0, files.Length, "#M2");
\r
1716 string tempFile4 = Path.Combine (TempFolder, "tempFile4.");
\r
1717 File.Create (tempFile4).Close ();
\r
1719 files = Directory.GetFiles (TempFolder, "temp*.");
\r
1720 Assert.IsNotNull (files, "#N1");
\r
1721 Assert.AreEqual (1, files.Length, "#N2");
\r
1722 if (RunningOnUnix)
\r
1723 Assert.AreEqual (tempFile4, files [0], "#N3");
\r
1724 else // on Windows, the trailing dot is automatically trimmed
\r
1725 Assert.AreEqual (Path.Combine (TempFolder, "tempFile4"), files [0], "#N3");
\r
1729 public void GetFiles_580090 ()
\r
1731 string cwd = Directory.GetCurrentDirectory ();
\r
1732 Directory.SetCurrentDirectory (Path.GetTempPath ());
\r
1734 string tempFile = Path.Combine (TempFolder, "tempFile.txt");
\r
1735 File.Create (tempFile).Close ();
\r
1738 string [] files = Directory.GetFiles (".", TempSubFolder + DSC + "*.t*");
\r
1739 Assert.IsNotNull (files, "#J1");
\r
1740 Assert.AreEqual (1, files.Length, "#J2");
\r
1743 Directory.SetCurrentDirectory (cwd);
\r
1749 [ExpectedException (typeof (ArgumentNullException))]
\r
1750 public void SetCurrentDirectoryNull ()
\r
1752 Directory.SetCurrentDirectory (null);
\r
1756 [ExpectedException (typeof (ArgumentException))]
\r
1757 public void SetCurrentDirectoryEmpty ()
\r
1759 Directory.SetCurrentDirectory (String.Empty);
\r
1763 [ExpectedException (typeof (ArgumentException))]
\r
1764 public void SetCurrentDirectoryWhitespace ()
\r
1766 Directory.SetCurrentDirectory (" ");
\r
1771 public void GetNoFiles () // Bug 58875. This throwed an exception on windows.
\r
1773 DirectoryInfo dir = new DirectoryInfo (".");
\r
1774 dir.GetFiles ("*.nonext");
\r
1778 public void FilenameOnly () // bug 78209
\r
1780 Directory.GetParent ("somefile");
\r
1783 private static bool RunningOnUnix {
\r
1785 // check for Unix platforms - see FAQ for more details
\r
1786 // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
\r
1787 int platform = (int) Environment.OSVersion.Platform;
\r
1788 return ((platform == 4) || (platform == 128) || (platform == 6));
\r
1792 private void DeleteDirectory (string path)
\r
1794 if (Directory.Exists (path))
\r
1795 Directory.Delete (path, true);
\r
1798 private void DeleteFile (string path)
\r
1800 if (File.Exists (path))
\r
1801 File.Delete (path);
\r