FileSystemInfoTest.cs 9.1 KB

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