FileSystemInfoTest.cs 9.6 KB

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