FileSystemInfoTest.cs 10 KB

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