3c1f479b9d
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
141 lines
4.5 KiB
C#
141 lines
4.5 KiB
C#
|
|
using System;
|
|
using System.IO;
|
|
using System.Runtime.Serialization.Formatters.Binary;
|
|
using NUnit.Framework;
|
|
|
|
namespace MonoTests.System
|
|
{
|
|
public class TimeZoneInfo_TransitionTimeTest
|
|
{
|
|
[TestFixture]
|
|
public class CreateFixedDateRuleExceptions
|
|
{
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentException))]
|
|
public void DateHasNonDefaultComponent ()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1, 1, 10, 2, 0, 0), 3, 15);
|
|
}
|
|
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentException))]
|
|
public void KindNotUnspecified()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1, 1, 1, 2, 0, 0, DateTimeKind.Utc), 3, 15);
|
|
}
|
|
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentException))]
|
|
public void DateNotInMilliSeconds ()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (50), 3, 15);
|
|
}
|
|
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentOutOfRangeException))]
|
|
public void MonthOutOfRange ()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1, 1, 1, 2, 0, 0), 13, 15);
|
|
}
|
|
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentOutOfRangeException))]
|
|
public void DayOutOfRange ()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1, 1, 1, 2, 0, 0), 3, -2);
|
|
}
|
|
}
|
|
|
|
[TestFixture]
|
|
public class CreateFloatingDateRuleExceptions
|
|
{
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentException))]
|
|
public void DateHasNonDefaultComponent ()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1, 1, 10, 2, 0, 0), 3, 4, DayOfWeek.Sunday);
|
|
}
|
|
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentException))]
|
|
public void KindNotUnspecified()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1, 1, 1, 2, 0, 0, DateTimeKind.Utc), 3, 4, DayOfWeek.Sunday);
|
|
}
|
|
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentException))]
|
|
public void DateNotInSeconds ()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (50), 3, 4, DayOfWeek.Sunday);
|
|
}
|
|
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentOutOfRangeException))]
|
|
public void MonthOutOfRange ()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1, 1, 1, 2, 0, 0), 13, 4, DayOfWeek.Sunday);
|
|
}
|
|
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentOutOfRangeException))]
|
|
public void WeekOutOfRange ()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1, 1, 1, 2, 0, 0), 3, -2, DayOfWeek.Sunday);
|
|
}
|
|
|
|
[Test]
|
|
[ExpectedException (typeof (ArgumentOutOfRangeException))]
|
|
public void DayOfWeekOutOfRange ()
|
|
{
|
|
TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1, 1, 1, 2, 0, 0), 3, 4, (DayOfWeek)12);
|
|
}
|
|
}
|
|
|
|
[TestFixture]
|
|
public class NonExceptional {
|
|
|
|
[Test]
|
|
public void EqualsObject ()
|
|
{
|
|
DateTime dt = new DateTime (1, 1, 1, 2, 0, 0, DateTimeKind.Unspecified);
|
|
TimeZoneInfo.TransitionTime tt1 = TimeZoneInfo.TransitionTime.CreateFixedDateRule (dt, 1, 21);
|
|
Assert.IsFalse (tt1.Equals (null), "null"); // found using Gendarme :)
|
|
Assert.IsTrue (tt1.Equals (tt1), "self");
|
|
TimeZoneInfo.TransitionTime tt2 = TimeZoneInfo.TransitionTime.CreateFixedDateRule (dt, 2, 12);
|
|
Assert.IsFalse (tt2.Equals (tt1), "1!=2");
|
|
Assert.IsFalse (tt1.Equals (tt2), "2!=1");
|
|
}
|
|
|
|
[Test]
|
|
public void Serialize_Deserialize_FloatingDateRule ()
|
|
{
|
|
TimeZoneInfo.TransitionTime floatingDateRule = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 1, 0, 0), 3, 5, DayOfWeek.Sunday);
|
|
MemoryStream stream = new MemoryStream ();
|
|
BinaryFormatter formatter = new BinaryFormatter ();
|
|
formatter.Serialize (stream, floatingDateRule);
|
|
stream.Position = 0;
|
|
TimeZoneInfo.TransitionTime deserialized = (TimeZoneInfo.TransitionTime) formatter.Deserialize (stream);
|
|
stream.Close ();
|
|
stream.Dispose ();
|
|
Assert.AreEqual (floatingDateRule, deserialized);
|
|
}
|
|
|
|
[Test]
|
|
public void Serialize_Deserialize_FixedDateRule ()
|
|
{
|
|
TimeZoneInfo.TransitionTime fixedDateRule = TimeZoneInfo.TransitionTime.CreateFixedDateRule(new DateTime(1, 1, 1, 1, 0, 0), 3, 12);
|
|
MemoryStream stream = new MemoryStream ();
|
|
BinaryFormatter formatter = new BinaryFormatter ();
|
|
formatter.Serialize (stream, fixedDateRule);
|
|
stream.Position = 0;
|
|
TimeZoneInfo.TransitionTime deserialized = (TimeZoneInfo.TransitionTime) formatter.Deserialize (stream);
|
|
stream.Close ();
|
|
stream.Dispose ();
|
|
Assert.AreEqual (fixedDateRule, deserialized);
|
|
}
|
|
}
|
|
}
|
|
}
|