merge -r 58060:58217
[mono.git] / mcs / class / corlib / Test / System.IO / DirectoryTest.cs
1 //\r
2 // System.IO.Directory\r
3 //\r
4 // Authors: \r
5 //      Ville Palo (vi64pa@kolumbus.fi)\r
6 //\r
7 // (C) 2003 Ville Palo\r
8 //\r
9 // TODO: Find out why ArgumentOutOfRange tests does not release directories properly\r
10 //\r
11 \r
12 using NUnit.Framework;\r
13 using System.IO;\r
14 using System.Text;\r
15 using System;\r
16 using System.Globalization;\r
17 using System.Threading;\r
18 \r
19 namespace MonoTests.System.IO {\r
20 \r
21 [TestFixture]\r
22 public class DirectoryTest : Assertion {\r
23         \r
24         string TempFolder = Path.Combine (Path.GetTempPath (), "MonoTests.System.IO.Tests");\r
25         static readonly char DSC = Path.DirectorySeparatorChar;\r
26 \r
27         [SetUp]\r
28         public void SetUp ()\r
29         {\r
30                 if (!Directory.Exists (TempFolder))\r
31                         Directory.CreateDirectory (TempFolder);\r
32 \r
33                 Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");\r
34         }\r
35         \r
36         [TearDown]\r
37         public void TearDown () {\r
38                 if (Directory.Exists (TempFolder))\r
39                         Directory.Delete (TempFolder, true);\r
40         }\r
41 \r
42         [Test]\r
43         public void CreateDirectory ()\r
44         {\r
45                 string path = TempFolder + DSC + "DirectoryTest.Test.1";\r
46                 DeleteDirectory (path);\r
47                 try {\r
48                         DirectoryInfo info = Directory.CreateDirectory (path);\r
49                         AssertEquals ("test#01", true, info.Exists);\r
50                         AssertEquals ("test#02", ".1", info.Extension);\r
51                         AssertEquals ("test#03", true, info.FullName.EndsWith ("DirectoryTest.Test.1"));\r
52                         AssertEquals ("test#04", "DirectoryTest.Test.1", info.Name);\r
53                 } finally {\r
54                         DeleteDirectory (path);         \r
55                 }\r
56         }\r
57         \r
58         [Test]\r
59         [ExpectedException(typeof(ArgumentException))]  \r
60         public void CreateDirectoryNotSupportedException ()\r
61         {\r
62                 DeleteDirectory (":");\r
63                 DirectoryInfo info = Directory.CreateDirectory (":");\r
64                 DeleteDirectory (":");\r
65         }\r
66 \r
67         [Test]\r
68         [ExpectedException(typeof(ArgumentNullException))]\r
69         public void CreateDirectoryArgumentNullException ()\r
70         {\r
71                 DirectoryInfo info = Directory.CreateDirectory (null as string);                \r
72         }\r
73 \r
74         [Test]\r
75         [ExpectedException(typeof(ArgumentException))]\r
76         public void CreateDirectoryArgumentException1 ()\r
77         {\r
78                 DirectoryInfo info = Directory.CreateDirectory ("");\r
79         }\r
80 \r
81         [Test]\r
82         [ExpectedException(typeof(ArgumentException))]\r
83         public void CreateDirectoryArgumentException2 ()\r
84         {\r
85                 DirectoryInfo info = Directory.CreateDirectory ("            ");                \r
86         }\r
87 \r
88         [Test]\r
89         [ExpectedException(typeof(ArgumentException))]\r
90         public void CreateDirectoryArgumentException3 ()\r
91         {\r
92                 string path = TempFolder + DSC + "DirectoryTest.Test";\r
93                 DeleteDirectory (path);\r
94                 try {\r
95                         path += Path.InvalidPathChars [0];\r
96                         path += ".2";\r
97                         DirectoryInfo info = Directory.CreateDirectory (path);          \r
98                 } finally {\r
99                         DeleteDirectory (path);\r
100                 }\r
101         }\r
102 \r
103         [Test]\r
104         public void Delete ()\r
105         {\r
106                 string path = TempFolder + DSC + "DirectoryTest.Test.Delete.1";\r
107                 DeleteDirectory (path);\r
108                 try {\r
109                         Directory.CreateDirectory (path);\r
110                         AssertEquals ("test#01", true, Directory.Exists (path));\r
111                 \r
112                         Directory.CreateDirectory (path + DSC + "DirectoryTest.Test.Delete.1.2");\r
113                         AssertEquals ("test#02", true, Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"));\r
114                 \r
115                         Directory.Delete (path + DSC + "DirectoryTest.Test.Delete.1.2");\r
116                         AssertEquals ("test#03", false, Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"));\r
117                         AssertEquals ("test#04", true, Directory.Exists (path));\r
118                 \r
119                         Directory.Delete (path);\r
120                         AssertEquals ("test#05", false, Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"));\r
121                         AssertEquals ("test#06", false, Directory.Exists (path));               \r
122         \r
123                         Directory.CreateDirectory (path);\r
124                         Directory.CreateDirectory (path + DSC + "DirectoryTest.Test.Delete.1.2");\r
125                         AssertEquals ("test#07", true, Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"));\r
126                         AssertEquals ("test#08", true, Directory.Exists (path));\r
127                 \r
128                         Directory.Delete (path, true);\r
129                         AssertEquals ("test#09", false, Directory.Exists (path + DSC + "DirectoryTest.Test.Delete.1.2"));\r
130                         AssertEquals ("test#10", false, Directory.Exists (path));\r
131                 } finally {\r
132                         DeleteDirectory (path);\r
133                 }\r
134         }\r
135 \r
136         [Test]  \r
137         [ExpectedException(typeof(ArgumentException))]\r
138         public void DeleteArgumentException ()\r
139         {\r
140                 Directory.Delete ("");          \r
141         }\r
142 \r
143         [Test]  \r
144         [ExpectedException(typeof(ArgumentException))]\r
145         public void DeleteArgumentException2 ()\r
146         {\r
147                 Directory.Delete ("     ");             \r
148         }\r
149 \r
150         [Test]  \r
151         [ExpectedException(typeof(ArgumentException))]\r
152         public void DeleteArgumentException3 ()\r
153         {\r
154                 string path = TempFolder + DSC + "DirectoryTest.Test.4";\r
155                 DeleteDirectory (path);\r
156                 \r
157                 path += Path.InvalidPathChars [0];\r
158                 Directory.Delete (path);\r
159         }\r
160 \r
161         [Test]  \r
162         [ExpectedException(typeof(ArgumentNullException))]\r
163         public void DeleteArgumentNullException ()\r
164         {\r
165                 Directory.Delete (null as string);              \r
166         }\r
167 \r
168         [Test]  \r
169         [ExpectedException(typeof(DirectoryNotFoundException))]\r
170         public void DeleteDirectoryNotFoundException ()\r
171         {\r
172                 string path = TempFolder + DSC + "DirectoryTest.Test.5";\r
173                 DeleteDirectory (path);\r
174                 \r
175                 Directory.Delete (path);                \r
176         }\r
177 \r
178         [Test]  \r
179         [ExpectedException(typeof(IOException))]\r
180         public void DeleteArgumentException4 ()\r
181         {\r
182                 string path = TempFolder + DSC + "DirectoryTest.Test.6";\r
183                 DeleteDirectory (path);\r
184                 FileStream s = null;\r
185                 Directory.CreateDirectory (path);\r
186                 try {\r
187                         s = File.Create (path + DSC + "DirectoryTest.Test.6");\r
188                         Directory.Delete (path);\r
189                 } finally {\r
190                         if (s != null)\r
191                                 s.Close ();\r
192                         DeleteDirectory (path); \r
193                 };\r
194         }\r
195 \r
196         [Test]\r
197         public void Exists ()\r
198         {\r
199                 AssertEquals ("test#01", false, Directory.Exists (null as string));\r
200         }\r
201         \r
202         [Test]\r
203         [ExpectedException(typeof(ArgumentNullException))]      \r
204         public void GetCreationTimeException1 ()\r
205         {\r
206                 Directory.GetCreationTime (null as string);\r
207         }\r
208 \r
209         [Test]\r
210         [ExpectedException(typeof(ArgumentException))]  \r
211         public void GetCreationTimeException2 ()\r
212         {\r
213                 Directory.GetCreationTime ("");\r
214         }\r
215         \r
216         [Test]\r
217         [ExpectedException(typeof(IOException))]\r
218         public void GetCreationTimeException3 ()\r
219         {\r
220                 string path = TempFolder + DSC + "DirectoryTest.GetCreationTime.1";\r
221                 DeleteDirectory (path);\r
222                 try {\r
223                         Directory.GetCreationTime (path);\r
224                 } finally {\r
225                         DeleteDirectory (path);\r
226                 }\r
227         }\r
228 \r
229         [Test]\r
230         [ExpectedException(typeof(ArgumentException))]  \r
231         public void GetCreationTimeException4 ()\r
232         {\r
233                 Directory.GetCreationTime ("    ");\r
234         }\r
235 \r
236         [Test]\r
237         [ExpectedException(typeof(ArgumentException))]  \r
238         public void GetCreationTimeException5 ()\r
239         {\r
240                 Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());\r
241         }\r
242 \r
243         [Test]\r
244         [ExpectedException(typeof(ArgumentNullException))]      \r
245         public void GetCreationTimeUtcException1 ()\r
246         {\r
247                 Directory.GetCreationTimeUtc (null as string);\r
248         }\r
249 \r
250         [Test]\r
251         [ExpectedException(typeof(ArgumentException))]  \r
252         public void GetCreationTimeUtcException2 ()\r
253         {\r
254                 Directory.GetCreationTimeUtc ("");\r
255         }\r
256         \r
257         [Test]\r
258         [ExpectedException(typeof(IOException))]\r
259         public void GetCreationTimeUtcException3 ()\r
260         {\r
261                 string path = TempFolder + DSC + "DirectoryTest.GetCreationTimeUtc.1";\r
262                 DeleteDirectory (path);\r
263                 \r
264                 try {\r
265                         Directory.GetCreationTimeUtc (path);\r
266                 } finally {\r
267                         DeleteDirectory (path);\r
268                 }\r
269         }\r
270 \r
271         [Test]\r
272         [ExpectedException(typeof(ArgumentException))]  \r
273         public void GetCreationTimeUtcException4 ()\r
274         {\r
275                 Directory.GetCreationTimeUtc ("    ");\r
276         }\r
277 \r
278         [Test]\r
279         [ExpectedException(typeof(ArgumentException))]  \r
280         public void GetCreationTimeUtcException5 ()\r
281         {\r
282                 Directory.GetCreationTime (Path.InvalidPathChars [0].ToString ());\r
283         }\r
284 \r
285         [Test]\r
286         [ExpectedException(typeof(ArgumentNullException))]      \r
287         public void GetLastAccessTimeException1 ()\r
288         {\r
289                 Directory.GetLastAccessTime (null as string);\r
290         }\r
291 \r
292         [Test]\r
293         [ExpectedException(typeof(ArgumentException))]  \r
294         public void GetLastAccessTimeException2 ()\r
295         {\r
296                 Directory.GetLastAccessTime ("");\r
297         }\r
298         \r
299         [Test]\r
300         [ExpectedException(typeof(IOException))]\r
301         public void GetLastAccessTimeException3 ()\r
302         {\r
303                 string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTime.1";\r
304                 DeleteDirectory (path);\r
305                 \r
306                 try {\r
307                         Directory.GetLastAccessTime (path);\r
308                 } finally {\r
309                         DeleteDirectory (path);\r
310                 }\r
311         }\r
312 \r
313         [Test]\r
314         [ExpectedException(typeof(ArgumentException))]  \r
315         public void GetLastAccessTimeException4 ()\r
316         {\r
317                 Directory.GetLastAccessTime ("    ");\r
318         }\r
319 \r
320         [Test]\r
321         [ExpectedException(typeof(ArgumentException))]  \r
322         public void GetLastAccessTimeException5 ()\r
323         {\r
324                 Directory.GetLastAccessTime (Path.InvalidPathChars [0].ToString ());\r
325         }\r
326 \r
327         [Test]\r
328         [ExpectedException(typeof(ArgumentNullException))]      \r
329         public void GetLastAccessTimeUtcException1 ()\r
330         {\r
331                 Directory.GetLastAccessTimeUtc (null as string);\r
332         }\r
333 \r
334         [Test]\r
335         [ExpectedException(typeof(ArgumentException))]  \r
336         public void GetLastAccessTimeUtcException2 ()\r
337         {\r
338                 Directory.GetLastAccessTimeUtc ("");\r
339         }\r
340         \r
341         [Test]\r
342         [ExpectedException(typeof(IOException))]\r
343         public void GetLastAccessTimeUtcException3 ()\r
344         {\r
345                 string path = TempFolder + DSC + "DirectoryTest.GetLastAccessTimeUtc.1";\r
346                 DeleteDirectory (path);\r
347                 try {\r
348                         Directory.GetLastAccessTimeUtc (path);\r
349                 } finally {\r
350                         DeleteDirectory (path);\r
351                 }\r
352         }\r
353 \r
354         [Test]\r
355         [ExpectedException(typeof(ArgumentException))]  \r
356         public void GetLastAccessTimeUtcException4 ()\r
357         {\r
358                 Directory.GetLastAccessTimeUtc ("    ");\r
359         }\r
360 \r
361         [Test]\r
362         [ExpectedException(typeof(ArgumentException))]  \r
363         public void GetLastAccessTimeUtcException5 ()\r
364         {\r
365                 Directory.GetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString ());\r
366         }\r
367 \r
368         [Test]\r
369         [ExpectedException(typeof(ArgumentNullException))]      \r
370         public void GetLastWriteTimeException1 ()\r
371         {\r
372                 Directory.GetLastWriteTime (null as string);\r
373         }\r
374 \r
375         [Test]\r
376         [ExpectedException(typeof(ArgumentException))]  \r
377         public void GetLastWriteTimeException2 ()\r
378         {\r
379                 Directory.GetLastWriteTime ("");\r
380         }\r
381         \r
382         [Test]\r
383         [ExpectedException(typeof(IOException))]\r
384         public void GetLastWriteTimeException3 ()\r
385         {\r
386                 string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTime.1";\r
387                 DeleteDirectory (path);\r
388                 try {\r
389                         Directory.GetLastWriteTime (path);\r
390                 } finally {\r
391                         DeleteDirectory (path);\r
392                 }\r
393         }\r
394 \r
395         [Test]\r
396         [ExpectedException(typeof(ArgumentException))]  \r
397         public void GetLastWriteTimeException4 ()\r
398         {\r
399                 Directory.GetLastWriteTime ("    ");\r
400         }\r
401 \r
402         [Test]\r
403         [ExpectedException(typeof(ArgumentException))]  \r
404         public void GetLastWriteTimeException5 ()\r
405         {\r
406                 Directory.GetLastWriteTime (Path.InvalidPathChars [0].ToString ());\r
407         }\r
408 \r
409         [Test]\r
410         [ExpectedException(typeof(ArgumentNullException))]      \r
411         public void GetLastWriteTimeUtcException1 ()\r
412         {\r
413                 Directory.GetLastWriteTimeUtc (null as string);\r
414         }\r
415 \r
416         [Test]\r
417         [ExpectedException(typeof(ArgumentException))]  \r
418         public void GetLastWriteTimeUtcException2 ()\r
419         {\r
420                 Directory.GetLastAccessTimeUtc ("");\r
421         }\r
422         \r
423         [Test]\r
424         [ExpectedException(typeof(IOException))]\r
425         public void GetLastWriteTimeUtcException3 ()\r
426         {\r
427                 string path = TempFolder + DSC + "DirectoryTest.GetLastWriteTimeUtc.1";\r
428                 DeleteDirectory (path);\r
429                 try {\r
430                         Directory.GetLastAccessTimeUtc (path);\r
431                 } finally {\r
432                         DeleteDirectory (path);\r
433                 }\r
434                 \r
435         }\r
436 \r
437         [Test]\r
438         [ExpectedException(typeof(ArgumentException))]  \r
439         public void GetLastWriteTimeUtcException4 ()\r
440         {\r
441                 Directory.GetLastAccessTimeUtc ("    ");\r
442         }\r
443 \r
444         [Test]\r
445         [ExpectedException(typeof(ArgumentException))]  \r
446         public void GetLastWriteTimeUtcException5 ()\r
447         {\r
448                 Directory.GetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString ());\r
449         }\r
450 \r
451         [Test]\r
452         public void Move ()\r
453         {\r
454                 string path = TempFolder + DSC + "DirectoryTest.Test.9";\r
455                 string path2 = TempFolder + DSC + "DirectoryTest.Test.10";\r
456                 DeleteDirectory (path);\r
457                 DeleteDirectory (path2);\r
458                 try {\r
459                         Directory.CreateDirectory (path);\r
460                         Directory.CreateDirectory (path + DSC + "dir");\r
461                         AssertEquals ("test#01", true, Directory.Exists (path + DSC + "dir"));\r
462                 \r
463                         Directory.Move (path, path2);\r
464                         AssertEquals ("test#02", false, Directory.Exists (path + DSC + "dir"));         \r
465                         AssertEquals ("test#03", true, Directory.Exists (path2 + DSC + "dir"));\r
466                 \r
467                 } finally {\r
468                         DeleteDirectory (path);\r
469                         DeleteDirectory (path2);\r
470                         if (Directory.Exists (path2 + DSC + "dir"))\r
471                                 Directory.Delete (path2 + DSC + "dir", true);                   \r
472                 }\r
473         }\r
474         \r
475         [Test]\r
476         [ExpectedException(typeof(IOException))]\r
477         public void MoveException1 ()\r
478         {\r
479                 string path = TempFolder + DSC + "DirectoryTest.Test.8";\r
480                 DeleteDirectory (path);         \r
481                 try {\r
482                         Directory.Move (path, path);            \r
483                 } finally {\r
484                         DeleteDirectory (path);\r
485                 }\r
486         }\r
487 \r
488         [Test]\r
489         [ExpectedException(typeof(ArgumentException))]\r
490         public void MoveException2 ()\r
491         {\r
492                 string path = TempFolder + DSC + "DirectoryTest.Test.11";\r
493                 DeleteDirectory (path);         \r
494                 try {\r
495                         Directory.Move ("", path);              \r
496                 } finally {\r
497                         DeleteDirectory (path);\r
498                 }\r
499         }\r
500 \r
501         [Test]\r
502         [ExpectedException(typeof(ArgumentException))]\r
503         public void MoveException3 ()\r
504         {\r
505                 string path = TempFolder + DSC + "DirectoryTest.Test.12";\r
506                 DeleteDirectory (path);         \r
507                 try {\r
508                         Directory.Move ("             ", path);\r
509                 } finally {\r
510                         DeleteDirectory (path);\r
511                 }\r
512         }\r
513 \r
514         [Test]\r
515         [ExpectedException(typeof(ArgumentException))]\r
516         public void MoveException4 ()\r
517         {\r
518                 string path = TempFolder + DSC + "DirectoryTest.Test.13";\r
519                 path += Path.InvalidPathChars [0];\r
520                 string path2 = TempFolder + DSC + "DirectoryTest.Test.13";              \r
521                 DeleteDirectory (path);\r
522                 DeleteDirectory (path2);\r
523                 try {\r
524                         Directory.CreateDirectory (path2);              \r
525                         Directory.Move (path2, path);\r
526                 } finally {\r
527                         DeleteDirectory (path);\r
528                         DeleteDirectory (path2);\r
529                 }\r
530         }\r
531 \r
532         [Test]\r
533         [ExpectedException(typeof(DirectoryNotFoundException))]\r
534         public void MoveException5 ()\r
535         {\r
536                 string path = TempFolder + DSC + "DirectoryTest.Test.14";\r
537                 DeleteDirectory (path);\r
538                 try {\r
539                         Directory.Move (path, path + "Test.Test");              \r
540                 } finally {\r
541                         DeleteDirectory (path);\r
542                         DeleteDirectory (path + "Test.Test");\r
543                 }\r
544         }\r
545 \r
546         [Test]\r
547         [ExpectedException(typeof(IOException))]\r
548         public void MoveException6 ()\r
549         {\r
550                 string path = TempFolder + DSC + "DirectoryTest.Test.15";\r
551                 DeleteDirectory (path);\r
552                 try {\r
553                         Directory.CreateDirectory (path);               \r
554                         Directory.Move (path, path + DSC + "dir");\r
555                 } finally {\r
556                         DeleteDirectory (path);\r
557                         DeleteDirectory (path + DSC + "dir");                   \r
558                 }\r
559         }\r
560 \r
561         [Test]\r
562         [ExpectedException(typeof(IOException))]\r
563         public void MoveException7 ()\r
564         {\r
565                 string path = TempFolder + DSC + "DirectoryTest.Test.16";\r
566                 string path2 = TempFolder + DSC + "DirectoryTest.Test.17";\r
567                 \r
568                 DeleteDirectory (path);\r
569                 DeleteDirectory (path2);                \r
570                 try {\r
571                         Directory.CreateDirectory (path);\r
572                         Directory.CreateDirectory (path2);\r
573                         Directory.Move (path, path2);\r
574                 } finally {\r
575                         DeleteDirectory (path);\r
576                         DeleteDirectory (path2);                \r
577                 }\r
578         }\r
579         \r
580         [Test]\r
581         [Ignore("Unix doesnt support CreationTime")]\r
582         public void CreationTime ()\r
583         {\r
584                 string path = TempFolder + DSC + "DirectoryTest.CreationTime.1";\r
585                 DeleteDirectory (path);\r
586                 \r
587                 try {\r
588                         Directory.CreateDirectory (path);\r
589                         Directory.SetCreationTime (path, new DateTime (2003, 6, 4, 6, 4, 0));\r
590 \r
591                         DateTime time = Directory.GetCreationTime (path);               \r
592                         AssertEquals ("test#01", 2003, time.Year);\r
593                         AssertEquals ("test#02", 6, time.Month);\r
594                         AssertEquals ("test#03", 4, time.Day);\r
595                         AssertEquals ("test#04", 6, time.Hour);\r
596                         AssertEquals ("test#05", 4, time.Minute);\r
597                         AssertEquals ("test#06", 0, time.Second);\r
598                 \r
599                         time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetCreationTimeUtc (path));\r
600                         AssertEquals ("test#07", 2003, time.Year);\r
601                         AssertEquals ("test#08", 6, time.Month);\r
602                         AssertEquals ("test#09", 4, time.Day);\r
603                         AssertEquals ("test#10", 6, time.Hour);\r
604                         AssertEquals ("test#11", 4, time.Minute);\r
605                         AssertEquals ("test#12", 0, time.Second);\r
606 \r
607                         Directory.SetCreationTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));\r
608                         time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetCreationTime (path));\r
609                         AssertEquals ("test#13", 2003, time.Year);\r
610                         AssertEquals ("test#14", 6, time.Month);\r
611                         AssertEquals ("test#15", 4, time.Day);\r
612                         AssertEquals ("test#16", 6, time.Hour);\r
613                         AssertEquals ("test#17", 4, time.Minute);\r
614                         AssertEquals ("test#18", 0, time.Second);\r
615 \r
616                         time = Directory.GetCreationTimeUtc (path);             \r
617                         AssertEquals ("test#19", 2003, time.Year);\r
618                         AssertEquals ("test#20", 6, time.Month);\r
619                         AssertEquals ("test#21", 4, time.Day);\r
620                         AssertEquals ("test#22", 6, time.Hour);\r
621                         AssertEquals ("test#23", 4, time.Minute);\r
622                         AssertEquals ("test#24", 0, time.Second);\r
623                 } finally {\r
624                         DeleteDirectory (path); \r
625                 }\r
626         }\r
627 \r
628         [Test]\r
629         public void LastAccessTime ()\r
630         {\r
631                 string path = TempFolder + DSC + "DirectoryTest.AccessTime.1";\r
632                 DeleteDirectory (path);\r
633                 \r
634                 try {\r
635                         Directory.CreateDirectory (path);\r
636                         Directory.SetLastAccessTime (path, new DateTime (2003, 6, 4, 6, 4, 0));\r
637 \r
638                         DateTime time = Directory.GetLastAccessTime (path);             \r
639                         AssertEquals ("test#01", 2003, time.Year);\r
640                         AssertEquals ("test#02", 6, time.Month);\r
641                         AssertEquals ("test#03", 4, time.Day);\r
642                         AssertEquals ("test#04", 6, time.Hour);\r
643                         AssertEquals ("test#05", 4, time.Minute);\r
644                         AssertEquals ("test#06", 0, time.Second);\r
645                 \r
646                         time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastAccessTimeUtc (path));\r
647                         AssertEquals ("test#07", 2003, time.Year);\r
648                         AssertEquals ("test#08", 6, time.Month);\r
649                         AssertEquals ("test#09", 4, time.Day);\r
650                         AssertEquals ("test#10", 6, time.Hour);\r
651                         AssertEquals ("test#11", 4, time.Minute);\r
652                         AssertEquals ("test#12", 0, time.Second);\r
653 \r
654                         Directory.SetLastAccessTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));\r
655                         time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastAccessTime (path));\r
656                         AssertEquals ("test#13", 2003, time.Year);\r
657                         AssertEquals ("test#14", 6, time.Month);\r
658                         AssertEquals ("test#15", 4, time.Day);\r
659                         AssertEquals ("test#16", 6, time.Hour);\r
660                         AssertEquals ("test#17", 4, time.Minute);\r
661                         AssertEquals ("test#18", 0, time.Second);\r
662 \r
663                         time = Directory.GetLastAccessTimeUtc (path);           \r
664                         AssertEquals ("test#19", 2003, time.Year);\r
665                         AssertEquals ("test#20", 6, time.Month);\r
666                         AssertEquals ("test#21", 4, time.Day);\r
667                         AssertEquals ("test#22", 6, time.Hour);\r
668                         AssertEquals ("test#23", 4, time.Minute);\r
669                         AssertEquals ("test#24", 0, time.Second);\r
670                 } finally {\r
671                         DeleteDirectory (path);\r
672                 }\r
673         }\r
674 \r
675         [Test]\r
676         public void LastWriteTime ()\r
677         {\r
678                 string path = TempFolder + DSC + "DirectoryTest.WriteTime.1";\r
679                 DeleteDirectory (path);         \r
680                 \r
681                 try {\r
682                         Directory.CreateDirectory (path);\r
683                         Directory.SetLastWriteTime (path, new DateTime (2003, 6, 4, 6, 4, 0));\r
684 \r
685                         DateTime time = Directory.GetLastWriteTime (path);              \r
686                         AssertEquals ("test#01", 2003, time.Year);\r
687                         AssertEquals ("test#02", 6, time.Month);\r
688                         AssertEquals ("test#03", 4, time.Day);\r
689                         AssertEquals ("test#04", 6, time.Hour);\r
690                         AssertEquals ("test#05", 4, time.Minute);\r
691                         AssertEquals ("test#06", 0, time.Second);\r
692                 \r
693                         time = TimeZone.CurrentTimeZone.ToLocalTime (Directory.GetLastWriteTimeUtc (path));\r
694                         AssertEquals ("test#07", 2003, time.Year);\r
695                         AssertEquals ("test#08", 6, time.Month);\r
696                         AssertEquals ("test#09", 4, time.Day);\r
697                         AssertEquals ("test#10", 6, time.Hour);\r
698                         AssertEquals ("test#11", 4, time.Minute);\r
699                         AssertEquals ("test#12", 0, time.Second);\r
700 \r
701                         Directory.SetLastWriteTimeUtc (path, new DateTime (2003, 6, 4, 6, 4, 0));\r
702                         time = TimeZone.CurrentTimeZone.ToUniversalTime (Directory.GetLastWriteTime (path));\r
703                         AssertEquals ("test#13", 2003, time.Year);\r
704                         AssertEquals ("test#14", 6, time.Month);\r
705                         AssertEquals ("test#15", 4, time.Day);\r
706                         AssertEquals ("test#16", 6, time.Hour);\r
707                         AssertEquals ("test#17", 4, time.Minute);\r
708                         AssertEquals ("test#18", 0, time.Second);\r
709 \r
710                         time = Directory.GetLastWriteTimeUtc (path);            \r
711                         AssertEquals ("test#19", 2003, time.Year);\r
712                         AssertEquals ("test#20", 6, time.Month);\r
713                         AssertEquals ("test#21", 4, time.Day);\r
714                         AssertEquals ("test#22", 6, time.Hour);\r
715                         AssertEquals ("test#23", 4, time.Minute);\r
716                         AssertEquals ("test#24", 0, time.Second);\r
717                 } finally {\r
718                         DeleteDirectory (path);         \r
719                 }\r
720         }\r
721 \r
722         [Test]\r
723         [ExpectedException(typeof(ArgumentNullException))]      \r
724         public void SetLastWriteTimeException1 ()\r
725         {\r
726                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);\r
727                 Directory.SetLastWriteTime (null as string, time);\r
728         }\r
729 \r
730         [Test]\r
731         [ExpectedException(typeof(ArgumentException))]  \r
732         public void SetLastWriteTimeException2 ()\r
733         {\r
734                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
735                 Directory.SetLastWriteTime ("", time);\r
736         }\r
737         \r
738         [Test]\r
739         [ExpectedException(typeof(FileNotFoundException))]\r
740         public void SetLastWriteTimeException3 ()\r
741         {\r
742                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
743                 string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTime.2";\r
744                 DeleteDirectory (path);\r
745                 try {\r
746                         Directory.SetLastWriteTime (path, time);\r
747                 } finally {\r
748                         DeleteDirectory (path);\r
749                 }\r
750         }\r
751 \r
752         [Test]\r
753         [ExpectedException(typeof(ArgumentException))]  \r
754         public void SetLastWriteTimeException4 ()\r
755         {\r
756                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
757                 Directory.SetLastWriteTime ("    ", time);\r
758         }\r
759 \r
760         [Test]\r
761         [ExpectedException(typeof(ArgumentException))]  \r
762         public void SetLastWriteTimeException5 ()\r
763         {\r
764                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
765                 Directory.SetLastWriteTime (Path.InvalidPathChars [0].ToString (), time);\r
766         }\r
767 \r
768 //      [Test]\r
769 //      [ExpectedException(typeof(ArgumentOutOfRangeException))]        \r
770 //      public void SetLastWriteTimeException6 ()\r
771 //      {\r
772 //              DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);\r
773 //              string path = TempFolder + Path.DirectorySeparatorChar + "DirectoryTest.SetLastWriteTime.1";\r
774 //\r
775 //              try {\r
776 //                      if (!Directory.Exists (path))                   \r
777 //                              Directory.CreateDirectory (path);\r
778 //              \r
779 //                      Directory.SetLastWriteTime (path, time);\r
780 //              } finally {\r
781 //                      DeleteDirectory (path);\r
782 //              }\r
783 //\r
784 //      }\r
785 \r
786         [Test]\r
787         [ExpectedException(typeof(ArgumentNullException))]      \r
788         public void SetLastWriteTimeUtcException1 ()\r
789         {\r
790                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
791                 Directory.SetLastWriteTimeUtc (null as string, time);\r
792         }\r
793 \r
794         [Test]\r
795         [ExpectedException(typeof(ArgumentException))]  \r
796         public void SetLastWriteTimeUtcException2 ()\r
797         {\r
798                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
799                 Directory.SetLastWriteTimeUtc ("", time);\r
800         }\r
801         \r
802         [Test]\r
803         [ExpectedException(typeof(FileNotFoundException))]\r
804         public void SetLastWriteTimeUtcException3 ()\r
805         {\r
806                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
807                 string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.2";\r
808                 DeleteDirectory (path);\r
809                 try {\r
810                         Directory.SetLastWriteTimeUtc (path, time);\r
811                 } finally {\r
812                         DeleteDirectory (path);\r
813                 }\r
814         }\r
815 \r
816         [Test]\r
817         [ExpectedException(typeof(ArgumentException))]  \r
818         public void SetLastWriteTimeUtcException4 ()\r
819         {\r
820                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
821                 Directory.SetLastWriteTimeUtc ("    ", time);\r
822         }\r
823 \r
824         [Test]\r
825         [ExpectedException(typeof(ArgumentException))]  \r
826         public void SetLastWriteTimeUtcException5 ()\r
827         {\r
828                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
829                 Directory.SetLastWriteTimeUtc (Path.InvalidPathChars [0].ToString (), time);\r
830         }\r
831 \r
832 //      [Test]\r
833 //      [ExpectedException(typeof(ArgumentOutOfRangeException))]        \r
834 //      public void SetLastWriteTimeUtcException6 ()\r
835 //      {\r
836 //              DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);\r
837 //              string path = TempFolder + DSC + "DirectoryTest.SetLastWriteTimeUtc.1";\r
838 //\r
839 //              if (!Directory.Exists (path))\r
840 //                      Directory.CreateDirectory (path);\r
841 //              try {\r
842 //                      Directory.SetLastWriteTimeUtc (path, time);\r
843 //              } finally {\r
844 //                      DeleteDirectory (path);\r
845 //              }\r
846 //      }\r
847 \r
848         [Test]\r
849         [ExpectedException(typeof(ArgumentNullException))]      \r
850         public void SetLastAccessTimeException1 ()\r
851         {\r
852                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);\r
853                 Directory.SetLastAccessTime (null as string, time);\r
854         }\r
855 \r
856         [Test]\r
857         [ExpectedException(typeof(ArgumentException))]  \r
858         public void SetLastAccessTimeException2 ()\r
859         {\r
860                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
861                 Directory.SetLastAccessTime ("", time);\r
862         }\r
863         \r
864         [Test]\r
865         [ExpectedException(typeof(FileNotFoundException))]\r
866         public void SetLastAccessTimeException3 ()\r
867         {\r
868                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
869                 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.2";\r
870                 DeleteDirectory (path);\r
871                 try {\r
872                         Directory.SetLastAccessTime (path, time);\r
873                 } finally {\r
874                         DeleteDirectory (path);\r
875                 }\r
876         }\r
877 \r
878         [Test]\r
879         [ExpectedException(typeof(ArgumentException))]  \r
880         public void SetLastAccessTimeException4 ()\r
881         {\r
882                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
883                 Directory.SetLastAccessTime ("    ", time);\r
884         }\r
885 \r
886         [Test]\r
887         [ExpectedException(typeof(ArgumentException))]  \r
888         public void SetLastAccessTimeException5 ()\r
889         {\r
890                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
891                 Directory.SetLastAccessTime (Path.InvalidPathChars [0].ToString (), time);\r
892         }\r
893 \r
894 //      [Test]\r
895 //      [ExpectedException(typeof(ArgumentOutOfRangeException))]        \r
896 //      public void SetLastAccessTimeException6 ()\r
897 //      {\r
898 //              DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);\r
899 //              string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTime.1";\r
900 //\r
901 //              if (!Directory.Exists (path))                   \r
902 //                      Directory.CreateDirectory (path);\r
903 //              try {\r
904 //                      Directory.SetLastAccessTime (path, time);\r
905 //              } finally {\r
906 //                      DeleteDirectory (path);\r
907 //              }\r
908 //\r
909 //      }\r
910 \r
911         [Test]\r
912         [ExpectedException(typeof(ArgumentNullException))]      \r
913         public void SetLastAccessTimeUtcException1 ()\r
914         {\r
915                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
916                 Directory.SetLastAccessTimeUtc (null as string, time);\r
917         }\r
918 \r
919         [Test]\r
920         [ExpectedException(typeof(ArgumentException))]  \r
921         public void SetLastAccessTimeUtcException2 ()\r
922         {\r
923                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
924                 Directory.SetLastAccessTimeUtc ("", time);\r
925         }\r
926         \r
927         [Test]\r
928         [ExpectedException(typeof(FileNotFoundException))]\r
929         public void SetLastAccessTimeUtcException3 ()\r
930         {\r
931                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
932                 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";\r
933                 DeleteDirectory (path);\r
934                 try {\r
935                         Directory.SetLastAccessTimeUtc (path, time);\r
936                 } finally {\r
937                         DeleteDirectory (path);\r
938                 }\r
939         }\r
940 \r
941         [Test]\r
942         [ExpectedException(typeof(ArgumentException))]  \r
943         public void SetLastAccessTimeUtcException4 ()\r
944         {\r
945                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
946                 Directory.SetLastAccessTimeUtc ("    ", time);\r
947         }\r
948 \r
949         [Test]\r
950         [ExpectedException(typeof(ArgumentException))]  \r
951         public void SetLastAccessTimeUtcException5 ()\r
952         {\r
953                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
954                 Directory.SetLastAccessTimeUtc (Path.InvalidPathChars [0].ToString (), time);\r
955         }\r
956 \r
957 //      [Test]\r
958 //      [ExpectedException(typeof(ArgumentOutOfRangeException))]        \r
959 //      public void SetLastAccessTimeUtcException6 ()\r
960 //      {\r
961 //              DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);\r
962 //              string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";\r
963 //\r
964 //              if (!Directory.Exists (path))\r
965 //                      Directory.CreateDirectory (path);\r
966 //              try {\r
967 //                      Directory.SetLastAccessTimeUtc (path, time);\r
968 //              } finally {\r
969 //                      DeleteDirectory (path);\r
970 //              }\r
971 //      }\r
972
973         [Test]\r
974         [ExpectedException(typeof(ArgumentNullException))]\r
975         public void SetCreationTimeException1 ()\r
976         {\r
977                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);\r
978                 Directory.SetCreationTime (null as string, time);\r
979         }\r
980 \r
981         [Test]\r
982         [ExpectedException(typeof(ArgumentException))]  \r
983         public void SetCreationTimeException2 ()\r
984         {\r
985                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
986                 Directory.SetCreationTime ("", time);\r
987         }\r
988         \r
989         [Test]\r
990         [ExpectedException(typeof(FileNotFoundException))]\r
991         public void SetCreationTimeException3 ()\r
992         {\r
993                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
994                 string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.2";\r
995                 DeleteDirectory (path);\r
996                 \r
997                 try {\r
998                         Directory.SetCreationTime (path, time);\r
999                 } finally {\r
1000                         DeleteDirectory (path);\r
1001                 }\r
1002         }\r
1003 \r
1004         [Test]\r
1005         [ExpectedException(typeof(ArgumentException))]  \r
1006         public void SetCreationTimeException4 ()\r
1007         {\r
1008                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
1009                 Directory.SetCreationTime ("    ", time);\r
1010         }\r
1011 \r
1012         [Test]\r
1013         [ExpectedException(typeof(ArgumentException))]  \r
1014         public void SetCreationTimeException5 ()\r
1015         {\r
1016                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
1017                 Directory.SetCreationTime (Path.InvalidPathChars [0].ToString (), time);\r
1018         }\r
1019 \r
1020 //      [Test]\r
1021 //      [ExpectedException(typeof(ArgumentOutOfRangeException))]        \r
1022 //      public void SetCreationTimeException6 ()\r
1023 //      {\r
1024 //              DateTime time = new DateTime (1003, 4, 6, 6, 4, 2);\r
1025 //              string path = TempFolder + DSC + "DirectoryTest.SetCreationTime.1";\r
1026 //\r
1027 //              if (!Directory.Exists (path))                   \r
1028 //                      Directory.CreateDirectory (path);\r
1029 //              try {\r
1030 //                      Directory.SetCreationTime (path, time);\r
1031 //                      DeleteDirectory (path);                 \r
1032 //              } finally {\r
1033 //                      DeleteDirectory (path);\r
1034 //              }\r
1035 //\r
1036 //      }\r
1037 \r
1038         [Test]\r
1039         [ExpectedException(typeof(ArgumentNullException))]      \r
1040         public void SetCreationTimeUtcException1 ()\r
1041         {\r
1042                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
1043                 Directory.SetCreationTimeUtc (null as string, time);\r
1044         }\r
1045 \r
1046         [Test]\r
1047         [ExpectedException(typeof(ArgumentException))]  \r
1048         public void SetCreationTimeUtcException2 ()\r
1049         {\r
1050                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
1051                 Directory.SetCreationTimeUtc ("", time);\r
1052         }\r
1053         \r
1054         [Test]\r
1055         [ExpectedException(typeof(FileNotFoundException))]\r
1056         public void SetCreationTimeUtcException3 ()\r
1057         {\r
1058                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
1059                 string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.2";\r
1060                 DeleteDirectory (path);\r
1061                 \r
1062                 try {\r
1063                         Directory.SetCreationTimeUtc (path, time);\r
1064                         DeleteDirectory (path);\r
1065                 } finally {\r
1066                         DeleteDirectory (path);\r
1067                 }\r
1068         }\r
1069 \r
1070         [Test]\r
1071         [ExpectedException(typeof(ArgumentException))]  \r
1072         public void SetCreationTimeUtcException4 ()\r
1073         {\r
1074                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
1075                 Directory.SetCreationTimeUtc ("    ", time);\r
1076         }\r
1077 \r
1078         [Test]\r
1079         [ExpectedException(typeof(ArgumentException))]  \r
1080         public void SetCreationTimeUtcException5 ()\r
1081         {\r
1082                 DateTime time = new DateTime (2003, 4, 6, 6, 4, 2);             \r
1083                 Directory.SetCreationTimeUtc (Path.InvalidPathChars [0].ToString (), time);\r
1084         }\r
1085 \r
1086 //      [Test]\r
1087 //      [ExpectedException(typeof(ArgumentOutOfRangeException))]        \r
1088 //      public void SetCreationTimeUtcException6 ()\r
1089 //      {\r
1090 //              DateTime time = new DateTime (1000, 4, 6, 6, 4, 2);\r
1091 //              string path = TempFolder + DSC + "DirectoryTest.SetLastAccessTimeUtc.1";\r
1092 //\r
1093 //              if (!Directory.Exists (path))\r
1094 //                      Directory.CreateDirectory (path);\r
1095 //              try {\r
1096 //                      Directory.SetCreationTimeUtc (path, time);\r
1097 //                      DeleteDirectory (path);\r
1098 //              } finally {\r
1099 //                      DeleteDirectory (path);\r
1100 //              }\r
1101 //      }\r
1102 \r
1103         [Test]\r
1104         public void GetDirectories ()\r
1105         {\r
1106                 string path = TempFolder;\r
1107                 string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetDirectories";\r
1108                 DeleteDirectory (DirPath);\r
1109                 \r
1110                 try {\r
1111                         Directory.CreateDirectory (DirPath);\r
1112                 \r
1113                         string [] dirs = Directory.GetDirectories (path);\r
1114                 \r
1115                         foreach (string directory in dirs) {\r
1116                         \r
1117                                 if (directory == DirPath)\r
1118                                         return;\r
1119                         }\r
1120                 \r
1121                         Assert ("Directory Not Found", false);\r
1122                 } finally {\r
1123                         DeleteDirectory (DirPath);\r
1124                 }\r
1125         }\r
1126 \r
1127         [Test]\r
1128         public void GetParentOfRootDirectory ()\r
1129         {\r
1130                 DirectoryInfo info;\r
1131 \r
1132                 info = Directory.GetParent (Path.GetPathRoot (Path.GetTempPath ()));\r
1133                 AssertEquals (null, info);\r
1134         }\r
1135         \r
1136         [Test]\r
1137         public void GetFiles ()\r
1138         {\r
1139                 string path = TempFolder;\r
1140                 string DirPath = TempFolder + Path.DirectorySeparatorChar + ".GetFiles";\r
1141                 if (File.Exists (DirPath))\r
1142                         File.Delete (DirPath);\r
1143                 \r
1144                 try {\r
1145                         File.Create (DirPath).Close ();\r
1146                         string [] files = Directory.GetFiles (TempFolder);\r
1147                         foreach (string directory in files) {\r
1148                         \r
1149                                 if (directory == DirPath)\r
1150                                         return;\r
1151                         }\r
1152                 \r
1153                         Assert ("File Not Found", false);\r
1154                 } finally {\r
1155                         if (File.Exists (DirPath))\r
1156                                 File.Delete (DirPath);\r
1157                         \r
1158                 }                                                               \r
1159         }\r
1160 \r
1161         [Test]\r
1162         [ExpectedException (typeof (ArgumentNullException))]\r
1163         public void SetCurrentDirectoryNull ()\r
1164         {\r
1165                 Directory.SetCurrentDirectory (null);\r
1166         }\r
1167 \r
1168         [Test]\r
1169         [ExpectedException (typeof (ArgumentException))]\r
1170         public void SetCurrentDirectoryEmpty ()\r
1171         {\r
1172                 Directory.SetCurrentDirectory (String.Empty);\r
1173         }\r
1174 \r
1175         [Test]\r
1176         [ExpectedException (typeof (ArgumentException))]\r
1177         public void SetCurrentDirectoryWhitespace ()\r
1178         {\r
1179                 Directory.SetCurrentDirectory (" ");\r
1180         }\r
1181 \r
1182 \r
1183         [Test]\r
1184         public void GetNoFiles () // Bug 58875. This throwed an exception on windows.\r
1185         {\r
1186                 DirectoryInfo dir = new DirectoryInfo (".");\r
1187                 dir.GetFiles ("*.nonext");\r
1188         }\r
1189 \r
1190         private void DeleteDirectory (string path)\r
1191         {\r
1192                 if (Directory.Exists (path))\r
1193                         Directory.Delete (path, true);          \r
1194         }\r
1195 }\r
1196 }\r