1 // FileSystemInfoTest.cs - NUnit Test Cases for System.IO.FileSystemInfo class
3 // Ville Palo (vi64pa@koti.soon.fi)
11 using System.Globalization;
12 using System.Threading;
15 namespace MonoTests.System.IO
18 public class FileSystemInfoTest : Assertion
20 string TempFolder = Path.Combine (Path.GetTempPath (), "MonoTests.System.IO.Tests");
21 static readonly char DSC = Path.DirectorySeparatorChar;
24 protected void SetUp()
26 if (Directory.Exists (TempFolder))
27 Directory.Delete (TempFolder, true);
28 Directory.CreateDirectory (TempFolder);
29 Thread.CurrentThread.CurrentCulture = new CultureInfo ("EN-us");
33 protected void TearDown() {
34 if (Directory.Exists (TempFolder))
35 Directory.Delete (TempFolder, true);
41 return Path.DirectorySeparatorChar == '\\';
48 return Path.DirectorySeparatorChar == '/';
55 return Path.DirectorySeparatorChar == ':';
59 private void DeleteFile (string path)
61 if (File.Exists (path))
65 private void DeleteDir (string path)
67 if (Directory.Exists (path))
68 Directory.Delete (path, true);
73 [Category("NotWorking")]
75 public void CreationTimeFile ()
77 string path = TempFolder + DSC + "FSIT.CreationTime.Test";
79 if (Unix) { // Unix doesn't support CreationTimes
83 File.Create (path).Close ();
84 FileSystemInfo info = new FileInfo (path);
85 info.CreationTime = new DateTime (1999, 12, 31, 11, 59, 59);
87 DateTime time = info.CreationTime;
88 AssertEquals ("test#01", 1999, time.Year);
89 AssertEquals ("test#02", 12, time.Month);
90 AssertEquals ("test#03", 31, time.Day);
91 AssertEquals ("test#04", 11, time.Hour);
92 AssertEquals ("test#05", 59, time.Minute);
93 AssertEquals ("test#06", 59, time.Second);
95 time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);
96 AssertEquals ("test#07", 1999, time.Year);
97 AssertEquals ("test#08", 12, time.Month);
98 AssertEquals ("test#09", 31, time.Day);
99 AssertEquals ("test#10", 11, time.Hour);
100 AssertEquals ("test#11", 59, time.Minute);
101 AssertEquals ("test#12", 59, time.Second);
103 info.CreationTimeUtc = new DateTime (1999, 12, 31, 11, 59, 59);
105 time = TimeZone.CurrentTimeZone.ToUniversalTime (info.CreationTime);
106 AssertEquals ("test#13", 1999, time.Year);
107 AssertEquals ("test#14", 12, time.Month);
108 AssertEquals ("test#15", 31, time.Day);
109 AssertEquals ("test#16", 11, time.Hour);
110 AssertEquals ("test#17", 59, time.Minute);
111 AssertEquals ("test#18", 59, time.Second);
113 time = info.CreationTimeUtc;
114 AssertEquals ("test#19", 1999, time.Year);
115 AssertEquals ("test#20", 12, time.Month);
116 AssertEquals ("test#21", 31, time.Day);
117 AssertEquals ("test#22", 11, time.Hour);
118 AssertEquals ("test#23", 59, time.Minute);
119 AssertEquals ("test#24", 59, time.Second);
128 [Category("NotWorking")]
130 public void CreationTimeDirectory ()
132 string path = TempFolder + DSC + "FSIT.CreationTimeDirectory.Test";
134 if (Unix) { // Unix doesn't support CreationTimes
139 FileSystemInfo info = Directory.CreateDirectory (path);
140 info.CreationTime = new DateTime (1999, 12, 31, 11, 59, 59);
141 DateTime time = info.CreationTime;
143 AssertEquals ("test#01", 1999, time.Year);
144 AssertEquals ("test#02", 12, time.Month);
145 AssertEquals ("test#03", 31, time.Day);
147 time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);
148 AssertEquals ("test#07", 1999, time.Year);
149 AssertEquals ("test#08", 12, time.Month);
150 AssertEquals ("test#09", 31, time.Day);
151 AssertEquals ("test#10", 11, time.Hour);
153 info.CreationTimeUtc = new DateTime (1999, 12, 31, 11, 59, 59);
155 time = TimeZone.CurrentTimeZone.ToUniversalTime (info.CreationTime);
156 AssertEquals ("test#13", 1999, time.Year);
157 AssertEquals ("test#14", 12, time.Month);
158 AssertEquals ("test#15", 31, time.Day);
160 time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);
161 AssertEquals ("test#19", 1999, time.Year);
162 AssertEquals ("test#20", 12, time.Month);
163 AssertEquals ("test#21", 31, time.Day);
172 [Category("NotWorking")]
174 public void CreationTimeNoFileOrDirectory ()
176 string path = TempFolder + DSC + "FSIT.CreationTimeNoFile.Test";
181 FileSystemInfo info = new FileInfo (path);
183 DateTime time = TimeZone.CurrentTimeZone.ToUniversalTime(info.CreationTime);
184 AssertEquals ("test#01", 1601, time.Year);
185 AssertEquals ("test#02", 1, time.Month);
186 AssertEquals ("test#03", 1, time.Day);
187 AssertEquals ("test#04", 0, time.Hour);
188 AssertEquals ("test#05", 0, time.Minute);
189 AssertEquals ("test#06", 0, time.Second);
190 AssertEquals ("test#07", 0, time.Millisecond);
192 info = new DirectoryInfo (path);
194 time = TimeZone.CurrentTimeZone.ToUniversalTime(info.CreationTime);
195 AssertEquals ("test#08", 1601, time.Year);
196 AssertEquals ("test#09", 1, time.Month);
197 AssertEquals ("test#10", 1, time.Day);
198 AssertEquals ("test#11", 0, time.Hour);
199 AssertEquals ("test#12", 0, time.Minute);
200 AssertEquals ("test#13", 0, time.Second);
201 AssertEquals ("test#14", 0, time.Millisecond);
209 public void Extenssion ()
211 string path = TempFolder + DSC + "FSIT.Extenssion.Test";
215 FileSystemInfo info = new FileInfo (path);
216 AssertEquals ("test#01", ".Test", info.Extension);
224 [Category("NotWorking")]
226 public void DefaultLastAccessTime ()
228 string path = TempFolder + DSC + "FSIT.DefaultLastAccessTime.Test";
233 FileSystemInfo info = new FileInfo (path);
234 DateTime time = TimeZone.CurrentTimeZone.ToUniversalTime(info.LastAccessTime);
236 AssertEquals ("test#01", 1601, time.Year);
237 AssertEquals ("test#02", 1, time.Month);
238 AssertEquals ("test#03", 1, time.Day);
239 AssertEquals ("test#04", 0, time.Hour);
240 AssertEquals ("test#05", 0, time.Minute);
241 AssertEquals ("test#06", 0, time.Second);
242 AssertEquals ("test#07", 0, time.Millisecond);
250 [Category("NotWorking")]
252 public void LastAccessTime ()
254 string path = TempFolder + DSC + "FSIT.LastAccessTime.Test";
258 File.Create (path).Close ();
259 FileSystemInfo info = new FileInfo (path);
261 info = new FileInfo (path);
263 info.LastAccessTime = new DateTime (2000, 1, 1, 1, 1, 1);
264 time = info.LastAccessTime;
265 AssertEquals ("test#01", 2000, time.Year);
266 AssertEquals ("test#02", 1, time.Month);
267 AssertEquals ("test#03", 1, time.Day);
268 AssertEquals ("test#04", 1, time.Hour);
270 time = TimeZone.CurrentTimeZone.ToLocalTime (info.LastAccessTimeUtc);
271 AssertEquals ("test#05", 2000, time.Year);
272 AssertEquals ("test#06", 1, time.Month);
273 AssertEquals ("test#07", 1, time.Day);
274 AssertEquals ("test#08", 1, time.Hour);
276 info.LastAccessTimeUtc = new DateTime (2000, 1, 1, 1, 1, 1);
277 time = TimeZone.CurrentTimeZone.ToUniversalTime (info.LastAccessTime);
278 AssertEquals ("test#09", 2000, time.Year);
279 AssertEquals ("test#10", 1, time.Month);
280 AssertEquals ("test#11", 1, time.Day);
281 AssertEquals ("test#12", 1, time.Hour);
283 time = info.LastAccessTimeUtc;
284 AssertEquals ("test#13", 2000, time.Year);
285 AssertEquals ("test#14", 1, time.Month);
286 AssertEquals ("test#15", 1, time.Day);
287 AssertEquals ("test#16", 1, time.Hour);
296 [Category("NotWorking")]
298 public void DefaultLastWriteTime ()
300 string path = TempFolder + DSC + "FSIT.DefaultLastWriteTime.Test";
305 FileSystemInfo info = new DirectoryInfo (path);
306 DateTime time = TimeZone.CurrentTimeZone.ToUniversalTime(info.LastWriteTime);
308 AssertEquals ("test#01", 1601, time.Year);
309 AssertEquals ("test#02", 1, time.Month);
310 AssertEquals ("test#03", 1, time.Day);
311 AssertEquals ("test#04", 0, time.Hour);
312 AssertEquals ("test#05", 0, time.Minute);
313 AssertEquals ("test#06", 0, time.Second);
314 AssertEquals ("test#07", 0, time.Millisecond);
321 public void LastWriteTime ()
323 string path = TempFolder + DSC + "FSIT.LastWriteTime.Test";
327 FileSystemInfo info = Directory.CreateDirectory (path);
329 info.LastWriteTime = new DateTime (2000, 1, 1, 1, 1, 1);
330 DateTime time = info.LastWriteTime;
332 AssertEquals ("test#01", 2000, time.Year);
333 AssertEquals ("test#02", 1, time.Month);
334 AssertEquals ("test#03", 1, time.Day);
335 AssertEquals ("test#04", 1, time.Hour);
337 time = info.LastWriteTimeUtc.ToLocalTime ();
338 AssertEquals ("test#05", 2000, time.Year);
339 AssertEquals ("test#06", 1, time.Month);
340 AssertEquals ("test#07", 1, time.Day);
341 AssertEquals ("test#08", 1, time.Hour);
343 info.LastWriteTimeUtc = new DateTime (2000, 1, 1, 1, 1, 1);
344 time = info.LastWriteTimeUtc;
345 AssertEquals ("test#09", 2000, time.Year);
346 AssertEquals ("test#10", 1, time.Month);
347 AssertEquals ("test#11", 1, time.Day);
348 AssertEquals ("test#12", 1, time.Hour);
350 time = info.LastWriteTime.ToUniversalTime ();
351 AssertEquals ("test#13", 2000, time.Year);
352 AssertEquals ("test#14", 1, time.Month);
353 AssertEquals ("test#15", 1, time.Day);
354 AssertEquals ("test#16", 1, time.Hour);