// (C) 2003 Ville Palo
//
-using NUnit.Framework;
using System;
-using System.IO;
using System.Globalization;
+using System.IO;
+using System.Runtime.Serialization;
+using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;
+using NUnit.Framework;
namespace MonoTests.System.IO
{
-
[TestFixture]
- public class FileSystemInfoTest
+ public class FileSystemInfoTest
{
-
- public FileSystemInfoTest() {}
+ CultureInfo old_culture;
+ string TempFolder = Path.Combine (Path.GetTempPath (), "MonoTests.System.IO.Tests");
+ static readonly char DSC = Path.DirectorySeparatorChar;
[SetUp]
- protected void SetUp()
+ public void SetUp()
{
- Thread.CurrentThread.CurrentCulture = new CultureInfo ("EN-us");
+ if (Directory.Exists (TempFolder))
+ Directory.Delete (TempFolder, true);
+ Directory.CreateDirectory (TempFolder);
+ old_culture = Thread.CurrentThread.CurrentCulture;
+ Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US", false);
}
[TearDown]
- protected void TearDown() {}
+ public void TearDown()
+ {
+ if (Directory.Exists (TempFolder))
+ Directory.Delete (TempFolder, true);
+ Thread.CurrentThread.CurrentCulture = old_culture;
+ }
+
+ bool Windows {
+ get {
+ return Path.DirectorySeparatorChar == '\\';
+ }
+ }
+
+ bool Unix {
+ get {
+ return Path.DirectorySeparatorChar == '/';
+ }
+ }
+
+ bool Mac {
+ get {
+ return Path.DirectorySeparatorChar == ':';
+ }
+ }
private void DeleteFile (string path)
{
}
[Test]
+ [Category("TargetJvmNotSupported")] // CreationTime not supported for TARGET_JVM
public void CreationTimeFile ()
{
- string path = "resources/FSIT.CreationTime.Test";
+ if (Unix)
+ Assert.Ignore ("Unix doesn't support CreationTimes");
+
+ string path = TempFolder + DSC + "FSIT.CreationTime.Test";
DeleteFile (path);
try {
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);
+ DateTime time = info.CreationTime;
+ Assert.AreEqual (1999, time.Year, "#A1");
+ Assert.AreEqual (12, time.Month, "#A2");
+ Assert.AreEqual (31, time.Day, "#A3");
+ Assert.AreEqual (11, time.Hour, "#A4");
+ Assert.AreEqual (59, time.Minute, "#A5");
+ Assert.AreEqual (59, time.Second, "#A6");
- 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);
+ time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);
+ Assert.AreEqual (1999, time.Year, "#B1");
+ Assert.AreEqual (12, time.Month, "#B2");
+ Assert.AreEqual (31, time.Day, "#B3");
+ Assert.AreEqual (11, time.Hour, "#B4");
+ Assert.AreEqual (59, time.Minute, "#B5");
+ Assert.AreEqual (59, time.Second, "#B6");
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);
-
- 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);
+ time = TimeZone.CurrentTimeZone.ToUniversalTime (info.CreationTime);
+ Assert.AreEqual (1999, time.Year, "#C1");
+ Assert.AreEqual (12, time.Month, "#C2");
+ Assert.AreEqual (31, time.Day, "#C3");
+ Assert.AreEqual (11, time.Hour, "#C4");
+ Assert.AreEqual (59, time.Minute, "#C5");
+ Assert.AreEqual (59, time.Second, "#C6");
+ time = info.CreationTimeUtc;
+ Assert.AreEqual (1999, time.Year, "#D1");
+ Assert.AreEqual (12, time.Month, "#D2");
+ Assert.AreEqual (31, time.Day, "#D3");
+ Assert.AreEqual (11, time.Hour, "#D4");
+ Assert.AreEqual (59, time.Minute, "#D5");
+ Assert.AreEqual (59, time.Second, "#D6");
} finally {
DeleteFile (path);
}
}
[Test]
+ [Category("TargetJvmNotSupported")] // CreationTime not supported for TARGET_JVM
public void CreationTimeDirectory ()
{
- string path = "resources/FSIT.CreationTimeDirectory.Test";
+ if (Unix)
+ Assert.Ignore ("Unix doesn't support CreationTimes");
+
+ string path = TempFolder + DSC + "FSIT.CreationTimeDirectory.Test";
DeleteDir (path);
-
- try {
+
+ 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);
+ DateTime time = info.CreationTime;
+
+ Assert.AreEqual (1999, time.Year, "#A1");
+ Assert.AreEqual (12, time.Month, "#A2");
+ Assert.AreEqual (31, time.Day, "#A3");
- 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);
+ time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);
+ Assert.AreEqual (1999, time.Year, "#B1");
+ Assert.AreEqual (12, time.Month, "#B2");
+ Assert.AreEqual (31, time.Day, "#B3");
+ Assert.AreEqual (11, time.Hour, "#B4");
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);
-
- 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);
+ time = TimeZone.CurrentTimeZone.ToUniversalTime (info.CreationTime);
+ Assert.AreEqual (1999, time.Year, "#C1");
+ Assert.AreEqual (12, time.Month, "#C2");
+ Assert.AreEqual (31, time.Day, "#C3");
+ time = TimeZone.CurrentTimeZone.ToLocalTime (info.CreationTimeUtc);
+ Assert.AreEqual (1999, time.Year, "#D1");
+ Assert.AreEqual (12, time.Month, "#D2");
+ Assert.AreEqual (31, time.Day, "#D3");
} finally {
DeleteDir (path);
}
}
[Test]
+ [Category("TargetJvmNotSupported")] // CreationTime not supported for TARGET_JVM
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);
+ Assert.AreEqual (1601, time.Year, "#A1");
+ Assert.AreEqual (1, time.Month, "#A2");
+ Assert.AreEqual (1, time.Day, "#A3");
+ Assert.AreEqual (0, time.Hour, "#A4");
+ Assert.AreEqual (0, time.Minute, "#A5");
+ Assert.AreEqual (0, time.Second, "#A6");
+ Assert.AreEqual (0, time.Millisecond, "#A7");
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);
+ Assert.AreEqual (1601, time.Year, "#B1");
+ Assert.AreEqual (1, time.Month, "#B2");
+ Assert.AreEqual (1, time.Day, "#B3");
+ Assert.AreEqual (0, time.Hour, "#B4");
+ Assert.AreEqual (0, time.Minute, "#B5");
+ Assert.AreEqual (0, time.Second, "#B6");
+ Assert.AreEqual (0, time.Millisecond, "#B7");
} finally {
DeleteFile (path);
DeleteDir (path);
[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);
+ Assert.AreEqual (".Test", info.Extension);
} finally {
DeleteFile (path);
}
}
[Test]
+ [Category("TargetJvmNotSupported")] // LastAccessTime not supported for TARGET_JVM
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;
-
- 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.LastAccessTime);
+
+ Assert.AreEqual (1601, time.Year, "#1");
+ Assert.AreEqual (1, time.Month, "#2");
+ Assert.AreEqual (1, time.Day, "#3");
+ Assert.AreEqual (0, time.Hour, "#4");
+ Assert.AreEqual (0, time.Minute, "#5");
+ Assert.AreEqual (0, time.Second, "#6");
+ Assert.AreEqual (0, time.Millisecond, "#7");
} finally {
DeleteFile (path);
}
}
[Test]
+ [Category("TargetJvmNotSupported")] // LastAccessTime not supported for TARGET_JVM
public void LastAccessTime ()
{
- string path = "resources/FSIT.LastAccessTime.Test";
+ string path = TempFolder + DSC + "FSIT.LastAccessTime.Test";
DeleteFile (path);
try {
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);
+ Assert.AreEqual (2000, time.Year, "#A1");
+ Assert.AreEqual (1, time.Month, "#A2");
+ Assert.AreEqual (1, time.Day, "#A3");
+ Assert.AreEqual (1, time.Hour, "#A4");
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);
+ Assert.AreEqual (2000, time.Year, "#B1");
+ Assert.AreEqual (1, time.Month, "#B2");
+ Assert.AreEqual (1, time.Day, "#B3");
+ Assert.AreEqual (1, time.Hour, "#B4");
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);
+ Assert.AreEqual (2000, time.Year, "#C1");
+ Assert.AreEqual (1, time.Month, "#C2");
+ Assert.AreEqual (1, time.Day, "#C3");
+ Assert.AreEqual (1, time.Hour, "#C4");
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);
-
-
+ Assert.AreEqual (2000, time.Year, "#D1");
+ Assert.AreEqual (1, time.Month, "#D2");
+ Assert.AreEqual (1, time.Day, "#D3");
+ Assert.AreEqual (1, time.Hour, "#D4");
} finally {
DeleteFile (path);
}
}
[Test]
+ [Category("TargetJvmNotSupported")] // LastAccessTime not supported for TARGET_JVM
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;
-
- 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.LastWriteTime);
+
+ Assert.AreEqual (1601, time.Year, "#1");
+ Assert.AreEqual (1, time.Month, "#2");
+ Assert.AreEqual (1, time.Day, "#3");
+ Assert.AreEqual (0, time.Hour, "#4");
+ Assert.AreEqual (0, time.Minute, "#5");
+ Assert.AreEqual (0, time.Second, "#6");
+ Assert.AreEqual (0, time.Millisecond, "#7");
} finally {
DeleteDir (path);
}
[Test]
public void LastWriteTime ()
{
- string path = "resources/FSIT.LastWriteTime.Test";
+ string path = TempFolder + DSC + "FSIT.LastWriteTime.Test";
DeleteDir (path);
try {
info.LastWriteTime = new DateTime (2000, 1, 1, 1, 1, 1);
DateTime time = info.LastWriteTime;
+
+ Assert.AreEqual (2000, time.Year, "#A1");
+ Assert.AreEqual (1, time.Month, "#A2");
+ Assert.AreEqual (1, time.Day, "#A3");
+ Assert.AreEqual (1, time.Hour, "#A4");
- 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);
-
- 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 ();
+ Assert.AreEqual (2000, time.Year, "#B1");
+ Assert.AreEqual (1, time.Month, "#B2");
+ Assert.AreEqual (1, time.Day, "#B3");
+ Assert.AreEqual (1, time.Hour, "#B4");
+ 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);
+ Assert.AreEqual (2000, time.Year, "#C1");
+ Assert.AreEqual (1, time.Month, "#C2");
+ Assert.AreEqual (1, time.Day, "#C3");
+ Assert.AreEqual (1, time.Hour, "#C4");
+
+ time = info.LastWriteTime.ToUniversalTime ();
+ Assert.AreEqual (2000, time.Year, "#D1");
+ Assert.AreEqual (1, time.Month, "#D2");
+ Assert.AreEqual (1, time.Day, "#D3");
+ Assert.AreEqual (1, time.Hour, "#D4");
+ } finally {
+ DeleteDir (path);
+ }
+ }
+#if !MOBILE
+ [Test]
+ public void Serialization ()
+ {
+ string path = TempFolder + DSC + "FSIT.Serialization.Test";
+ DeleteDir (path);
+
+ try {
+ FileSystemInfo info = Directory.CreateDirectory (path);
+
+ SerializationInfo si = new SerializationInfo (
+ typeof (FileSystemInfo), new FormatterConverter ());
+ info.GetObjectData (si, new StreamingContext ());
+
+ Assert.AreEqual (2, si.MemberCount, "#1");
+ Assert.AreEqual ("FSIT.Serialization.Test", si.GetString ("OriginalPath"), "#2");
+ Assert.AreEqual (path, si.GetString ("FullPath"), "#3");
+ } finally {
+ DeleteDir (path);
+ }
+ }
+
+ [Test]
+ public void Deserialization ()
+ {
+ string path = TempFolder + DSC + "FSIT.Deserialization.Test";
+ DeleteDir (path);
+
+ try {
+ FileSystemInfo info = Directory.CreateDirectory (path);
+
+ MemoryStream ms = new MemoryStream ();
+ BinaryFormatter bf = new BinaryFormatter ();
+ bf.Serialize (ms, info);
+ ms.Position = 0;
+ FileSystemInfo clone = (FileSystemInfo) bf.Deserialize (ms);
+ Assert.AreEqual (clone.FullName, info.FullName);
} finally {
DeleteDir (path);
}
}
+#endif
}
}