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
72 var files1 = new List<string> (Directory.EnumerateFiles (TempFolder, "*.src")).ToArray ();
\r
73 Array.Sort (files1);
\r
74 Assert.AreEqual (2, files1.Length, "#1.b");
\r
75 Assert.AreEqual (afile, files1 [0], "#2.b");
\r
76 Assert.AreEqual (bfile, files1 [1], "#3.b");
\r
78 var files2 = Directory.GetFileSystemEntries (TempFolder, "*.src");
\r
79 Array.Sort (files2);
\r
80 Assert.AreEqual (3, files2.Length, "#1.c");
\r
81 Assert.AreEqual (afile, files2 [0], "#2.c");
\r
82 Assert.AreEqual (bfile, files2 [1], "#3.c");
\r
83 Assert.AreEqual (cdir, files2 [2], "#4.c");
\r
85 var files3 = new List<string> (Directory.EnumerateFileSystemEntries (TempFolder, "*.src")).ToArray ();
\r
86 Array.Sort (files3);
\r
87 Assert.AreEqual (3, files3.Length, "#1.d");
\r
88 Assert.AreEqual (afile, files3 [0], "#2.d");
\r
89 Assert.AreEqual (bfile, files3 [1], "#3.d");
\r
90 Assert.AreEqual (cdir, files3 [2], "#4.d");
\r
94 public void CreateDirectory ()
\r
96 string path = TempFolder + DSC + "DirectoryTest.Test.1";
\r
97 DeleteDirectory (path);
\r
99 DirectoryInfo info = Directory.CreateDirectory (path);
\r
100 Assert.IsTrue (info.Exists, "#1");
\r
101 Assert.AreEqual (".1", info.Extension, "#2");
\r
102 Assert.IsTrue (info.FullName.EndsWith ("DirectoryTest.Test.1"), "#3");
\r
103 Assert.AreEqual ("DirectoryTest.Test.1", info.Name, "#4");
\r
105 DeleteDirectory (path);
\r
109 /* Commented out: a directory named ":" is legal in unix
\r
111 public void CreateDirectoryNotSupportedException ()
\r
113 DeleteDirectory (":");
\r
115 DirectoryInfo info = Directory.CreateDirectory (":");
\r
116 Assert.Fail ("#1");
\r
117 } catch (ArgumentException ex) {
\r
118 // The path is not of a legal form
\r
119 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
120 Assert.IsNull (ex.InnerException, "#3");
\r
121 Assert.IsNotNull (ex.Message, "#4");
\r
122 Assert.IsNull (ex.ParamName, "#5");
\r
124 DeleteDirectory (":");
\r
129 public void CreateDirectory_Path_Null ()
\r
132 Directory.CreateDirectory (null as string);
\r
133 Assert.Fail ("#1");
\r
134 } catch (ArgumentNullException ex) {
\r
135 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
136 Assert.IsNull (ex.InnerException, "#3");
\r
137 Assert.IsNotNull (ex.Message, "#4");
\r
138 Assert.AreEqual ("path", ex.ParamName, "#5");
\r
143 public void CreateDirectory_Path_Empty ()
\r
146 Directory.CreateDirectory (string.Empty);
\r
147 Assert.Fail ("#1");
\r
148 } catch (ArgumentException ex) {
\r
149 // Path cannot be the empty string or all whitespace
\r
150 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
151 Assert.IsNull (ex.InnerException, "#3");
\r
152 Assert.IsNotNull (ex.Message, "#4");
\r
153 Assert.IsNull (ex.ParamName, "#5");
\r
158 public void CreateDirectory_Path_Whitespace ()
\r
161 Directory.CreateDirectory (" ");
\r
162 Assert.Fail ("#1");
\r
163 } catch (ArgumentException ex) {
\r
164 // The path is not of a legal form
\r
165 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
166 Assert.IsNull (ex.InnerException, "#3");
\r
167 Assert.IsNotNull (ex.Message, "#4");
\r
168 Assert.IsNull (ex.ParamName, "#5");
\r
173 public void CreateDirectory_Path_InvalidChars ()
\r
175 string path = TempFolder + DSC + "DirectoryTest.Test";
\r
176 DeleteDirectory (path);
\r
180 DirectoryInfo info = Directory.CreateDirectory (path);
\r
181 Assert.Fail ("#1");
\r
182 } catch (ArgumentException ex) {
\r
183 // The path contains illegal characters
\r
184 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
\r
185 Assert.IsNull (ex.InnerException, "#3");
\r
186 Assert.IsNotNull (ex.Message, "#4");
\r
187 Assert.IsNull (ex.ParamName, "#5");
\r
189 DeleteDirectory (path);
\r
194 public void CreateDirectoryAlreadyExists ()
\r
196 string path = TempFolder + DSC + "DirectoryTest.Test.Exists";
\r
197 DeleteDirectory (path);
\r
199 DirectoryInfo info1 = Directory.CreateDirectory (path);
\r
200 DirectoryInfo info2 = Directory.CreateDirectory (path);
\r
202 Assert.IsTrue (info2.Exists, "#1");
\r
203 Assert.IsTrue (info2.FullName.EndsWith ("DirectoryTest.Test.Exists"), "#2");
\r
204 Assert.AreEqual ("DirectoryTest.Test.Exists", info2.Name, "#3");
\r
206 DeleteDirectory (path);
\r
211 public void CreateDirectoryAlreadyExistsAsFile ()
\r
213 string path = TempFolder + DSC + "DirectoryTest.Test.ExistsAsFile";
\r
214 DeleteDirectory (path);
\r
217 FileStream fstream = File.Create (path);
\r
220 DirectoryInfo dinfo = Directory.CreateDirectory (path);
\r
221 Assert.Fail ("#1");
\r
222 } catch (IOException ex) {
\r
223 Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
\r
224 // exception message contains the path
\r
225 Assert.IsTrue (ex.Message.Contains (path), "#3");
\r
226 Assert.IsNull (ex.InnerException, "#4");
\r
228 DeleteDirectory (path);
\r
234 public void CreateDirectoryRelativePath ()
\r
236 var path = Path.Combine (TempFolder, "relativepath", "not_this_folder");
\r
237 path = Path.Combine (path, "..");
\r
239 var res = Directory.CreateDirectory (path);
\r
240 Assert.AreEqual ("relativepath", res.ToString (), "#1");
\r
241 Assert.IsTrue (Directory.Exists (Path.Combine (TempFolder, "relativepath")), "#2");
\r
245 public void Delete ()
\r
247 string path = TempFolder + DSC + "DirectoryTest.Test.Delete.1";
\r
248 DeleteDirectory (path);
\r
250 Directory.CreateDirectory (path);
\r
251 Assert.IsTrue (Directory.Exists (path), "#1");
\r
253 Directory.CreateDirectory (path + DSC + "DirectoryTest.Test.Delete.1.2");
\r
254 Assert.IsTrue (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#2");
\r
256 Directory.Delete (path + DSC + "DirectoryTest.Test.Delete.1.2");
\r
257 Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#3");
\r
258 Assert.IsTrue (Directory.Exists (path), "#4");
\r
260 Directory.Delete (path);
\r
261 Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#5");
\r
262 Assert.IsFalse (Directory.Exists (path), "#6");
\r
264 Directory.CreateDirectory (path);
\r
265 Directory.CreateDirectory (path + DSC + "DirectoryTest.Test.Delete.1.2");
\r
266 Assert.IsTrue (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#7");
\r
267 Assert.IsTrue (Directory.Exists (path), "#8");
\r
269 Directory.Delete (path, true);
\r
270 Assert.IsFalse (Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"), "#9");
\r
271 Assert.IsFalse (Directory.Exists (path), "#10");
\r
273 DeleteDirectory (path);
\r
278 [ExpectedException(typeof(ArgumentException))]
\r
279 public void DeleteArgumentException ()
\r
281 Directory.Delete (string.Empty);
\r
285 [ExpectedException(typeof(ArgumentException))]
\r
286 public void DeleteArgumentException2 ()
\r
288 Directory.Delete (" ");
\r
292 [ExpectedException(typeof(ArgumentException))]
\r
293 public void DeleteArgumentException3 ()
\r
295 string path = TempFolder + DSC + "DirectoryTest.Test.4";
\r
296 DeleteDirectory (path);
\r
298 path += Path.InvalidPathChars [0];
\r
299 Directory.Delete (path);
\r
303 [ExpectedException(typeof(ArgumentNullException))]
\r
304 public void DeleteArgumentNullException ()
\r
306 Directory.Delete (null as string);
\r
310 [ExpectedException(typeof(DirectoryNotFoundException))]
\r
311 public void DeleteDirectoryNotFoundException ()
\r
313 string path = TempFolder + DSC + "DirectoryTest.Test.5";
\r
314 DeleteDirectory (path);
\r
316 Directory.Delete (path);
\r
320 [ExpectedException(typeof(IOException))]
\r
321 public void DeleteArgumentException4 ()
\r
323 string path = TempFolder + DSC + "DirectoryTest.Test.6";
\r
324 DeleteDirectory (path);
\r
325 FileStream s = null;
\r
326 Directory.CreateDirectory (path);
\r
328 s = File.Create (path + DSC + "DirectoryTest.Test.6");
\r
329 Directory.Delete (path);
\r
333 DeleteDirectory (path);
\r
338 public void DeleteDirectoryOnExistingFileName ()
\r
340 string path = TempFolder + DSC + "DirectoryTest.Test.ExistsAsFile";
\r
341 DeleteDirectory (path);
\r
344 FileStream fstream = File.Create (path);
\r
347 Directory.Delete (path);
\r
348 Assert.Fail ("#1");
\r
350 catch (IOException ex) {
\r
351 Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
\r
352 // exception message DOES NOT contains the path
\r
353 Assert.IsFalse (ex.Message.IndexOf (path) >= 0, "#3");
\r
354 Assert.IsNull (ex.InnerException, "#4");
\r
357 DeleteDirectory (path);
\r
363 public void Exists ()
\r
365 Assert.IsFalse (Directory.Exists (null as string));
\r
368 #if !MOBILE // We don't support yet the Process class.
\r
369 [Test] // bug #78239
\r
370 public void ExistsAccessDenied ()
\r
372 if (!RunningOnUnix)
\r
373 Assert.Ignore ("Not running on Unix."); // this test does not work on Windows.
\r
375 string path = TempFolder + DSC + "ExistsAccessDenied";
\r
377 Directory.CreateDirectory (path);
\r
378 global::Mono.Posix.Syscall.chmod (path, 0);
\r
380 Assert.IsFalse (Directory.Exists(path + DSC + "b"));
\r
382 global::Mono.Posix.Syscall.chmod (path, (global::Mono.Posix.FileMode) 755);
\r
383 Directory.Delete (path);
\r
389 [ExpectedException(typeof(ArgumentNullException))]
\r
390 public void GetCreationTimeException1 ()
\r
392 Directory.GetCreationTime (null as string);
\r
396 [ExpectedException(typeof(ArgumentException))]
\r
397 public void GetCreationTimeException2 ()
\r
399 Directory.GetCreationTime (string.Empty);
\r
403 public void GetCreationTimeException_NonExistingPath ()
\r
405 string path = TempFolder + DSC + "DirectoryTest.GetCreationTime.1";
\r
406 DeleteDirectory (path);
\r
408 DateTime time = Directory.GetCreationTime (path);
\r
410 DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
\r
411 Assert.AreEqual (expectedTime.Year, time.Year, "#1");
\r
412 Assert.AreEqual (expectedTime.Month, time.Month, "#2");
\r
413 Assert.AreEqual (expectedTime.Day, time.Day, "#3");
\r
414 Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
\r
415 Assert.AreEqual (expectedTime.Second, time.Second, "#5");
\r
416 Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
\r
418 DeleteDirectory (path);
\r
423 [ExpectedException(typeof(ArgumentException))]
\r
424 public void GetCreationTimeException4 ()
\r
426 Directory.GetCreationTime (" ");
\r
430 [ExpectedException(typeof(ArgumentException))]
\r
431 public void GetCreationTimeException5 ()
\r
433 Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());
\r
437 [ExpectedException(typeof(ArgumentNullException))]
\r
438 public void GetCreationTimeUtcException1 ()
\r
440 Directory.GetCreationTimeUtc (null as string);
\r
444 [ExpectedException(typeof(ArgumentException))]
\r
445 public void GetCreationTimeUtcException2 ()
\r
447 Directory.GetCreationTimeUtc (string.Empty);
\r
451 public void GetCreationTimeUtc_NonExistingPath ()
\r
453 string path = TempFolder + DSC + "DirectoryTest.GetCreationTimeUtc.1";
\r
454 DeleteDirectory (path);
\r
457 DateTime time = Directory.GetCreationTimeUtc (path);
\r
459 Assert.AreEqual (1601, time.Year, "#1");
\r
460 Assert.AreEqual (1, time.Month, "#2");
\r
461 Assert.AreEqual (1, time.Day, "#3");
\r
462 Assert.AreEqual (0, time.Hour, "#4");
\r
463 Assert.AreEqual (0, time.Second, "#5");
\r
464 Assert.AreEqual (0, time.Millisecond, "#6");
\r
466 DeleteDirectory (path);
\r
471 [ExpectedException(typeof(ArgumentException))]
\r
472 public void GetCreationTimeUtcException4 ()
\r
474 Directory.GetCreationTimeUtc (" ");
\r
478 [ExpectedException(typeof(ArgumentException))]
\r
479 public void GetCreationTimeUtcException5 ()
\r
481 Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());
\r
485 [ExpectedException(typeof(ArgumentNullException))]
\r
486 public void GetLastAccessTime_Null ()
\r
488 Directory.GetLastAccessTime (null as string);
\r
492 [ExpectedException(typeof(ArgumentException))]
\r
493 public void GetLastAccessTimeException2 ()
\r
495 Directory.GetLastAccessTime (string.Empty);
\r
499 public void GetLastAccessTime_NonExistingPath ()
\r
501 string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTime.1";
\r
502 DeleteDirectory (path);
\r
505 DateTime time = Directory.GetLastAccessTime (path);
\r
507 DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
\r
508 Assert.AreEqual (expectedTime.Year, time.Year, "#1");
\r
509 Assert.AreEqual (expectedTime.Month, time.Month, "#2");
\r
510 Assert.AreEqual (expectedTime.Day, time.Day, "#3");
\r
511 Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
\r
512 Assert.AreEqual (expectedTime.Second, time.Second, "#5");
\r
513 Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
\r
515 DeleteDirectory (path);
\r
520 [ExpectedException(typeof(ArgumentException))]
\r
521 public void GetLastAccessTimeException4 ()
\r
523 Directory.GetLastAccessTime (" ");
\r
527 [ExpectedException(typeof(ArgumentException))]
\r
528 public void GetLastAccessTimeException5 ()
\r
530 Directory.GetLastAccessTime (Path.InvalidPathChars [0].ToString ());
\r
534 [ExpectedException(typeof(ArgumentNullException))]
\r
535 public void GetLastAccessTimeUtc_Null ()
\r
537 Directory.GetLastAccessTimeUtc (null as string);
\r
541 [ExpectedException(typeof(ArgumentException))]
\r
542 public void GetLastAccessTimeUtcException2 ()
\r
544 Directory.GetLastAccessTimeUtc (string.Empty);
\r
548 public void GetLastAccessTimeUtc_NonExistingPath ()
\r
550 string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTimeUtc.1";
\r
551 DeleteDirectory (path);
\r
553 DateTime time = Directory.GetLastAccessTimeUtc (path);
\r
555 Assert.AreEqual (1601, time.Year, "#1");
\r
556 Assert.AreEqual (1, time.Month, "#2");
\r
557 Assert.AreEqual (1, time.Day, "#3");
\r
558 Assert.AreEqual (0, time.Hour, "#4");
\r
559 Assert.AreEqual (0, time.Second, "#5");
\r
560 Assert.AreEqual (0, time.Millisecond, "#6");
\r
562 DeleteDirectory (path);
\r
567 [ExpectedException(typeof(ArgumentException))]
\r
568 public void GetLastAccessTimeUtcException4 ()
\r
570 Directory.GetLastAccessTimeUtc (" ");
\r
574 [ExpectedException(typeof(ArgumentException))]
\r
575 public void GetLastAccessTimeUtcException5 ()
\r
577 Directory.GetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString ());
\r
581 [ExpectedException(typeof(ArgumentNullException))]
\r
582 public void GetLastWriteTimeException1 ()
\r
584 Directory.GetLastWriteTime (null as string);
\r
588 [ExpectedException(typeof(ArgumentException))]
\r
589 public void GetLastWriteTimeException2 ()
\r
591 Directory.GetLastWriteTime (string.Empty);
\r
595 public void GetLastWriteTime_NonExistingPath ()
\r
597 string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTime.1";
\r
598 DeleteDirectory (path);
\r
600 DateTime time = Directory.GetLastWriteTime (path);
\r
602 DateTime expectedTime = (new DateTime (1601, 1, 1)).ToLocalTime ();
\r
603 Assert.AreEqual (expectedTime.Year, time.Year, "#1");
\r
604 Assert.AreEqual (expectedTime.Month, time.Month, "#2");
\r
605 Assert.AreEqual (expectedTime.Day, time.Day, "#3");
\r
606 Assert.AreEqual (expectedTime.Hour, time.Hour, "#4");
\r
607 Assert.AreEqual (expectedTime.Second, time.Second, "#5");
\r
608 Assert.AreEqual (expectedTime.Millisecond, time.Millisecond, "#6");
\r
610 DeleteDirectory (path);
\r
615 [ExpectedException(typeof(ArgumentException))]
\r
616 public void GetLastWriteTimeException4 ()
\r
618 Directory.GetLastWriteTime (" ");
\r
622 [ExpectedException(typeof(ArgumentException))]
\r
623 public void GetLastWriteTimeException5 ()
\r
625 Directory.GetLastWriteTime (Path.InvalidPathChars [0].ToString ());
\r
629 [ExpectedException(typeof(ArgumentNullException))]
\r
630 public void GetLastWriteTimeUtcException1 ()
\r
632 Directory.GetLastWriteTimeUtc (null as string);
\r
636 [ExpectedException(typeof(ArgumentException))]
\r
637 public void GetLastWriteTimeUtcException2 ()
\r
639 Directory.GetLastWriteTimeUtc (string.Empty);
\r
643 public void GetLastWriteTimeUtc_NonExistingPath ()
\r
645 string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTimeUtc.1";
\r
646 DeleteDirectory (path);
\r
648 DateTime time = Directory.GetLastWriteTimeUtc (path);
\r
650 Assert.AreEqual (1601, time.Year, "#1");
\r
651 Assert.AreEqual (1, time.Month, "#2");
\r
652 Assert.AreEqual (1, time.Day, "#3");
\r
653 Assert.AreEqual (0, time.Hour, "#4");
\r
654 Assert.AreEqual (0, time.Second, "#5");
\r
655 Assert.AreEqual (0, time.Millisecond, "#6");
\r
657 DeleteDirectory (path);
\r
663 [ExpectedException(typeof(ArgumentException))]
\r
664 public void GetLastWriteTimeUtcException4 ()
\r
666 Directory.GetLastWriteTimeUtc (" ");
\r
670 [ExpectedException(typeof(ArgumentException))]
\r
671 public void GetLastWriteTimeUtcException5 ()
\r
673 Directory.GetLastWriteTimeUtc (Path.InvalidPathChars[0].ToString ());
\r
677 public void Move_DestDirName_Empty ()
\r
680 Directory.Move (TempFolder, string.Empty);
\r
681 Assert.Fail ("#A1");
\r
682 } catch (ArgumentException ex) {
\r
683 // Empty file name is not legal
\r
684 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
685 Assert.IsNull (ex.InnerException, "#A3");
\r
686 Assert.IsNotNull (ex.Message, "#A4");
\r
687 Assert.IsNotNull (ex.ParamName, "#A5");
\r
688 Assert.AreEqual ("destDirName", ex.ParamName, "#A6");
\r
692 Directory.Move (TempFolder, " ");
\r
693 Assert.Fail ("#B1");
\r
694 } catch (ArgumentException ex) {
\r
695 // The path is not of a legal form
\r
696 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
697 Assert.IsNull (ex.InnerException, "#B3");
\r
698 Assert.IsNotNull (ex.Message, "#B4");
\r
703 public void Move_DestDirName_Null ()
\r
706 Directory.Move (TempFolder, (string) null);
\r
707 Assert.Fail ("#1");
\r
708 } catch (ArgumentNullException ex) {
\r
709 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
710 Assert.IsNull (ex.InnerException, "#3");
\r
711 Assert.IsNotNull (ex.Message, "#4");
\r
712 Assert.IsNotNull (ex.ParamName, "#5");
\r
713 Assert.AreEqual ("destDirName", ex.ParamName, "#6");
\r
718 public void Move_SourceDirName_Empty ()
\r
721 Directory.Move (string.Empty, TempFolder);
\r
722 Assert.Fail ("#A1");
\r
723 } catch (ArgumentException ex) {
\r
724 // Empty file name is not legal
\r
725 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
726 Assert.IsNull (ex.InnerException, "#A3");
\r
727 Assert.IsNotNull (ex.Message, "#A4");
\r
728 Assert.IsNotNull (ex.ParamName, "#A5");
\r
729 Assert.AreEqual ("sourceDirName", ex.ParamName, "#A6");
\r
733 Directory.Move (" ", TempFolder);
\r
734 Assert.Fail ("#B1");
\r
735 } catch (ArgumentException ex) {
\r
736 // The path is not of a legal form
\r
737 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
738 Assert.IsNull (ex.InnerException, "#B3");
\r
739 Assert.IsNotNull (ex.Message, "#B4");
\r
744 public void Move_SourceDirName_Null ()
\r
747 Directory.Move ((string) null, TempFolder);
\r
748 Assert.Fail ("#1");
\r
749 } catch (ArgumentNullException ex) {
\r
750 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
\r
751 Assert.IsNull (ex.InnerException, "#3");
\r
752 Assert.IsNotNull (ex.Message, "#4");
\r
753 Assert.IsNotNull (ex.ParamName, "#5");
\r
754 Assert.AreEqual ("sourceDirName", ex.ParamName, "#6");
\r
759 public void MoveDirectory ()
\r
761 string path = TempFolder + DSC + "DirectoryTest.Test.9";
\r
762 string path2 = TempFolder + DSC + "DirectoryTest.Test.10";
\r
763 DeleteDirectory (path);
\r
764 DeleteDirectory (path2);
\r
766 Directory.CreateDirectory (path);
\r
767 Directory.CreateDirectory (path + DSC + "dir");
\r
768 Assert.IsTrue (Directory.Exists (path + DSC + "dir"), "#1");
\r
770 Directory.Move (path, path2);
\r
771 Assert.IsFalse (Directory.Exists (path + DSC + "dir"), "#2");
\r
772 Assert.IsTrue (Directory.Exists (path2 + DSC + "dir"), "#3");
\r
774 DeleteDirectory (path);
\r
775 DeleteDirectory (path2);
\r
776 if (Directory.Exists (path2 + DSC + "dir"))
\r
777 Directory.Delete (path2 + DSC + "dir", true);
\r
782 [ExpectedException (typeof (IOException))]
\r
783 public void MoveDirectory_Same ()
\r
785 string path = TempFolder + DSC + "DirectoryTest.Test.8";
\r
786 DeleteDirectory (path);
\r
788 Directory.Move (path, path);
\r
790 DeleteDirectory (path);
\r
795 public void MoveFile ()
\r
797 string tempFile1 = Path.Combine (TempFolder, "temp1.txt");
\r
798 string tempFile2 = Path.Combine (TempFolder, "temp2.txt");
\r
800 using (StreamWriter sw = File.CreateText (tempFile1)) {
\r
801 sw.Write ("temp1");
\r
803 Assert.IsFalse (File.Exists (tempFile2), "#1");
\r
804 Directory.Move (tempFile1, tempFile2);
\r
805 Assert.IsFalse (File.Exists (tempFile1), "#2");
\r
806 Assert.IsTrue (File.Exists (tempFile2), "#3");
\r
807 using (StreamReader sr = File.OpenText (tempFile2)) {
\r
808 Assert.AreEqual ("temp1", sr.ReadToEnd (), "#4");
\r
813 public void MoveFile_DestDir_Exists ()
\r
815 string tempFile = Path.Combine (TempFolder, "temp1.txt");
\r
816 string tempDir = Path.Combine (TempFolder, "temp2");
\r
818 using (StreamWriter sw = File.CreateText (tempFile)) {
\r
819 sw.Write ("temp1");
\r
821 Directory.CreateDirectory (tempDir);
\r
824 Directory.Move (tempFile, tempDir);
\r
825 Assert.Fail ("#A1");
\r
826 } catch (IOException ex) {
\r
827 // Cannot create a file when that file already exists
\r
828 Assert.AreEqual (typeof (IOException), ex.GetType (), "#A2");
\r
829 Assert.IsNull (ex.InnerException, "#A3");
\r
830 Assert.IsNotNull (ex.Message, "#A4");
\r
833 Assert.IsTrue (File.Exists (tempFile), "#B1");
\r
834 Assert.IsFalse (File.Exists (tempDir), "#B2");
\r
835 Assert.IsTrue (Directory.Exists (tempDir), "#B3");
\r
839 public void MoveFile_DestFile_Exists ()
\r
841 string tempFile1 = Path.Combine (TempFolder, "temp1.txt");
\r
842 string tempFile2 = Path.Combine (TempFolder, "temp2.txt");
\r
844 using (StreamWriter sw = File.CreateText (tempFile1)) {
\r
845 sw.Write ("temp1");
\r
847 using (StreamWriter sw = File.CreateText (tempFile2)) {
\r
848 sw.Write ("temp2");
\r
852 Directory.Move (tempFile1, tempFile2);
\r
853 Assert.Fail ("#A1");
\r
854 } catch (IOException ex) {
\r
855 // Cannot create a file when that file already exists
\r
856 Assert.AreEqual (typeof (IOException), ex.GetType (), "#A2");
\r
857 Assert.IsNull (ex.InnerException, "#A3");
\r
858 Assert.IsNotNull (ex.Message, "#A4");
\r
861 Assert.IsTrue (File.Exists (tempFile1), "#B1");
\r
862 using (StreamReader sr = File.OpenText (tempFile1)) {
\r
863 Assert.AreEqual ("temp1", sr.ReadToEnd (), "#B2");
\r
866 Assert.IsTrue (File.Exists (tempFile2), "#C1");
\r
867 using (StreamReader sr = File.OpenText (tempFile2)) {
\r
868 Assert.AreEqual ("temp2", sr.ReadToEnd (), "#C2");
\r
873 public void MoveFile_Same ()
\r
875 string tempFile = Path.Combine (TempFolder, "temp.txt");
\r
878 Directory.Move (tempFile, tempFile);
\r
879 Assert.Fail ("#1");
\r
880 } catch (IOException ex) {
\r
881 // Source and destination path must be different
\r
882 Assert.AreEqual (typeof (IOException), ex.GetType (), "#2");
\r
883 Assert.IsNull (ex.InnerException, "#3");
\r
884 Assert.IsNotNull (ex.Message, "#4");
\r
889 [ExpectedException(typeof(ArgumentException))]
\r
890 [Ignore ("On IA64, causes nunit to abort due to bug #76388")]
\r
891 public void MoveException4 ()
\r
893 string path = TempFolder + DSC + "DirectoryTest.Test.13";
\r
894 path += Path.InvalidPathChars [0];
\r
895 string path2 = TempFolder + DSC + "DirectoryTest.Test.13";
\r
896 DeleteDirectory (path);
\r
897 DeleteDirectory (path2);
\r
899 Directory.CreateDirectory (path2);
\r
900 Directory.Move (path2, path);
\r
902 DeleteDirectory (path);
\r
903 DeleteDirectory (path2);
\r
908 [ExpectedException(typeof(DirectoryNotFoundException))]
\r
909 public void MoveException5 ()
\r
911 string path = TempFolder + DSC + "DirectoryTest.Test.14";
\r
912 DeleteDirectory (path);
\r
914 Directory.Move (path, path + "Test.Test");
\r
916 DeleteDirectory (path);
\r
917 DeleteDirectory (path + "Test.Test");
\r
922 [ExpectedException(typeof(IOException))]
\r
923 public void MoveDirectory_Dest_SubDir ()
\r
925 string path = TempFolder + DSC + "DirectoryTest.Test.15";
\r
926 DeleteDirectory (path);
\r
928 Directory.CreateDirectory (path);
\r
929 Directory.Move (path, path + DSC + "dir");
\r
931 DeleteDirectory (path);
\r
932 DeleteDirectory (path + DSC + "dir");
\r
937 [ExpectedException (typeof (IOException))]
\r
938 public void MoveDirectory_Dest_Exists ()
\r
940 string path = TempFolder + DSC + "DirectoryTest.Test.16";
\r
941 string path2 = TempFolder + DSC + "DirectoryTest.Test.17";
\r
943 DeleteDirectory (path);
\r
944 DeleteDirectory (path2);
\r
946 Directory.CreateDirectory (path);
\r
947 Directory.CreateDirectory (path2);
\r
948 Directory.Move (path, path2);
\r
950 DeleteDirectory (path);
\r
951 DeleteDirectory (path2);
\r
956 public void CreationTime ()
\r
959 Assert.Ignore ("Unix doesn't support CreationTime");
\r
961 string path = TempFolder + DSC + "DirectoryTest.CreationTime.1";
\r
962 DeleteDirectory (path);
\r
965 Directory.CreateDirectory (path);
\r
966 Directory.SetCreationTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
968 DateTime time = Directory.GetCreationTime (path);
\r
969 Assert.AreEqual (2003, time.Year, "#A1");
\r
970 Assert.AreEqual (6, time.Month, "#A2");
\r
971 Assert.AreEqual (4, time.Day, "#A3");
\r
972 Assert.AreEqual (6, time.Hour, "#A4");
\r
973 Assert.AreEqual (4, time.Minute, "#A5");
\r
974 Assert.AreEqual (0, time.Second, "#A6");
\r
976 time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetCreationTimeUtc (path));
\r
977 Assert.AreEqual (2003, time.Year, "#B1");
\r
978 Assert.AreEqual (6, time.Month, "#B2");
\r
979 Assert.AreEqual (4, time.Day, "#B3");
\r
980 Assert.AreEqual (6, time.Hour, "#B4");
\r
981 Assert.AreEqual (4, time.Minute, "#B5");
\r
982 Assert.AreEqual (0, time.Second, "#B6");
\r
984 Directory.SetCreationTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
985 time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetCreationTime (path));
\r
986 Assert.AreEqual (2003, time.Year, "#C1");
\r
987 Assert.AreEqual (6, time.Month, "#C2");
\r
988 Assert.AreEqual (4, time.Day, "#C3");
\r
989 Assert.AreEqual (6, time.Hour, "#C4");
\r
990 Assert.AreEqual (4, time.Minute, "#C5");
\r
991 Assert.AreEqual (0, time.Second, "#C6");
\r
993 time = Directory.GetCreationTimeUtc (path);
\r
994 Assert.AreEqual (2003, time.Year, "#D1");
\r
995 Assert.AreEqual (6, time.Month, "#D2");
\r
996 Assert.AreEqual (4, time.Day, "#D3");
\r
997 Assert.AreEqual (6, time.Hour, "#D4");
\r
998 Assert.AreEqual (4, time.Minute, "#D5");
\r
999 Assert.AreEqual (0, time.Second, "#D6");
\r
1001 DeleteDirectory (path);
\r
1006 public void LastAccessTime ()
\r
1008 string path = TempFolder + DSC + "DirectoryTest.AccessTime.1";
\r
1009 DeleteDirectory (path);
\r
1012 Directory.CreateDirectory (path);
\r
1013 Directory.SetLastAccessTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1015 DateTime time = Directory.GetLastAccessTime (path);
\r
1016 Assert.AreEqual (2003, time.Year, "#A1");
\r
1017 Assert.AreEqual (6, time.Month, "#A2");
\r
1018 Assert.AreEqual (4, time.Day, "#A3");
\r
1019 Assert.AreEqual (6, time.Hour, "#A4");
\r
1020 Assert.AreEqual (4, time.Minute, "#A5");
\r
1021 Assert.AreEqual (0, time.Second, "#A6");
\r
1023 time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastAccessTimeUtc (path));
\r
1024 Assert.AreEqual (2003, time.Year, "#B1");
\r
1025 Assert.AreEqual (6, time.Month, "#B2");
\r
1026 Assert.AreEqual (4, time.Day, "#B3");
\r
1027 Assert.AreEqual (6, time.Hour, "#B4");
\r
1028 Assert.AreEqual (4, time.Minute, "#B5");
\r
1029 Assert.AreEqual (0, time.Second, "#B6");
\r
1031 Directory.SetLastAccessTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1032 time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastAccessTime (path));
\r
1033 Assert.AreEqual (2003, time.Year, "#C1");
\r
1034 Assert.AreEqual (6, time.Month, "#C2");
\r
1035 Assert.AreEqual (4, time.Day, "#C3");
\r
1036 Assert.AreEqual (6, time.Hour, "#C4");
\r
1037 Assert.AreEqual (4, time.Minute, "#C5");
\r
1038 Assert.AreEqual (0, time.Second, "#C6");
\r
1040 time = Directory.GetLastAccessTimeUtc (path);
\r
1041 Assert.AreEqual (2003, time.Year, "#D1");
\r
1042 Assert.AreEqual (6, time.Month, "#D2");
\r
1043 Assert.AreEqual (4, time.Day, "#D3");
\r
1044 Assert.AreEqual (6, time.Hour, "#D4");
\r
1045 Assert.AreEqual (4, time.Minute, "#D5");
\r
1046 Assert.AreEqual (0, time.Second, "#D6");
\r
1048 DeleteDirectory (path);
\r
1053 public void LastWriteTime ()
\r
1055 string path = TempFolder + DSC + "DirectoryTest.WriteTime.1";
\r
1056 DeleteDirectory (path);
\r
1059 Directory.CreateDirectory (path);
\r
1060 Directory.SetLastWriteTime (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1062 DateTime time = Directory.GetLastWriteTime (path);
\r
1063 Assert.AreEqual (2003, time.Year, "#A1");
\r
1064 Assert.AreEqual (6, time.Month, "#A2");
\r
1065 Assert.AreEqual (4, time.Day, "#A3");
\r
1066 Assert.AreEqual (6, time.Hour, "#A4");
\r
1067 Assert.AreEqual (4, time.Minute, "#A5");
\r
1068 Assert.AreEqual (0, time.Second, "#A6");
\r
1070 time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastWriteTimeUtc (path));
\r
1071 Assert.AreEqual (2003, time.Year, "#B1");
\r
1072 Assert.AreEqual (6, time.Month, "#B2");
\r
1073 Assert.AreEqual (4, time.Day, "#B3");
\r
1074 Assert.AreEqual (6, time.Hour, "#B4");
\r
1075 Assert.AreEqual (4, time.Minute, "#B5");
\r
1076 Assert.AreEqual (0, time.Second, "#B6");
\r
1078 Directory.SetLastWriteTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));
\r
1079 time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastWriteTime (path));
\r
1080 Assert.AreEqual (2003, time.Year, "#C1");
\r
1081 Assert.AreEqual (6, time.Month, "#C2");
\r
1082 Assert.AreEqual (4, time.Day, "#C3");
\r
1083 Assert.AreEqual (6, time.Hour, "#C4");
\r
1084 Assert.AreEqual (4, time.Minute, "#C5");
\r
1085 Assert.AreEqual (0, time.Second, "#C6");
\r
1087 time = Directory.GetLastWriteTimeUtc (path);
\r
1088 Assert.AreEqual (2003, time.Year, "#D1");
\r
1089 Assert.AreEqual (6, time.Month, "#D2");
\r
1090 Assert.AreEqual (4, time.Day, "#D3");
\r
1091 Assert.AreEqual (6, time.Hour, "#D4");
\r
1092 Assert.AreEqual (4, time.Minute, "#D5");
\r
1093 Assert.AreEqual (0, time.Second, "#D6");
\r
1095 DeleteDirectory (path);
\r
1100 [ExpectedException(typeof(ArgumentNullException))]
\r
1101 public void SetLastWriteTimeException1 ()
\r
1103 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1104 Directory.SetLastWriteTime (null as string, time);
\r
1108 [ExpectedException(typeof(ArgumentException))]
\r
1109 public void SetLastWriteTimeException2 ()
\r
1111 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1112 Directory.SetLastWriteTime (string.Empty, time);
\r
1116 [ExpectedException(typeof(FileNotFoundException))]
\r
1117 public void SetLastWriteTimeException3 ()
\r
1119 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1120 string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTime.2";
\r
1121 DeleteDirectory (path);
\r
1123 Directory.SetLastWriteTime (path, time);
\r
1125 DeleteDirectory (path);
\r
1130 [ExpectedException(typeof(ArgumentException))]
\r
1131 public void SetLastWriteTimeException4 ()
\r
1133 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1134 Directory.SetLastWriteTime (" ", time);
\r
1138 [ExpectedException(typeof(ArgumentException))]
\r
1139 public void SetLastWriteTimeException5 ()
\r
1141 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1142 Directory.SetLastWriteTime (Path.InvalidPathChars [0].ToString (), time);
\r
1146 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1147 // public void SetLastWriteTimeException6 ()
\r
1149 // DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
\r
1150 // string path = TempFolder + Path.DirectorySeparatorChar + "DirectoryTest.SetLastWriteTime.1";
\r
1153 // if (!Directory.Exists (path))
\r
1154 // Directory.CreateDirectory (path);
\r
1156 // Directory.SetLastWriteTime (path, time);
\r
1158 // DeleteDirectory (path);
\r
1164 [ExpectedException(typeof(ArgumentNullException))]
\r
1165 public void SetLastWriteTimeUtcException1 ()
\r
1167 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1168 Directory.SetLastWriteTimeUtc (null as string, time);
\r
1172 [ExpectedException(typeof(ArgumentException))]
\r
1173 public void SetLastWriteTimeUtcException2 ()
\r
1175 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1176 Directory.SetLastWriteTimeUtc (string.Empty, time);
\r
1180 [ExpectedException(typeof(FileNotFoundException))]
\r
1181 public void SetLastWriteTimeUtcException3 ()
\r
1183 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1184 string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.2";
\r
1185 DeleteDirectory (path);
\r
1187 Directory.SetLastWriteTimeUtc (path, time);
\r
1189 DeleteDirectory (path);
\r
1194 [ExpectedException(typeof(ArgumentException))]
\r
1195 public void SetLastWriteTimeUtcException4 ()
\r
1197 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1198 Directory.SetLastWriteTimeUtc (" ", time);
\r
1202 [ExpectedException(typeof(ArgumentException))]
\r
1203 public void SetLastWriteTimeUtcException5 ()
\r
1205 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1206 Directory.SetLastWriteTimeUtc (Path.InvalidPathChars [0].ToString (), time);
\r
1210 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1211 // public void SetLastWriteTimeUtcException6 ()
\r
1213 // DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
\r
1214 // string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.1";
\r
1216 // if (!Directory.Exists (path))
\r
1217 // Directory.CreateDirectory (path);
\r
1219 // Directory.SetLastWriteTimeUtc (path, time);
\r
1221 // DeleteDirectory (path);
\r
1226 [ExpectedException(typeof(ArgumentNullException))]
\r
1227 public void SetLastAccessTimeException1 ()
\r
1229 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1230 Directory.SetLastAccessTime (null as string, time);
\r
1234 [ExpectedException(typeof(ArgumentException))]
\r
1235 public void SetLastAccessTimeException2 ()
\r
1237 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1238 Directory.SetLastAccessTime (string.Empty, time);
\r
1242 [ExpectedException(typeof(FileNotFoundException))]
\r
1243 public void SetLastAccessTimeException3 ()
\r
1245 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1246 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.2";
\r
1247 DeleteDirectory (path);
\r
1249 Directory.SetLastAccessTime (path, time);
\r
1251 DeleteDirectory (path);
\r
1256 [ExpectedException(typeof(ArgumentException))]
\r
1257 public void SetLastAccessTimeException4 ()
\r
1259 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1260 Directory.SetLastAccessTime (" ", time);
\r
1264 [ExpectedException(typeof(ArgumentException))]
\r
1265 public void SetLastAccessTimeException5 ()
\r
1267 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1268 Directory.SetLastAccessTime (Path.InvalidPathChars [0].ToString (), time);
\r
1272 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1273 // public void SetLastAccessTimeException6 ()
\r
1275 // DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
\r
1276 // string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.1";
\r
1278 // if (!Directory.Exists (path))
\r
1279 // Directory.CreateDirectory (path);
\r
1281 // Directory.SetLastAccessTime (path, time);
\r
1283 // DeleteDirectory (path);
\r
1289 [ExpectedException(typeof(ArgumentNullException))]
\r
1290 public void SetLastAccessTimeUtcException1 ()
\r
1292 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1293 Directory.SetLastAccessTimeUtc (null as string, time);
\r
1297 [ExpectedException(typeof(ArgumentException))]
\r
1298 public void SetLastAccessTimeUtcException2 ()
\r
1300 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1301 Directory.SetLastAccessTimeUtc (string.Empty, time);
\r
1305 [ExpectedException(typeof(FileNotFoundException))]
\r
1306 public void SetLastAccessTimeUtcException3 ()
\r
1308 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1309 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";
\r
1310 DeleteDirectory (path);
\r
1312 Directory.SetLastAccessTimeUtc (path, time);
\r
1314 DeleteDirectory (path);
\r
1319 [ExpectedException(typeof(ArgumentException))]
\r
1320 public void SetLastAccessTimeUtcException4 ()
\r
1322 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1323 Directory.SetLastAccessTimeUtc (" ", time);
\r
1327 [ExpectedException(typeof(ArgumentException))]
\r
1328 public void SetLastAccessTimeUtcException5 ()
\r
1330 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1331 Directory.SetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString (), time);
\r
1335 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1336 // public void SetLastAccessTimeUtcException6 ()
\r
1338 // DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
\r
1339 // string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";
\r
1341 // if (!Directory.Exists (path))
\r
1342 // Directory.CreateDirectory (path);
\r
1344 // Directory.SetLastAccessTimeUtc (path, time);
\r
1346 // DeleteDirectory (path);
\r
1351 [ExpectedException(typeof(ArgumentNullException))]
\r
1352 public void SetCreationTimeException1 ()
\r
1354 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1355 Directory.SetCreationTime (null as string, time);
\r
1359 [ExpectedException(typeof(ArgumentException))]
\r
1360 public void SetCreationTimeException2 ()
\r
1362 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1363 Directory.SetCreationTime (string.Empty, time);
\r
1367 [ExpectedException(typeof(FileNotFoundException))]
\r
1368 public void SetCreationTimeException3 ()
\r
1370 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1371 string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.2";
\r
1372 DeleteDirectory (path);
\r
1375 Directory.SetCreationTime (path, time);
\r
1377 DeleteDirectory (path);
\r
1382 [ExpectedException(typeof(ArgumentException))]
\r
1383 public void SetCreationTimeException4 ()
\r
1385 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1386 Directory.SetCreationTime (" ", time);
\r
1390 [ExpectedException(typeof(ArgumentException))]
\r
1391 public void SetCreationTimeException5 ()
\r
1393 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1394 Directory.SetCreationTime (Path.InvalidPathChars [0].ToString (), time);
\r
1398 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1399 // public void SetCreationTimeException6 ()
\r
1401 // DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);
\r
1402 // string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.1";
\r
1404 // if (!Directory.Exists (path))
\r
1405 // Directory.CreateDirectory (path);
\r
1407 // Directory.SetCreationTime (path, time);
\r
1408 // DeleteDirectory (path);
\r
1410 // DeleteDirectory (path);
\r
1416 [ExpectedException(typeof(ArgumentNullException))]
\r
1417 public void SetCreationTimeUtcException1 ()
\r
1419 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1420 Directory.SetCreationTimeUtc (null as string, time);
\r
1424 [ExpectedException(typeof(ArgumentException))]
\r
1425 public void SetCreationTimeUtcException2 ()
\r
1427 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1428 Directory.SetCreationTimeUtc (string.Empty, time);
\r
1432 [ExpectedException(typeof(FileNotFoundException))]
\r
1433 public void SetCreationTimeUtcException3 ()
\r
1435 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1436 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";
\r
1437 DeleteDirectory (path);
\r
1440 Directory.SetCreationTimeUtc (path, time);
\r
1441 DeleteDirectory (path);
\r
1443 DeleteDirectory (path);
\r
1448 [ExpectedException(typeof(ArgumentException))]
\r
1449 public void SetCreationTimeUtcException4 ()
\r
1451 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1452 Directory.SetCreationTimeUtc (" ", time);
\r
1456 [ExpectedException(typeof(ArgumentException))]
\r
1457 public void SetCreationTimeUtcException5 ()
\r
1459 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);
\r
1460 Directory.SetCreationTimeUtc (Path.InvalidPathChars [0].ToString (), time);
\r
1464 // [ExpectedException(typeof(ArgumentOutOfRangeException))]
\r
1465 // public void SetCreationTimeUtcException6 ()
\r
1467 // DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);
\r
1468 // string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";
\r
1470 // if (!Directory.Exists (path))
\r
1471 // Directory.CreateDirectory (path);
\r
1473 // Directory.SetCreationTimeUtc (path, time);
\r
1474 // DeleteDirectory (path);
\r
1476 // DeleteDirectory (path);
\r
1481 public void GetDirectories ()
\r
1483 string path = TempFolder;
\r
1484 string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetDirectories";
\r
1485 DeleteDirectory (DirPath);
\r
1488 Directory.CreateDirectory (DirPath);
\r
1490 string [] dirs = Directory.GetDirectories (path);
\r
1492 foreach (string directory in dirs) {
\r
1494 if (directory == DirPath)
\r
1498 Assert.Fail ("Directory Not Found");
\r
1500 DeleteDirectory (DirPath);
\r
1504 [Test] // bug #346123
\r
1505 public void GetDirectories_Backslash ()
\r
1507 if (!RunningOnUnix)
\r
1508 // on Windows, backslash is used as directory separator
\r
1509 Assert.Ignore ("Not running on Unix.");
\r
1511 string dir = Path.Combine (TempFolder, @"sub\dir");
\r
1512 Directory.CreateDirectory (dir);
\r
1514 Assert.IsTrue (Directory.Exists (dir), "#A1");
\r
1515 Assert.IsFalse (Directory.Exists (Path.Combine (TempFolder, "dir")), "#A2");
\r
1517 string [] dirs = Directory.GetDirectories (TempFolder);
\r
1518 Assert.AreEqual (1, dirs.Length, "#B1");
\r
1519 Assert.AreEqual (dir, dirs [0], "#B2");
\r
1523 public void GetParentOfRootDirectory ()
\r
1525 DirectoryInfo info;
\r
1527 info = Directory.GetParent (Path.GetPathRoot (Path.GetTempPath ()));
\r
1528 Assert.IsNull (info);
\r
1532 public void GetFiles ()
\r
1534 string path = TempFolder;
\r
1535 string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetFiles";
\r
1536 if (File.Exists (DirPath))
\r
1537 File.Delete (DirPath);
\r
1540 File.Create (DirPath).Close ();
\r
1541 string [] files = Directory.GetFiles (TempFolder);
\r
1542 foreach (string directory in files) {
\r
1544 if (directory == DirPath)
\r
1548 Assert.Fail ("File Not Found");
\r
1550 if (File.Exists (DirPath))
\r
1551 File.Delete (DirPath);
\r
1555 [Test] // bug #346123
\r
1556 public void GetFiles_Backslash ()
\r
1558 if (!RunningOnUnix)
\r
1559 // on Windows, backslash is used as directory separator
\r
1560 Assert.Ignore ("Not running on Unix.");
\r
1562 string file = Path.Combine (TempFolder, @"doc\temp1.file");
\r
1563 File.Create (file).Close ();
\r
1565 Assert.IsTrue (File.Exists (file), "#A1");
\r
1566 Assert.IsFalse (File.Exists (Path.Combine (TempFolder, "temp1.file")), "#A2");
\r
1568 string [] files = Directory.GetFiles (TempFolder);
\r
1569 Assert.AreEqual (1, files.Length, "#B1");
\r
1570 Assert.AreEqual (file, files [0], "#B2");
\r
1573 [Test] // bug #82212 and bug #325107
\r
1574 public void GetFiles_Pattern ()
\r
1576 string [] files = Directory.GetFiles (TempFolder, "*.*");
\r
1577 Assert.IsNotNull (files, "#A1");
\r
1578 Assert.AreEqual (0, files.Length, "#A2");
\r
1580 string tempFile1 = Path.Combine (TempFolder, "tempFile1");
\r
1581 File.Create (tempFile1).Close ();
\r
1583 files = Directory.GetFiles (TempFolder, "*.*");
\r
1584 Assert.IsNotNull (files, "#B1");
\r
1585 Assert.AreEqual (1, files.Length, "#B2");
\r
1586 Assert.AreEqual (tempFile1, files [0], "#B3");
\r
1588 string tempFile2 = Path.Combine (TempFolder, "FileTemp2.tmp");
\r
1589 File.Create (tempFile2).Close ();
\r
1591 files = Directory.GetFiles (TempFolder, "*.*");
\r
1592 Assert.IsNotNull (files, "#C1");
\r
1593 Assert.AreEqual (2, files.Length, "#C2");
\r
1595 files = Directory.GetFiles (TempFolder, "temp*.*");
\r
1596 Assert.IsNotNull (files, "#D1");
\r
1597 Assert.AreEqual (1, files.Length, "#D2");
\r
1598 Assert.AreEqual (tempFile1, files [0], "#D3");
\r
1600 string tempFile3 = Path.Combine (TempFolder, "tempFile3.txt");
\r
1601 File.Create (tempFile3).Close ();
\r
1603 files = Directory.GetFiles (TempFolder, "*File*.*");
\r
1604 Assert.IsNotNull (files, "#E1");
\r
1605 Assert.AreEqual (3, files.Length, "#E2");
\r
1607 files = Directory.GetFiles (TempFolder, "*File*.tmp");
\r
1608 Assert.IsNotNull (files, "#F1");
\r
1609 Assert.AreEqual (1, files.Length, "#F2");
\r
1610 Assert.AreEqual (tempFile2, files [0], "#F3");
\r
1612 files = Directory.GetFiles (TempFolder, "*tempFile*");
\r
1613 Assert.IsNotNull (files, "#G1");
\r
1614 Assert.AreEqual (2, files.Length, "#G2");
\r
1616 files = Directory.GetFiles (TempFolder, "*tempFile1");
\r
1617 Assert.IsNotNull (files, "#H1");
\r
1618 Assert.AreEqual (1, files.Length, "#H2");
\r
1619 Assert.AreEqual (tempFile1, files [0], "#H3");
\r
1621 files = Directory.GetFiles (TempFolder, "*.txt");
\r
1622 Assert.IsNotNull (files, "#I1");
\r
1623 Assert.AreEqual (1, files.Length, "#I2");
\r
1624 Assert.AreEqual (tempFile3, files [0], "#I3");
\r
1626 files = Directory.GetFiles (TempFolder, "*.t*");
\r
1627 Assert.IsNotNull (files, "#J1");
\r
1628 Assert.AreEqual (2, files.Length, "#J2");
\r
1630 files = Directory.GetFiles (TempFolder, "temp*.*");
\r
1631 Assert.IsNotNull (files, "#K1");
\r
1632 Assert.AreEqual (2, files.Length, "#K2");
\r
1634 File.Delete (tempFile1);
\r
1636 files = Directory.GetFiles (TempFolder, "temp*.*");
\r
1637 Assert.IsNotNull (files, "#L1");
\r
1638 Assert.AreEqual (1, files.Length, "#L2");
\r
1639 Assert.AreEqual (tempFile3, files [0], "#L3");
\r
1641 files = Directory.GetFiles (TempFolder, ".*");
\r
1642 Assert.IsNotNull (files, "#M1");
\r
1643 Assert.AreEqual (0, files.Length, "#M2");
\r
1645 string tempFile4 = Path.Combine (TempFolder, "tempFile4.");
\r
1646 File.Create (tempFile4).Close ();
\r
1648 files = Directory.GetFiles (TempFolder, "temp*.");
\r
1649 Assert.IsNotNull (files, "#N1");
\r
1650 Assert.AreEqual (1, files.Length, "#N2");
\r
1651 if (RunningOnUnix)
\r
1652 Assert.AreEqual (tempFile4, files [0], "#N3");
\r
1653 else // on Windows, the trailing dot is automatically trimmed
\r
1654 Assert.AreEqual (Path.Combine (TempFolder, "tempFile4"), files [0], "#N3");
\r
1658 public void GetFiles_580090 ()
\r
1660 string cwd = Directory.GetCurrentDirectory ();
\r
1661 Directory.SetCurrentDirectory (Path.GetTempPath ());
\r
1663 string tempFile = Path.Combine (TempFolder, "tempFile.txt");
\r
1664 File.Create (tempFile).Close ();
\r
1667 string [] files = Directory.GetFiles (".", TempSubFolder + DSC + "*.t*");
\r
1668 Assert.IsNotNull (files, "#J1");
\r
1669 Assert.AreEqual (1, files.Length, "#J2");
\r
1672 Directory.SetCurrentDirectory (cwd);
\r
1678 public void GetFiles_SubDirInPattern ()
\r
1680 string DirPath = TempFolder + Path.DirectorySeparatorChar + "GetFiles_SubDirInPattern";
\r
1681 if (Directory.Exists (DirPath))
\r
1682 Directory.Delete (DirPath, true);
\r
1684 Directory.CreateDirectory ($"{DirPath}{Path.DirectorySeparatorChar}something{Path.DirectorySeparatorChar}else");
\r
1685 File.WriteAllText($"{DirPath}{Path.DirectorySeparatorChar}something{Path.DirectorySeparatorChar}else{Path.DirectorySeparatorChar}file", "hello");
\r
1687 var r = Directory.GetFiles (DirPath, $"something{Path.DirectorySeparatorChar}else{Path.DirectorySeparatorChar}*", SearchOption.AllDirectories);
\r
1688 Assert.AreEqual (new string[] { Path.Combine (DirPath, "something", "else", "file") }, r);
\r
1692 [ExpectedException (typeof (ArgumentNullException))]
\r
1693 public void SetCurrentDirectoryNull ()
\r
1695 Directory.SetCurrentDirectory (null);
\r
1699 [ExpectedException (typeof (ArgumentException))]
\r
1700 public void SetCurrentDirectoryEmpty ()
\r
1702 Directory.SetCurrentDirectory (String.Empty);
\r
1706 [ExpectedException (typeof (ArgumentException))]
\r
1707 public void SetCurrentDirectoryWhitespace ()
\r
1709 Directory.SetCurrentDirectory (" ");
\r
1714 public void GetNoFiles () // Bug 58875. This throwed an exception on windows.
\r
1716 DirectoryInfo dir = new DirectoryInfo (".");
\r
1717 dir.GetFiles ("*.nonext");
\r
1721 public void FilenameOnly () // bug 78209
\r
1723 Directory.GetParent ("somefile");
\r
1726 private static bool RunningOnUnix {
\r
1728 // check for Unix platforms - see FAQ for more details
\r
1729 // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
\r
1730 int platform = (int) Environment.OSVersion.Platform;
\r
1731 return ((platform == 4) || (platform == 128) || (platform == 6));
\r
1735 private void DeleteDirectory (string path)
\r
1737 if (Directory.Exists (path))
\r
1738 Directory.Delete (path, true);
\r
1741 private void DeleteFile (string path)
\r
1743 if (File.Exists (path))
\r
1744 File.Delete (path);
\r