2003-05-22 Nick Drochak <ndrochak@gol.com>
[mono.git] / mcs / class / corlib / Test / System.IO / DirectoryInfoTest.cs
1 // DirectoryInfoTest.cs - NUnit Test Cases for System.IO.DirectoryInfo class\r
2 //\r
3 // Ville Palo (vi64pa@koti.soon.fi)\r
4 // \r
5 // (C) 2003 Ville Palo\r
6 // \r
7 using NUnit.Framework;\r
8 using System;\r
9 using System.IO;\r
10 namespace MonoTests.System.IO\r
11 {\r
12         [TestFixture]\r
13         public class DirectoryInfoTest\r
14         {\r
15                 string TempFolder = Path.Combine (Path.GetTempPath (), "MonoTests.System.IO.Tests");\r
16 \r
17                 public DirectoryInfoTest() \r
18                 {\r
19                         if (Directory.Exists (TempFolder))\r
20                                 Directory.Delete (TempFolder, true);\r
21                         Directory.CreateDirectory (TempFolder);\r
22 \r
23                 }\r
24         \r
25                 ~DirectoryInfoTest ()\r
26                 {\r
27                         if (Directory.Exists (TempFolder))\r
28                                 Directory.Delete (TempFolder, true);\r
29                 }\r
30                 \r
31                 [SetUp]\r
32                 protected void SetUp() {\r
33 \r
34                         if (!Directory.Exists (TempFolder))                             \r
35                                 Directory.CreateDirectory (TempFolder);\r
36                 }\r
37         \r
38                 [TearDown]\r
39                 protected void TearDown() {}\r
40         \r
41                 [Test]\r
42                 public void Ctr ()\r
43                 {\r
44                         string path = TempFolder + "/DIT.Ctr.Test";\r
45                         DeleteDir (path);\r
46                 \r
47                         FileInfo info = new FileInfo (path);\r
48                         Assertion.AssertEquals ("test#01", true, info.DirectoryName.EndsWith (".Tests"));\r
49                         Assertion.AssertEquals ("test#02", false, info.Exists);\r
50                         Assertion.AssertEquals ("test#03", ".Test", info.Extension);\r
51                         Assertion.AssertEquals ("test#05", "DIT.Ctr.Test", info.Name);            \r
52                 }\r
53 \r
54                 [Test]\r
55                 [ExpectedException(typeof(ArgumentNullException))]\r
56                 public void CtorArgumentNullException ()\r
57                 {\r
58                         DirectoryInfo info = new DirectoryInfo (null);            \r
59                 }\r
60 \r
61                 [Test]\r
62                 [ExpectedException(typeof(ArgumentException))]\r
63                 public void CtorArgumentException1 ()\r
64                 {\r
65                         DirectoryInfo info = new DirectoryInfo ("");            \r
66                 }\r
67 \r
68                 [Test]\r
69                 [ExpectedException(typeof(ArgumentException))]\r
70                 public void CtorArgumentException2 ()\r
71                 {\r
72                         DirectoryInfo info = new DirectoryInfo ("   ");            \r
73                 }\r
74 \r
75                 [Test]\r
76                 [ExpectedException(typeof(ArgumentException))]\r
77                 public void CtorArgumentException3 ()\r
78                 {\r
79                 string path = "";\r
80                 foreach (char c in Path.InvalidPathChars) {\r
81                         path += c;\r
82                 }\r
83                 DirectoryInfo info = new DirectoryInfo (path);\r
84                 }\r
85                                 \r
86                 [Test]\r
87                 public void Exists ()\r
88                 {\r
89                 string path = TempFolder + "/DIT.Exists.Test";\r
90                 DeleteDir (path);\r
91             \r
92                 try {\r
93                         DirectoryInfo info = new DirectoryInfo (path);\r
94                         Assertion.AssertEquals ("test#01", false, info.Exists);\r
95             \r
96                         Directory.CreateDirectory (path);\r
97                         Assertion.AssertEquals ("test#02", false, info.Exists);\r
98                         info = new DirectoryInfo (path);\r
99                         Assertion.AssertEquals ("test#03", true, info.Exists);            \r
100                 } finally {\r
101                         DeleteDir (path);\r
102                 }\r
103                 }\r
104                 \r
105                 [Test]\r
106                 public void Name ()\r
107                 {\r
108                         string path = TempFolder + "/DIT.Name.Test";\r
109                         DeleteDir (path);\r
110                         \r
111                         try {\r
112                                 DirectoryInfo info = new DirectoryInfo (path);                          \r
113                                 Assertion.AssertEquals ("test#01", "DIT.Name.Test", info.Name);\r
114                                 \r
115                                 info = Directory.CreateDirectory (path);\r
116                                 Assertion.AssertEquals ("test#02", "DIT.Name.Test", info.Name);\r
117                                 \r
118                                 \r
119                         } finally {\r
120                                 DeleteDir (path);\r
121                         }                                  \r
122                 }\r
123                 \r
124                 [Test]\r
125                 public void Parent ()\r
126                 {\r
127                         string path = TempFolder + "/DIT.Parent.Test";\r
128                         DeleteDir (path);\r
129                         \r
130                         try {\r
131                                 DirectoryInfo info = new DirectoryInfo (path);\r
132                                 Assertion.AssertEquals ("test#01", "MonoTests.System.IO.Tests", info.Parent.Name);\r
133                                 \r
134                                 info = Directory.CreateDirectory (path);\r
135                                 Assertion.AssertEquals ("test#02", "MonoTests.System.IO.Tests", info.Parent.Name);\r
136                                                                 \r
137                         } finally {\r
138                                 DeleteDir (path);\r
139                         }                                               \r
140                 }\r
141 \r
142                 [Test]\r
143                 public void Create ()\r
144                 {\r
145                 string path = TempFolder + "/DIT.Create.Test";\r
146                 DeleteDir (path);\r
147             \r
148                 try {\r
149                         DirectoryInfo info = new DirectoryInfo (path);\r
150                         Assertion.AssertEquals ("test#01", false, info.Exists);\r
151                         info.Create ();                \r
152                         Assertion.AssertEquals ("test#02", false, info.Exists);\r
153                         info = new DirectoryInfo (path);\r
154                         Assertion.AssertEquals ("test#03", true, info.Exists);\r
155                 } finally {\r
156                         DeleteDir (path);\r
157                 }\r
158                 }\r
159 \r
160                 [Test]\r
161                 public void Delete1 ()\r
162                 {\r
163                 string path = TempFolder + "/DIT.Delete1.Test";\r
164                 DeleteDir (path);\r
165                         \r
166                         try {\r
167                                 Directory.CreateDirectory (path);\r
168                                 DirectoryInfo info = new DirectoryInfo (path);\r
169                                 Assertion.AssertEquals ("test#01", true, info.Exists);\r
170                                 \r
171                                 info.Delete ();\r
172                                 Assertion.AssertEquals ("test#02", true, info.Exists);\r
173                                 \r
174                                 info = new DirectoryInfo (path);\r
175                                 Assertion.AssertEquals ("test#03", false, info.Exists);\r
176                         } finally {\r
177                                 DeleteDir (path);\r
178                         }\r
179                 }\r
180 \r
181                 [Test]\r
182                 public void Delete2 ()\r
183                 {\r
184                 string path = TempFolder + "/DIT.Delete2.Test";\r
185                 DeleteDir (path);\r
186                         \r
187                         try {\r
188                                 Directory.CreateDirectory (path);\r
189                                 File.Create (path + "/test").Close ();\r
190                                 DirectoryInfo info = new DirectoryInfo (path);\r
191                                 Assertion.AssertEquals ("test#01", true, info.Exists);\r
192                                 \r
193                                 info.Delete (true);\r
194                                 Assertion.AssertEquals ("test#02", true, info.Exists);\r
195                                 \r
196                                 info = new DirectoryInfo (path);\r
197                                 Assertion.AssertEquals ("test#03", false, info.Exists);\r
198                         } finally {\r
199                                 DeleteDir (path);\r
200                         }\r
201                 }\r
202                 \r
203                 [Test]\r
204                 [ExpectedException (typeof (IOException))]\r
205                 public void DeleteIOException1 ()\r
206                 {\r
207                 string path = TempFolder + "/DIT.DeleteIOException1.Test";\r
208                 DeleteDir (path);                       \r
209                         \r
210                         try {\r
211                                 Directory.CreateDirectory (path);\r
212                                 File.Create (path + "/test").Close ();\r
213                                 DirectoryInfo info = new DirectoryInfo (path);\r
214                                 info.Delete ();\r
215                         } finally {\r
216                                 DeleteDir (path);\r
217                         }\r
218                 }\r
219 \r
220                 [Test]\r
221                 [ExpectedException (typeof (IOException))]\r
222                 public void DeleteIOException2 ()\r
223                 {\r
224                 string path = TempFolder + "/DIT.DeleteIOException2.Test";\r
225                 DeleteDir (path);                       \r
226                         \r
227                         try {\r
228                                 Directory.CreateDirectory (path);\r
229                                 File.Create (path + "/test").Close ();\r
230                                 DirectoryInfo info = new DirectoryInfo (path);\r
231                                 info.Delete (false);\r
232                         } finally {\r
233                                 DeleteDir (path);\r
234                         }\r
235                 }\r
236                 \r
237                 [Test]\r
238                 public void GetDirectories1 ()\r
239                 {\r
240                         string path = TempFolder + "/DIT.GetDirectories1.Test";\r
241                         \r
242                         try {\r
243                                 DirectoryInfo info = Directory.CreateDirectory (path);\r
244                                 Assertion.AssertEquals ("test#01", 0, info.GetDirectories ().Length);\r
245                                 \r
246                                 Directory.CreateDirectory (path + "/" + "1");\r
247                                 Directory.CreateDirectory (path + "/" + "2");                           \r
248                                 File.Create (path + "/" + "filetest").Close ();\r
249                                 Assertion.AssertEquals ("test#02", 2, info.GetDirectories ().Length);\r
250                                 \r
251                                 Directory.Delete (path + "/" + 2);\r
252                                 Assertion.AssertEquals ("test#02", 1, info.GetDirectories ().Length);                           \r
253                                 \r
254                         } finally {\r
255                                 DeleteDir (path);\r
256                         }\r
257                 }\r
258                 \r
259                 [Test]\r
260                 public void GetDirectories2 ()\r
261                 {\r
262                         string path = TempFolder + "/DIT.GetDirectories2.Test";\r
263                         \r
264                         try {\r
265                                 DirectoryInfo info = Directory.CreateDirectory (path);\r
266                                 Assertion.AssertEquals ("test#01", 0, info.GetDirectories ("*").Length);\r
267                                 \r
268                                 Directory.CreateDirectory (path + "/" + "test120");\r
269                                 Directory.CreateDirectory (path + "/" + "test210");\r
270                                 Directory.CreateDirectory (path + "/" + "atest330");\r
271                                 Directory.CreateDirectory (path + "/" + "test220");\r
272                                 File.Create (path + "/" + "filetest").Close ();\r
273                                 \r
274                                 Assertion.AssertEquals ("test#02", 4, info.GetDirectories ("*").Length);\r
275                                 Assertion.AssertEquals ("test#03", 3, info.GetDirectories ("test*").Length);\r
276                                 Assertion.AssertEquals ("test#04", 2, info.GetDirectories ("test?20").Length);\r
277                                 Assertion.AssertEquals ("test#05", 0, info.GetDirectories ("test?").Length);\r
278                                 Assertion.AssertEquals ("test#06", 0, info.GetDirectories ("test[12]*").Length);\r
279                                 Assertion.AssertEquals ("test#07", 2, info.GetDirectories ("test2*0").Length);\r
280                                 Assertion.AssertEquals ("test#08", 4, info.GetDirectories ("*test*").Length);\r
281                                 \r
282                         } finally {\r
283                                 DeleteDir (path);\r
284                         }\r
285                 }\r
286                 \r
287                 [Test]\r
288                 [ExpectedException (typeof (DirectoryNotFoundException))]               \r
289                 public void GetDirectoriesDirectoryNotFoundException1 ()\r
290                 {\r
291                 string path = TempFolder + "/DIT.GetDirectoriesDirectoryNotFoundException1.Test";\r
292                 DeleteDir (path);\r
293                         \r
294                         try {\r
295                                 DirectoryInfo info = new DirectoryInfo (path);\r
296                                 info.GetDirectories ();\r
297                         } finally {\r
298                                 DeleteDir (path);\r
299                         }\r
300                 }\r
301 \r
302                 [Test]\r
303                 [ExpectedException (typeof (DirectoryNotFoundException))]               \r
304                 public void GetDirectoriesDirectoryNotFoundException2 ()\r
305                 {\r
306                 string path = TempFolder + "/DIT.GetDirectoriesDirectoryNotFoundException2.Test";\r
307                 DeleteDir (path);\r
308                         \r
309                         try {\r
310                                 DirectoryInfo info = new DirectoryInfo (path);\r
311                                 info.GetDirectories ("*");\r
312                         } finally {\r
313                                 DeleteDir (path);\r
314                         }\r
315                 }\r
316                 \r
317                 [Test]\r
318                 [ExpectedException (typeof (ArgumentNullException))]\r
319                 public void GetDirectoriesArgumentNullException ()\r
320                 {\r
321                 string path = TempFolder + "/DIT.GetDirectoriesArgumentNullException.Test";\r
322                 DeleteDir (path);\r
323                         \r
324                         try {\r
325                                 DirectoryInfo info = new DirectoryInfo (path);\r
326                                 info.GetDirectories (null);\r
327                         } finally {\r
328                                 DeleteDir (path);\r
329                         }                       \r
330                 }\r
331 \r
332                 [Test]\r
333                 public void GetFiles1 ()\r
334                 {\r
335                 string path = TempFolder + "/DIT.GetFiles1.Test";\r
336                 DeleteDir (path);\r
337                         \r
338                         try {\r
339                                 DirectoryInfo info = Directory.CreateDirectory (path);\r
340                                 Assertion.AssertEquals ("test#01", 0, info.GetFiles ().Length);\r
341                                 File.Create (path + "/" + "file1").Close ();\r
342                                 File.Create (path + "/" + "file2").Close ();\r
343                                 Directory.CreateDirectory (path + "/" + "directory1");\r
344                                 Assertion.AssertEquals ("test#02", 2, info.GetFiles ().Length);\r
345                                                         \r
346                         } finally {\r
347                                 DeleteDir (path);\r
348                         }\r
349                 }\r
350                 \r
351                 [Test]\r
352                 public void GetFiles2()\r
353                 {\r
354                 string path = TempFolder + "/DIT.GetFiles2.Test";\r
355                 DeleteDir (path);\r
356                         \r
357                         try {\r
358                                 DirectoryInfo info = Directory.CreateDirectory (path);\r
359                                 Assertion.AssertEquals ("test#01", 0, info.GetFiles ("*").Length);\r
360                                 File.Create (path + "/" + "file120file").Close ();\r
361                                 File.Create (path + "/" + "file220file").Close ();\r
362                                 File.Create (path + "/" + "afile330file").Close ();\r
363                                 File.Create (path + "/" + "test.abc").Close ();\r
364                                 File.Create (path + "/" + "test.abcd").Close ();\r
365                                 File.Create (path + "/" + "test.abcdef").Close ();                              \r
366                                 Directory.CreateDirectory (path + "/" + "dir");\r
367                                 \r
368                                 Assertion.AssertEquals ("test#02", 6, info.GetFiles ("*").Length);\r
369                                 Assertion.AssertEquals ("test#03", 2, info.GetFiles ("file*file").Length);\r
370                                 Assertion.AssertEquals ("test#04", 3, info.GetFiles ("*file*").Length);\r
371                                 Assertion.AssertEquals ("test#05", 2, info.GetFiles ("file?20file").Length);\r
372                                 Assertion.AssertEquals ("test#07", 1, info.GetFiles ("*.abcd").Length);\r
373                                 Assertion.AssertEquals ("test#08", 2, info.GetFiles ("*.abcd*").Length);                                                        \r
374                         } finally {\r
375                                 DeleteDir (path);\r
376                         }\r
377                 }\r
378                 \r
379                 [Test]\r
380                 [ExpectedException (typeof (DirectoryNotFoundException))]\r
381                 public void GetFilesDirectoryNotFoundException1 ()\r
382                 {\r
383                         string path = TempFolder + "/DIT.GetFilesDirectoryNotFoundException1.Test";\r
384                         DeleteDir (path);\r
385                         \r
386                         try {\r
387                                 DirectoryInfo info = new DirectoryInfo (path);\r
388                                 info.GetFiles ();\r
389                                 \r
390                         } finally {\r
391                                 DeleteDir (path);\r
392                         }\r
393                 }\r
394 \r
395                 [Test]\r
396                 [ExpectedException (typeof (DirectoryNotFoundException))]\r
397                 public void GetFilesDirectoryNotFoundException2 ()\r
398                 {\r
399                         string path = TempFolder + "/DIT.GetFilesDirectoryNotFoundException2.Test";\r
400                         DeleteDir (path);\r
401                         \r
402                         try {\r
403                                 DirectoryInfo info = new DirectoryInfo (path);\r
404                                 info.GetFiles ("*");\r
405                                 \r
406                         } finally {\r
407                                 DeleteDir (path);\r
408                         }\r
409                 }\r
410                 \r
411                 [Test]\r
412                 [ExpectedException (typeof (ArgumentNullException))]\r
413                 public void GetFilesArgumentNullException ()\r
414                 {\r
415                         string path = TempFolder + "/DIT.GetFilesArgumentNullException.Test";\r
416                         DeleteDir (path);\r
417                         \r
418                         try {\r
419                                 DirectoryInfo info = new DirectoryInfo (path);\r
420                                 info.GetFiles (null);                           \r
421                         } finally {\r
422                                 DeleteDir (path);\r
423                         }\r
424                 }\r
425                 \r
426                 [Test]\r
427                 public void MoveTo ()\r
428                 {\r
429                         string path1 = TempFolder + "/DIT.MoveTo.Soucre.Test";\r
430                         string path2 = TempFolder + "/DIT.MoveTo.Dest.Test";\r
431                         DeleteDir (path1);\r
432                         DeleteDir (path2);\r
433                         \r
434                         try {\r
435                                 DirectoryInfo info1 = Directory.CreateDirectory (path1);\r
436                                 DirectoryInfo info2 = new DirectoryInfo (path2);\r
437                                 \r
438                                 Assertion.AssertEquals ("test#01", true, info1.Exists);\r
439                                 Assertion.AssertEquals ("test#02", false, info2.Exists);\r
440                                                                                                 \r
441                                 info1.MoveTo (path2);                           \r
442                                 Assertion.AssertEquals ("test#03", true, info1.Exists);\r
443                                 Assertion.AssertEquals ("test#04", false, info2.Exists);\r
444                                 \r
445                                 info1 = new DirectoryInfo (path1);\r
446                                 info2 = new DirectoryInfo (path2);\r
447                                 Assertion.AssertEquals ("test#05", false, info1.Exists);\r
448                                 Assertion.AssertEquals ("test#06", true, info2.Exists);\r
449                                 \r
450                         } finally {\r
451                                 DeleteDir (path1);\r
452                                 DeleteDir (path2);\r
453                         }\r
454                 }\r
455 \r
456                 [Test]\r
457                 [ExpectedException (typeof (ArgumentNullException))]\r
458                 public void MoveToArgumentNullException ()\r
459                 {\r
460                         string path = TempFolder + "/DIT.MoveToArgumentNullException.Test";\r
461                         DeleteDir (path);\r
462                         \r
463                         try {\r
464                                 DirectoryInfo info = Directory.CreateDirectory (path);\r
465                                 info.MoveTo (null);\r
466                         } finally {\r
467                                 DeleteDir (path);\r
468                         }\r
469                         \r
470                 }\r
471 \r
472                 [Test]\r
473                 [ExpectedException (typeof (IOException))]\r
474                 public void MoveToIOException1 ()\r
475                 {\r
476                         string path = TempFolder + "/DIT.MoveToIOException1.Test";\r
477                         DeleteDir (path);\r
478                         \r
479                         try {\r
480                                 DirectoryInfo info = Directory.CreateDirectory (path);\r
481                                 info.MoveTo (path);\r
482                         } finally {\r
483                                 DeleteDir (path);\r
484                         }                       \r
485                 }\r
486 \r
487                 [Test]\r
488                 [ExpectedException (typeof (ArgumentException))]\r
489                 public void MoveToArgumentException1 ()\r
490                 {\r
491                         string path = TempFolder + "/DIT.MoveToArgumentException1.Test";\r
492                         DeleteDir (path);\r
493                         \r
494                         try {\r
495                                 DirectoryInfo info = Directory.CreateDirectory (path);\r
496                                 info.MoveTo ("");\r
497                         } finally {\r
498                                 DeleteDir (path);\r
499                         }                       \r
500                 }\r
501 \r
502                 [Test]\r
503                 [ExpectedException (typeof (ArgumentException))]\r
504                 public void MoveToArgumentException2 ()\r
505                 {\r
506                         string path = TempFolder + "/DIT.MoveToArgumentException2.Test";\r
507                         DeleteDir (path);\r
508                         \r
509                         try {\r
510                                 DirectoryInfo info = Directory.CreateDirectory (path);\r
511                                 info.MoveTo ("    ");\r
512                         } finally {\r
513                                 DeleteDir (path);\r
514                         }                       \r
515                 }\r
516 \r
517                 [Test]\r
518                 [ExpectedException (typeof (ArgumentException))]\r
519                 public void MoveToArgumentException3 ()\r
520                 {\r
521                         string path = TempFolder + "/DIT.MoveToArgumentException3.Test";\r
522                         DeleteDir (path);\r
523                         \r
524                         try {\r
525                                 DirectoryInfo info = Directory.CreateDirectory (path);\r
526                                 info.MoveTo (Path.InvalidPathChars [0].ToString ());\r
527                         } finally {\r
528                                 DeleteDir (path);\r
529                         }                       \r
530                 }\r
531 \r
532                 [Test]\r
533                 [ExpectedException (typeof (IOException))]\r
534                 public void MoveToIOException2 ()\r
535                 {\r
536                         string path = TempFolder + "/DIT.MoveToIOException2.Test";\r
537                         DeleteDir (path);\r
538                         \r
539                         try {\r
540                                 DirectoryInfo info = new DirectoryInfo (path);\r
541                                 info.MoveTo (path);\r
542                         } finally {\r
543                                 DeleteDir (path);\r
544                         }                       \r
545                 }\r
546 \r
547                 private void DeleteDir (string path)\r
548                 {\r
549                         if (Directory.Exists (path))\r
550                                 Directory.Delete (path, true);\r
551                 }\r
552                                 \r
553         }\r
554 }\r