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");
23 protected void SetUp()
25 if (Directory.Exists (TempFolder))
26 Directory.Delete (TempFolder, true);
27 Directory.CreateDirectory (TempFolder);
28 Thread.CurrentThread.CurrentCulture = new CultureInfo ("EN-us");
32 protected void TearDown() {
33 if (Directory.Exists (TempFolder))
34 Directory.Delete (TempFolder, true);
37 private void DeleteFile (string path)
39 if (File.Exists (path))
43 private void DeleteDir (string path)
45 if (Directory.Exists (path))
46 Directory.Delete (path, true);
50 public void CreationTimeFile ()
52 string path = TempFolder + "/FSIT.CreationTime.Test";
56 File.Create (path).Close ();
57 FileSystemInfo info = new FileInfo (path);
58 info.CreationTime = new DateTime (1999, 12, 31, 11, 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);
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);
76 info.CreationTimeUtc = new DateTime (1999, 12, 31, 11, 59, 59);
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);
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);
100 public void CreationTimeDirectory ()
102 string path = TempFolder + "/FSIT.CreationTimeDirectory.Test";
106 FileSystemInfo info = Directory.CreateDirectory (path);
107 info.CreationTime = new DateTime (1999, 12, 31, 11, 59, 59);
108 DateTime time = info.CreationTime;
110 AssertEquals ("test#01", 1999, time.Year);
111 AssertEquals ("test#02", 12, time.Month);
112 AssertEquals ("test#03", 31, time.Day);
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);
120 info.CreationTimeUtc = new DateTime (1999, 12, 31, 11, 59, 59);
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);
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);
138 public void CreationTimeNoFileOrDirectory ()
140 string path = TempFolder + "/FSIT.CreationTimeNoFile.Test";
145 FileSystemInfo info = new FileInfo (path);
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);
156 info = new DirectoryInfo (path);
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);
173 public void Extenssion ()
175 string path = TempFolder + "/FSIT.Extenssion.Test";
179 FileSystemInfo info = new FileInfo (path);
180 AssertEquals ("test#01", ".Test", info.Extension);
187 public void DefaultLastAccessTime ()
189 string path = TempFolder + "/FSIT.DefaultLastAccessTime.Test";
194 FileSystemInfo info = new FileInfo (path);
195 DateTime time = info.LastAccessTime;
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);
210 public void LastAccessTime ()
212 string path = TempFolder + "/FSIT.LastAccessTime.Test";
216 File.Create (path).Close ();
217 FileSystemInfo info = new FileInfo (path);
219 info = new FileInfo (path);
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);
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);
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);
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);
253 public void DefaultLastWriteTime ()
255 string path = TempFolder + "/FSIT.DefaultLastWriteTime.Test";
260 FileSystemInfo info = new DirectoryInfo (path);
261 DateTime time = info.LastAccessTime;
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);
276 public void LastWriteTime ()
278 string path = TempFolder + "/FSIT.LastWriteTime.Test";
282 FileSystemInfo info = Directory.CreateDirectory (path);
284 info.LastWriteTime = new DateTime (2000, 1, 1, 1, 1, 1);
285 DateTime time = info.LastWriteTime;
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);
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);
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);
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);