New test.
[mono.git] / mcs / class / corlib / Test / System.IO / FileSystemInfoTest.cs
index 2b29ba34186af08b1f7f799da1f38e80abd32422..2c664ad6b9b454c3ebb418e51776ce7780d6b369 100644 (file)
@@ -14,21 +14,47 @@ using System.Threading;
 
 namespace MonoTests.System.IO
 {
-
        [TestFixture]
-        public class FileSystemInfoTest
+        public class FileSystemInfoTest : Assertion
        {
-
-               public FileSystemInfoTest() {}
+               string TempFolder = Path.Combine (Path.GetTempPath (), "MonoTests.System.IO.Tests");
+               static readonly char DSC = Path.DirectorySeparatorChar;
 
                [SetUp]
                protected void SetUp() 
                {
+                       if (Directory.Exists (TempFolder))
+                               Directory.Delete (TempFolder, true);
+                       Directory.CreateDirectory (TempFolder);
                        Thread.CurrentThread.CurrentCulture = new CultureInfo ("EN-us");
                }
 
                [TearDown]
-               protected void TearDown() {}
+               protected void TearDown() {
+                       if (Directory.Exists (TempFolder))
+                               Directory.Delete (TempFolder, true);
+               }
+               
+               bool Windows
+               {
+                       get {
+                               return Path.DirectorySeparatorChar == '\\';
+                       }
+               }
+
+               bool Unix
+               {
+                       get {
+                               return Path.DirectorySeparatorChar == '/';
+                       }
+               }
+
+               bool Mac
+               {
+                       get {
+                               return Path.DirectorySeparatorChar == ':';
+                       }
+               }
 
                private void DeleteFile (string path)
                {
@@ -45,47 +71,49 @@ namespace MonoTests.System.IO
                [Test]
                public void CreationTimeFile ()
                {
-                       string path = "resources/FSIT.CreationTime.Test";
+                       string path = TempFolder + DSC + "FSIT.CreationTime.Test";
                        DeleteFile (path);
-
+                       if (Unix) {  // Unix doesn't support CreationTimes
+                         return;
+                       }
                        try {
                                File.Create (path).Close ();
                                FileSystemInfo info = new FileInfo (path);
                                info.CreationTime = new DateTime (1999, 12, 31, 11, 59, 59);
 
                                DateTime time = info.CreationTime;                              
-                               Assertion.AssertEquals ("test#01", 1999, time.Year);
-                               Assertion.AssertEquals ("test#02", 12, time.Month);
-                               Assertion.AssertEquals ("test#03", 31, time.Day);
-                               Assertion.AssertEquals ("test#04", 11, time.Hour);
-                               Assertion.AssertEquals ("test#05", 59, time.Minute);
-                               Assertion.AssertEquals ("test#06", 59, time.Second);
+                               AssertEquals ("test#01", 1999, time.Year);
+                               AssertEquals ("test#02", 12, time.Month);
+                               AssertEquals ("test#03", 31, time.Day);
+                               AssertEquals ("test#04", 11, time.Hour);
+                               AssertEquals ("test#05", 59, time.Minute);
+                               AssertEquals ("test#06", 59, time.Second);
                                
                                time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);     
-                               Assertion.AssertEquals ("test#07", 1999, time.Year);
-                               Assertion.AssertEquals ("test#08", 12, time.Month);
-                               Assertion.AssertEquals ("test#09", 31, time.Day);
-                               Assertion.AssertEquals ("test#10", 11, time.Hour);
-                               Assertion.AssertEquals ("test#11", 59, time.Minute);
-                               Assertion.AssertEquals ("test#12", 59, time.Second);
+                               AssertEquals ("test#07", 1999, time.Year);
+                               AssertEquals ("test#08", 12, time.Month);
+                               AssertEquals ("test#09", 31, time.Day);
+                               AssertEquals ("test#10", 11, time.Hour);
+                               AssertEquals ("test#11", 59, time.Minute);
+                               AssertEquals ("test#12", 59, time.Second);
                                
                                info.CreationTimeUtc = new DateTime (1999, 12, 31, 11, 59, 59);
 
                                time = TimeZone.CurrentTimeZone.ToUniversalTime (info.CreationTime);                            
-                               Assertion.AssertEquals ("test#13", 1999, time.Year);
-                               Assertion.AssertEquals ("test#14", 12, time.Month);
-                               Assertion.AssertEquals ("test#15", 31, time.Day);
-                               Assertion.AssertEquals ("test#16", 11, time.Hour);
-                               Assertion.AssertEquals ("test#17", 59, time.Minute);
-                               Assertion.AssertEquals ("test#18", 59, time.Second);
+                               AssertEquals ("test#13", 1999, time.Year);
+                               AssertEquals ("test#14", 12, time.Month);
+                               AssertEquals ("test#15", 31, time.Day);
+                               AssertEquals ("test#16", 11, time.Hour);
+                               AssertEquals ("test#17", 59, time.Minute);
+                               AssertEquals ("test#18", 59, time.Second);
 
                                time = info.CreationTimeUtc;    
-                               Assertion.AssertEquals ("test#19", 1999, time.Year);
-                               Assertion.AssertEquals ("test#20", 12, time.Month);
-                               Assertion.AssertEquals ("test#21", 31, time.Day);
-                               Assertion.AssertEquals ("test#22", 11, time.Hour);
-                               Assertion.AssertEquals ("test#23", 59, time.Minute);
-                               Assertion.AssertEquals ("test#24", 59, time.Second);
+                               AssertEquals ("test#19", 1999, time.Year);
+                               AssertEquals ("test#20", 12, time.Month);
+                               AssertEquals ("test#21", 31, time.Day);
+                               AssertEquals ("test#22", 11, time.Hour);
+                               AssertEquals ("test#23", 59, time.Minute);
+                               AssertEquals ("test#24", 59, time.Second);
 
                        } finally {
                                DeleteFile (path);
@@ -95,35 +123,38 @@ namespace MonoTests.System.IO
                [Test]
                public void CreationTimeDirectory ()
                {
-                       string path = "resources/FSIT.CreationTimeDirectory.Test";
+                       string path = TempFolder + DSC + "FSIT.CreationTimeDirectory.Test";
                        DeleteDir (path);
+                       if (Unix) {  // Unix doesn't support CreationTimes
+                         return;
+                       }
                        
                        try {                           
                                FileSystemInfo info = Directory.CreateDirectory (path);
                                info.CreationTime = new DateTime (1999, 12, 31, 11, 59, 59);
                                DateTime time = info.CreationTime;      
                                
-                               Assertion.AssertEquals ("test#01", 1999, time.Year);
-                               Assertion.AssertEquals ("test#02", 12, time.Month);
-                               Assertion.AssertEquals ("test#03", 31, time.Day);
+                               AssertEquals ("test#01", 1999, time.Year);
+                               AssertEquals ("test#02", 12, time.Month);
+                               AssertEquals ("test#03", 31, time.Day);
                                
                                time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);     
-                               Assertion.AssertEquals ("test#07", 1999, time.Year);
-                               Assertion.AssertEquals ("test#08", 12, time.Month);
-                               Assertion.AssertEquals ("test#09", 31, time.Day);
-                               Assertion.AssertEquals ("test#10", 11, time.Hour);
+                               AssertEquals ("test#07", 1999, time.Year);
+                               AssertEquals ("test#08", 12, time.Month);
+                               AssertEquals ("test#09", 31, time.Day);
+                               AssertEquals ("test#10", 11, time.Hour);
                                
                                info.CreationTimeUtc = new DateTime (1999, 12, 31, 11, 59, 59);
                                
                                time = TimeZone.CurrentTimeZone.ToUniversalTime (info.CreationTime);                            
-                               Assertion.AssertEquals ("test#13", 1999, time.Year);
-                               Assertion.AssertEquals ("test#14", 12, time.Month);
-                               Assertion.AssertEquals ("test#15", 31, time.Day);
+                               AssertEquals ("test#13", 1999, time.Year);
+                               AssertEquals ("test#14", 12, time.Month);
+                               AssertEquals ("test#15", 31, time.Day);
                                
                                time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);     
-                               Assertion.AssertEquals ("test#19", 1999, time.Year);
-                               Assertion.AssertEquals ("test#20", 12, time.Month);
-                               Assertion.AssertEquals ("test#21", 31, time.Day);
+                               AssertEquals ("test#19", 1999, time.Year);
+                               AssertEquals ("test#20", 12, time.Month);
+                               AssertEquals ("test#21", 31, time.Day);
                                
                        } finally {
                                DeleteDir (path);
@@ -133,32 +164,32 @@ namespace MonoTests.System.IO
                [Test]
                public void CreationTimeNoFileOrDirectory ()
                {
-                       string path = "resources/FSIT.CreationTimeNoFile.Test";
+                       string path = TempFolder + DSC + "FSIT.CreationTimeNoFile.Test";
                        DeleteFile (path);
                        DeleteDir (path);
                        
                        try {
                                FileSystemInfo info = new FileInfo (path);
                                
-                               DateTime time = info.CreationTime;
-                               Assertion.AssertEquals ("test#01", 1601, time.Year);
-                               Assertion.AssertEquals ("test#02", 1, time.Month);
-                               Assertion.AssertEquals ("test#03", 1, time.Day);
-                               Assertion.AssertEquals ("test#04", 2, time.Hour);
-                               Assertion.AssertEquals ("test#05", 0, time.Minute);
-                               Assertion.AssertEquals ("test#06", 0, time.Second);
-                               Assertion.AssertEquals ("test#07", 0, time.Millisecond);
+                               DateTime time = TimeZone.CurrentTimeZone.ToUniversalTime(info.CreationTime);
+                               AssertEquals ("test#01", 1601, time.Year);
+                               AssertEquals ("test#02", 1, time.Month);
+                               AssertEquals ("test#03", 1, time.Day);
+                               AssertEquals ("test#04", 0, time.Hour);
+                               AssertEquals ("test#05", 0, time.Minute);
+                               AssertEquals ("test#06", 0, time.Second);
+                               AssertEquals ("test#07", 0, time.Millisecond);
                                
                                info = new DirectoryInfo (path);
                                
-                               time = info.CreationTime;
-                               Assertion.AssertEquals ("test#08", 1601, time.Year);
-                               Assertion.AssertEquals ("test#09", 1, time.Month);
-                               Assertion.AssertEquals ("test#10", 1, time.Day);
-                               Assertion.AssertEquals ("test#11", 2, time.Hour);
-                               Assertion.AssertEquals ("test#12", 0, time.Minute);
-                               Assertion.AssertEquals ("test#13", 0, time.Second);
-                               Assertion.AssertEquals ("test#14", 0, time.Millisecond);
+                               time = TimeZone.CurrentTimeZone.ToUniversalTime(info.CreationTime);
+                               AssertEquals ("test#08", 1601, time.Year);
+                               AssertEquals ("test#09", 1, time.Month);
+                               AssertEquals ("test#10", 1, time.Day);
+                               AssertEquals ("test#11", 0, time.Hour);
+                               AssertEquals ("test#12", 0, time.Minute);
+                               AssertEquals ("test#13", 0, time.Second);
+                               AssertEquals ("test#14", 0, time.Millisecond);
                        } finally {
                                DeleteFile (path);
                                DeleteDir (path);
@@ -168,12 +199,12 @@ namespace MonoTests.System.IO
                [Test]
                public void Extenssion ()
                {
-                       string path = "resources/FSIT.Extenssion.Test";
+                       string path = TempFolder + DSC + "FSIT.Extenssion.Test";
                        DeleteFile (path);
                        
                        try {
                                FileSystemInfo info = new FileInfo (path);
-                               Assertion.AssertEquals ("test#01", ".Test", info.Extension);
+                               AssertEquals ("test#01", ".Test", info.Extension);
                        } finally {
                                DeleteFile (path);
                        }
@@ -182,21 +213,21 @@ namespace MonoTests.System.IO
                [Test]
                public void DefaultLastAccessTime ()
                {
-                       string path = "resources/FSIT.DefaultLastAccessTime.Test";
+                       string path = TempFolder + DSC + "FSIT.DefaultLastAccessTime.Test";
                        DeleteFile (path);
                        
                        try {
                                
                                FileSystemInfo info = new FileInfo (path);
-                               DateTime time = info.LastAccessTime;
+                               DateTime time = TimeZone.CurrentTimeZone.ToUniversalTime(info.LastAccessTime);
 
-                               Assertion.AssertEquals ("test#01", 1601, time.Year);
-                               Assertion.AssertEquals ("test#02", 1, time.Month);
-                               Assertion.AssertEquals ("test#03", 1, time.Day);
-                               Assertion.AssertEquals ("test#04", 2, time.Hour);
-                               Assertion.AssertEquals ("test#05", 0, time.Minute);
-                               Assertion.AssertEquals ("test#06", 0, time.Second);
-                               Assertion.AssertEquals ("test#07", 0, time.Millisecond);
+                               AssertEquals ("test#01", 1601, time.Year);
+                               AssertEquals ("test#02", 1, time.Month);
+                               AssertEquals ("test#03", 1, time.Day);
+                               AssertEquals ("test#04", 0, time.Hour);
+                               AssertEquals ("test#05", 0, time.Minute);
+                               AssertEquals ("test#06", 0, time.Second);
+                               AssertEquals ("test#07", 0, time.Millisecond);
                        } finally {
                                DeleteFile (path);
                        }
@@ -205,7 +236,7 @@ namespace MonoTests.System.IO
                [Test]
                public void LastAccessTime ()
                {
-                       string path = "resources/FSIT.LastAccessTime.Test";
+                       string path = TempFolder + DSC + "FSIT.LastAccessTime.Test";
                        DeleteFile (path);
 
                        try {
@@ -216,30 +247,29 @@ namespace MonoTests.System.IO
                                
                                info.LastAccessTime = new DateTime (2000, 1, 1, 1, 1, 1);
                                time = info.LastAccessTime;
-                               Assertion.AssertEquals ("test#01", 2000, time.Year);
-                               Assertion.AssertEquals ("test#02", 1, time.Month);
-                               Assertion.AssertEquals ("test#03", 1, time.Day);
-                               Assertion.AssertEquals ("test#04", 1, time.Hour);
+                               AssertEquals ("test#01", 2000, time.Year);
+                               AssertEquals ("test#02", 1, time.Month);
+                               AssertEquals ("test#03", 1, time.Day);
+                               AssertEquals ("test#04", 1, time.Hour);
                                
                                time = TimeZone.CurrentTimeZone.ToLocalTime (info.LastAccessTimeUtc);
-                               Assertion.AssertEquals ("test#05", 2000, time.Year);
-                               Assertion.AssertEquals ("test#06", 1, time.Month);
-                               Assertion.AssertEquals ("test#07", 1, time.Day);
-                               Assertion.AssertEquals ("test#08", 1, time.Hour);
+                               AssertEquals ("test#05", 2000, time.Year);
+                               AssertEquals ("test#06", 1, time.Month);
+                               AssertEquals ("test#07", 1, time.Day);
+                               AssertEquals ("test#08", 1, time.Hour);
                                
                                info.LastAccessTimeUtc = new DateTime (2000, 1, 1, 1, 1, 1);
                                time = TimeZone.CurrentTimeZone.ToUniversalTime (info.LastAccessTime);
-                               Assertion.AssertEquals ("test#09", 2000, time.Year);
-                               Assertion.AssertEquals ("test#10", 1, time.Month);
-                               Assertion.AssertEquals ("test#11", 1, time.Day);
-                               Assertion.AssertEquals ("test#12", 1, time.Hour);
+                               AssertEquals ("test#09", 2000, time.Year);
+                               AssertEquals ("test#10", 1, time.Month);
+                               AssertEquals ("test#11", 1, time.Day);
+                               AssertEquals ("test#12", 1, time.Hour);
 
                                time = info.LastAccessTimeUtc;
-                               Assertion.AssertEquals ("test#13", 2000, time.Year);
-                               Assertion.AssertEquals ("test#14", 1, time.Month);
-                               Assertion.AssertEquals ("test#15", 1, time.Day);
-                               Assertion.AssertEquals ("test#16", 1, time.Hour);
-                               
+                               AssertEquals ("test#13", 2000, time.Year);
+                               AssertEquals ("test#14", 1, time.Month);
+                               AssertEquals ("test#15", 1, time.Day);
+                               AssertEquals ("test#16", 1, time.Hour);                         
                                
                        } finally {
                                DeleteFile (path);
@@ -249,21 +279,21 @@ namespace MonoTests.System.IO
                [Test]
                public void DefaultLastWriteTime ()
                {
-                       string path = "resources/FSIT.DefaultLastWriteTime.Test";
+                       string path = TempFolder + DSC + "FSIT.DefaultLastWriteTime.Test";
                        DeleteDir (path);
 
                        try {
 
                                FileSystemInfo info = new DirectoryInfo (path);
-                               DateTime time = info.LastAccessTime;
+                               DateTime time = TimeZone.CurrentTimeZone.ToUniversalTime(info.LastWriteTime);
                                
-                               Assertion.AssertEquals ("test#01", 1601, time.Year);
-                               Assertion.AssertEquals ("test#02", 1, time.Month);
-                               Assertion.AssertEquals ("test#03", 1, time.Day);
-                               Assertion.AssertEquals ("test#04", 2, time.Hour);
-                               Assertion.AssertEquals ("test#05", 0, time.Minute);
-                               Assertion.AssertEquals ("test#06", 0, time.Second);
-                               Assertion.AssertEquals ("test#07", 0, time.Millisecond);
+                               AssertEquals ("test#01", 1601, time.Year);
+                               AssertEquals ("test#02", 1, time.Month);
+                               AssertEquals ("test#03", 1, time.Day);
+                               AssertEquals ("test#04", 0, time.Hour);
+                               AssertEquals ("test#05", 0, time.Minute);
+                               AssertEquals ("test#06", 0, time.Second);
+                               AssertEquals ("test#07", 0, time.Millisecond);
                        } finally {
                                DeleteDir (path);
                        }
@@ -272,7 +302,7 @@ namespace MonoTests.System.IO
                [Test]
                public void LastWriteTime ()
                {
-                       string path = "resources/FSIT.LastWriteTime.Test";
+                       string path = TempFolder + DSC + "FSIT.LastWriteTime.Test";
                        DeleteDir (path);
                        
                        try {
@@ -281,29 +311,29 @@ namespace MonoTests.System.IO
                                info.LastWriteTime = new DateTime (2000, 1, 1, 1, 1, 1);
                                DateTime time = info.LastWriteTime;
                                
-                               Assertion.AssertEquals ("test#01", 2000, time.Year);
-                               Assertion.AssertEquals ("test#02", 1, time.Month);
-                               Assertion.AssertEquals ("test#03", 1, time.Day);
-                               Assertion.AssertEquals ("test#04", 1, time.Hour);
-                               
-                               time = TimeZone.CurrentTimeZone.ToLocalTime (info.LastWriteTimeUtc);
-                               Assertion.AssertEquals ("test#05", 2000, time.Year);
-                               Assertion.AssertEquals ("test#06", 1, time.Month);
-                               Assertion.AssertEquals ("test#07", 1, time.Day);
-                               Assertion.AssertEquals ("test#08", 1, time.Hour);
+                               AssertEquals ("test#01", 2000, time.Year);
+                               AssertEquals ("test#02", 1, time.Month);
+                               AssertEquals ("test#03", 1, time.Day);
+                               AssertEquals ("test#04", 1, time.Hour);
                                
-                               info.LastWriteTimeUtc = new DateTime (2000, 1, 1, 1, 1, 1);
-                               time = TimeZone.CurrentTimeZone.ToUniversalTime (info.LastWriteTime);
-                               Assertion.AssertEquals ("test#09", 2000, time.Year);
-                               Assertion.AssertEquals ("test#10", 1, time.Month);
-                               Assertion.AssertEquals ("test#11", 1, time.Day);
-                               Assertion.AssertEquals ("test#12", 1, time.Hour);
+                               time = info.LastWriteTimeUtc.ToLocalTime ();
+                               AssertEquals ("test#05", 2000, time.Year);
+                               AssertEquals ("test#06", 1, time.Month);
+                               AssertEquals ("test#07", 1, time.Day);
+                               AssertEquals ("test#08", 1, time.Hour);
 
+                               info.LastWriteTimeUtc = new DateTime (2000, 1, 1, 1, 1, 1);
                                time = info.LastWriteTimeUtc;
-                               Assertion.AssertEquals ("test#13", 2000, time.Year);
-                               Assertion.AssertEquals ("test#14", 1, time.Month);
-                               Assertion.AssertEquals ("test#15", 1, time.Day);
-                               Assertion.AssertEquals ("test#16", 1, time.Hour);
+                               AssertEquals ("test#09", 2000, time.Year);
+                               AssertEquals ("test#10", 1, time.Month);
+                               AssertEquals ("test#11", 1, time.Day);
+                               AssertEquals ("test#12", 1, time.Hour);
+
+                               time = info.LastWriteTime.ToUniversalTime ();
+                               AssertEquals ("test#13", 2000, time.Year);
+                               AssertEquals ("test#14", 1, time.Month);
+                               AssertEquals ("test#15", 1, time.Day);
+                               AssertEquals ("test#16", 1, time.Hour);
 
                        } finally {
                                DeleteDir (path);