2003-05-29 Nick Drochak <ndrochak@gol.com>
[mono.git] / mcs / class / corlib / Test / System.IO / FileSystemInfoTest.cs
1 // FileSystemInfoTest.cs - NUnit Test Cases for System.IO.FileSystemInfo class
2 //
3 // Ville Palo (vi64pa@koti.soon.fi)
4 // 
5 // (C) 2003 Ville Palo
6 // 
7
8 using NUnit.Framework;
9 using System;
10 using System.IO;
11 using System.Globalization;
12 using System.Threading;
13
14
15 namespace MonoTests.System.IO
16 {
17         [TestFixture]
18         public class FileSystemInfoTest : Assertion
19         {
20                 string TempFolder = Path.Combine (Path.GetTempPath (), "MonoTests.System.IO.Tests");
21
22                 [SetUp]
23                 protected void SetUp() 
24                 {
25                         if (Directory.Exists (TempFolder))
26                                 Directory.Delete (TempFolder, true);
27                         Directory.CreateDirectory (TempFolder);
28                         Thread.CurrentThread.CurrentCulture = new CultureInfo ("EN-us");
29                 }
30
31                 [TearDown]
32                 protected void TearDown() {
33                         if (Directory.Exists (TempFolder))
34                                 Directory.Delete (TempFolder, true);
35                 }
36
37                 private void DeleteFile (string path)
38                 {
39                         if (File.Exists (path))
40                                 File.Delete (path);
41                 }
42
43                 private void DeleteDir (string path)
44                 {
45                         if (Directory.Exists (path))
46                                 Directory.Delete (path, true);
47                 }
48
49                 [Test]
50                 public void CreationTimeFile ()
51                 {
52                         string path = TempFolder + "/FSIT.CreationTime.Test";
53                         DeleteFile (path);
54
55                         try {
56                                 File.Create (path).Close ();
57                                 FileSystemInfo info = new FileInfo (path);
58                                 info.CreationTime = new DateTime (1999, 12, 31, 11, 59, 59);
59
60                                 DateTime time = info.CreationTime;                              
61                                 AssertEquals ("test#01", 1999, time.Year);
62                                 AssertEquals ("test#02", 12, time.Month);
63                                 AssertEquals ("test#03", 31, time.Day);
64                                 AssertEquals ("test#04", 11, time.Hour);
65                                 AssertEquals ("test#05", 59, time.Minute);
66                                 AssertEquals ("test#06", 59, time.Second);
67                                 
68                                 time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);     
69                                 AssertEquals ("test#07", 1999, time.Year);
70                                 AssertEquals ("test#08", 12, time.Month);
71                                 AssertEquals ("test#09", 31, time.Day);
72                                 AssertEquals ("test#10", 11, time.Hour);
73                                 AssertEquals ("test#11", 59, time.Minute);
74                                 AssertEquals ("test#12", 59, time.Second);
75                                 
76                                 info.CreationTimeUtc = new DateTime (1999, 12, 31, 11, 59, 59);
77
78                                 time = TimeZone.CurrentTimeZone.ToUniversalTime (info.CreationTime);                            
79                                 AssertEquals ("test#13", 1999, time.Year);
80                                 AssertEquals ("test#14", 12, time.Month);
81                                 AssertEquals ("test#15", 31, time.Day);
82                                 AssertEquals ("test#16", 11, time.Hour);
83                                 AssertEquals ("test#17", 59, time.Minute);
84                                 AssertEquals ("test#18", 59, time.Second);
85
86                                 time = info.CreationTimeUtc;    
87                                 AssertEquals ("test#19", 1999, time.Year);
88                                 AssertEquals ("test#20", 12, time.Month);
89                                 AssertEquals ("test#21", 31, time.Day);
90                                 AssertEquals ("test#22", 11, time.Hour);
91                                 AssertEquals ("test#23", 59, time.Minute);
92                                 AssertEquals ("test#24", 59, time.Second);
93
94                         } finally {
95                                 DeleteFile (path);
96                         }
97                 }
98
99                 [Test]
100                 public void CreationTimeDirectory ()
101                 {
102                         string path = TempFolder + "/FSIT.CreationTimeDirectory.Test";
103                         DeleteDir (path);
104                         
105                         try {                           
106                                 FileSystemInfo info = Directory.CreateDirectory (path);
107                                 info.CreationTime = new DateTime (1999, 12, 31, 11, 59, 59);
108                                 DateTime time = info.CreationTime;      
109                                 
110                                 AssertEquals ("test#01", 1999, time.Year);
111                                 AssertEquals ("test#02", 12, time.Month);
112                                 AssertEquals ("test#03", 31, time.Day);
113                                 
114                                 time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);     
115                                 AssertEquals ("test#07", 1999, time.Year);
116                                 AssertEquals ("test#08", 12, time.Month);
117                                 AssertEquals ("test#09", 31, time.Day);
118                                 AssertEquals ("test#10", 11, time.Hour);
119                                 
120                                 info.CreationTimeUtc = new DateTime (1999, 12, 31, 11, 59, 59);
121                                 
122                                 time = TimeZone.CurrentTimeZone.ToUniversalTime (info.CreationTime);                            
123                                 AssertEquals ("test#13", 1999, time.Year);
124                                 AssertEquals ("test#14", 12, time.Month);
125                                 AssertEquals ("test#15", 31, time.Day);
126                                 
127                                 time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);     
128                                 AssertEquals ("test#19", 1999, time.Year);
129                                 AssertEquals ("test#20", 12, time.Month);
130                                 AssertEquals ("test#21", 31, time.Day);
131                                 
132                         } finally {
133                                 DeleteDir (path);
134                         }
135                 }
136                 
137                 [Test]
138                 public void CreationTimeNoFileOrDirectory ()
139                 {
140                         string path = TempFolder + "/FSIT.CreationTimeNoFile.Test";
141                         DeleteFile (path);
142                         DeleteDir (path);
143                         
144                         try {
145                                 FileSystemInfo info = new FileInfo (path);
146                                 
147                                 DateTime time = info.CreationTime;
148                                 AssertEquals ("test#01", 1601, time.Year);
149                                 AssertEquals ("test#02", 1, time.Month);
150                                 AssertEquals ("test#03", 1, time.Day);
151                                 AssertEquals ("test#04", 2, time.Hour);
152                                 AssertEquals ("test#05", 0, time.Minute);
153                                 AssertEquals ("test#06", 0, time.Second);
154                                 AssertEquals ("test#07", 0, time.Millisecond);
155                                 
156                                 info = new DirectoryInfo (path);
157                                 
158                                 time = info.CreationTime;
159                                 AssertEquals ("test#08", 1601, time.Year);
160                                 AssertEquals ("test#09", 1, time.Month);
161                                 AssertEquals ("test#10", 1, time.Day);
162                                 AssertEquals ("test#11", 2, time.Hour);
163                                 AssertEquals ("test#12", 0, time.Minute);
164                                 AssertEquals ("test#13", 0, time.Second);
165                                 AssertEquals ("test#14", 0, time.Millisecond);
166                         } finally {
167                                 DeleteFile (path);
168                                 DeleteDir (path);
169                         }
170                 }
171                 
172                 [Test]
173                 public void Extenssion ()
174                 {
175                         string path = TempFolder + "/FSIT.Extenssion.Test";
176                         DeleteFile (path);
177                         
178                         try {
179                                 FileSystemInfo info = new FileInfo (path);
180                                 AssertEquals ("test#01", ".Test", info.Extension);
181                         } finally {
182                                 DeleteFile (path);
183                         }
184                 }
185                 
186                 [Test]
187                 public void DefaultLastAccessTime ()
188                 {
189                         string path = TempFolder + "/FSIT.DefaultLastAccessTime.Test";
190                         DeleteFile (path);
191                         
192                         try {
193                                 
194                                 FileSystemInfo info = new FileInfo (path);
195                                 DateTime time = info.LastAccessTime;
196
197                                 AssertEquals ("test#01", 1601, time.Year);
198                                 AssertEquals ("test#02", 1, time.Month);
199                                 AssertEquals ("test#03", 1, time.Day);
200                                 AssertEquals ("test#04", 2, time.Hour);
201                                 AssertEquals ("test#05", 0, time.Minute);
202                                 AssertEquals ("test#06", 0, time.Second);
203                                 AssertEquals ("test#07", 0, time.Millisecond);
204                         } finally {
205                                 DeleteFile (path);
206                         }
207                 }
208
209                 [Test]
210                 public void LastAccessTime ()
211                 {
212                         string path = TempFolder + "/FSIT.LastAccessTime.Test";
213                         DeleteFile (path);
214
215                         try {
216                                 File.Create (path).Close ();
217                                 FileSystemInfo info = new FileInfo (path);
218                                 DateTime time;
219                                 info = new FileInfo (path);
220                                 
221                                 info.LastAccessTime = new DateTime (2000, 1, 1, 1, 1, 1);
222                                 time = info.LastAccessTime;
223                                 AssertEquals ("test#01", 2000, time.Year);
224                                 AssertEquals ("test#02", 1, time.Month);
225                                 AssertEquals ("test#03", 1, time.Day);
226                                 AssertEquals ("test#04", 1, time.Hour);
227                                 
228                                 time = TimeZone.CurrentTimeZone.ToLocalTime (info.LastAccessTimeUtc);
229                                 AssertEquals ("test#05", 2000, time.Year);
230                                 AssertEquals ("test#06", 1, time.Month);
231                                 AssertEquals ("test#07", 1, time.Day);
232                                 AssertEquals ("test#08", 1, time.Hour);
233                                 
234                                 info.LastAccessTimeUtc = new DateTime (2000, 1, 1, 1, 1, 1);
235                                 time = TimeZone.CurrentTimeZone.ToUniversalTime (info.LastAccessTime);
236                                 AssertEquals ("test#09", 2000, time.Year);
237                                 AssertEquals ("test#10", 1, time.Month);
238                                 AssertEquals ("test#11", 1, time.Day);
239                                 AssertEquals ("test#12", 1, time.Hour);
240
241                                 time = info.LastAccessTimeUtc;
242                                 AssertEquals ("test#13", 2000, time.Year);
243                                 AssertEquals ("test#14", 1, time.Month);
244                                 AssertEquals ("test#15", 1, time.Day);
245                                 AssertEquals ("test#16", 1, time.Hour);                         
246                                 
247                         } finally {
248                                 DeleteFile (path);
249                         }
250                 }
251                 
252                 [Test]
253                 public void DefaultLastWriteTime ()
254                 {
255                         string path = TempFolder + "/FSIT.DefaultLastWriteTime.Test";
256                         DeleteDir (path);
257
258                         try {
259
260                                 FileSystemInfo info = new DirectoryInfo (path);
261                                 DateTime time = info.LastAccessTime;
262                                 
263                                 AssertEquals ("test#01", 1601, time.Year);
264                                 AssertEquals ("test#02", 1, time.Month);
265                                 AssertEquals ("test#03", 1, time.Day);
266                                 AssertEquals ("test#04", 2, time.Hour);
267                                 AssertEquals ("test#05", 0, time.Minute);
268                                 AssertEquals ("test#06", 0, time.Second);
269                                 AssertEquals ("test#07", 0, time.Millisecond);
270                         } finally {
271                                 DeleteDir (path);
272                         }
273                 }
274                 
275                 [Test]
276                 public void LastWriteTime ()
277                 {
278                         string path = TempFolder + "/FSIT.LastWriteTime.Test";
279                         DeleteDir (path);
280                         
281                         try {
282                                 FileSystemInfo info = Directory.CreateDirectory (path);
283                                 
284                                 info.LastWriteTime = new DateTime (2000, 1, 1, 1, 1, 1);
285                                 DateTime time = info.LastWriteTime;
286                                 
287                                 AssertEquals ("test#01", 2000, time.Year);
288                                 AssertEquals ("test#02", 1, time.Month);
289                                 AssertEquals ("test#03", 1, time.Day);
290                                 AssertEquals ("test#04", 1, time.Hour);
291                                 
292                                 time = TimeZone.CurrentTimeZone.ToLocalTime (info.LastWriteTimeUtc);
293                                 AssertEquals ("test#05", 2000, time.Year);
294                                 AssertEquals ("test#06", 1, time.Month);
295                                 AssertEquals ("test#07", 1, time.Day);
296                                 AssertEquals ("test#08", 1, time.Hour);
297                                 
298                                 info.LastWriteTimeUtc = new DateTime (2000, 1, 1, 1, 1, 1);
299                                 time = TimeZone.CurrentTimeZone.ToUniversalTime (info.LastWriteTime);
300                                 AssertEquals ("test#09", 2000, time.Year);
301                                 AssertEquals ("test#10", 1, time.Month);
302                                 AssertEquals ("test#11", 1, time.Day);
303                                 AssertEquals ("test#12", 1, time.Hour);
304
305                                 time = info.LastWriteTimeUtc;
306                                 AssertEquals ("test#13", 2000, time.Year);
307                                 AssertEquals ("test#14", 1, time.Month);
308                                 AssertEquals ("test#15", 1, time.Day);
309                                 AssertEquals ("test#16", 1, time.Hour);
310
311                         } finally {
312                                 DeleteDir (path);
313                         }
314                 }
315         }
316 }