You've already forked linux-packaging-mono
Imported Upstream version 5.2.0.175
Former-commit-id: bb0468d0f257ff100aa895eb5fe583fb5dfbf900
This commit is contained in:
parent
4bdbaf4a88
commit
966bba02bb
@ -14,6 +14,7 @@ using System;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
|
||||
namespace MonoTests.System {
|
||||
@ -270,6 +271,47 @@ public class TimeZoneTest {
|
||||
Assert.IsTrue (tz.ToLocalTime (dst_start_utc.Add (new TimeSpan (1, 0, 0))) < tz.ToLocalTime (dst_start_utc.Add (new TimeSpan (1, 1, 0))), "0:4:00 < 0:4:01");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetUTCNowAtDSTBoundaries ()
|
||||
{
|
||||
TimeZoneInfo.TransitionTime startTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 2, 0, 0), 3, 5, DayOfWeek.Sunday);
|
||||
|
||||
TimeZoneInfo.TransitionTime endTransition = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 3, 0, 0), 10, 5, DayOfWeek.Sunday);
|
||||
|
||||
TimeSpan delta = TimeSpan.FromMinutes(60.0);
|
||||
TimeZoneInfo.AdjustmentRule adjustment = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule(new DateTime(1970, 1, 1), DateTime.MaxValue.Date, delta, startTransition, endTransition);
|
||||
TimeZoneInfo.TransitionTime startTrans = adjustment.DaylightTransitionStart;
|
||||
TimeZoneInfo.TransitionTime endTrans = adjustment.DaylightTransitionEnd;
|
||||
TimeZoneInfo.AdjustmentRule[] adjustments = { adjustment };
|
||||
|
||||
TimeZoneInfo tzInfo = TimeZoneInfo.CreateCustomTimeZone("MY Standard Time", TimeSpan.Zero, "MST", "MST", "MDT", adjustments);
|
||||
|
||||
// There is no .NET API to set timezone. Use reflection to assign time zone to the TimeZoneInfo.local field.
|
||||
FieldInfo localTimeZone = typeof(TimeZoneInfo).GetField("local", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
|
||||
localTimeZone.SetValue(null, tzInfo);
|
||||
|
||||
DateTime st = new DateTime(2016, 3, 27, 1, 0, 0, DateTimeKind.Local);
|
||||
Assert.IsTrue (!tzInfo.IsDaylightSavingTime(st));
|
||||
Assert.IsTrue (!tzInfo.IsAmbiguousTime(st));
|
||||
Assert.IsTrue ((TimeZoneInfo.ConvertTimeToUtc(st).Hour == 1));
|
||||
st = new DateTime(2016, 3, 27, 3, 0, 0, DateTimeKind.Local);
|
||||
Assert.IsTrue (tzInfo.IsDaylightSavingTime(st));
|
||||
Assert.IsTrue (!tzInfo.IsAmbiguousTime(st));
|
||||
Assert.IsTrue ((TimeZoneInfo.ConvertTimeToUtc(st).Hour == 2));
|
||||
st = new DateTime(2016, 10, 30, 2, 0, 0, DateTimeKind.Local);
|
||||
Assert.IsTrue (tzInfo.IsDaylightSavingTime(st));
|
||||
Assert.IsTrue (!tzInfo.IsAmbiguousTime(st));
|
||||
Assert.IsTrue ((TimeZoneInfo.ConvertTimeToUtc(st).Hour == 1));
|
||||
st = new DateTime(2016, 10, 30, 3, 0, 0, DateTimeKind.Local);
|
||||
Assert.IsTrue (!tzInfo.IsDaylightSavingTime(st));
|
||||
Assert.IsTrue (tzInfo.IsAmbiguousTime(st));
|
||||
Assert.IsTrue ((TimeZoneInfo.ConvertTimeToUtc(st).Hour == 3));
|
||||
st = new DateTime(2016, 10, 30, 4, 0, 0, DateTimeKind.Local);
|
||||
Assert.IsTrue (!tzInfo.IsDaylightSavingTime(st));
|
||||
Assert.IsTrue (!tzInfo.IsAmbiguousTime(st));
|
||||
Assert.IsTrue ((TimeZoneInfo.ConvertTimeToUtc(st).Hour == 4));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetUtcOffsetAtDSTBoundary ()
|
||||
{
|
||||
@ -302,11 +344,12 @@ public class TimeZoneTest {
|
||||
Assert.Ignore (tz.StandardName + " did not observe daylight saving time during " + year + ".");
|
||||
|
||||
var standardOffset = tz.GetUtcOffset(daylightChanges.Start.AddMinutes(-1));
|
||||
var dstOffset = tz.GetUtcOffset(daylightChanges.Start.AddMinutes(61));
|
||||
|
||||
Assert.AreEqual(standardOffset, tz.GetUtcOffset (dst_end));
|
||||
Assert.AreEqual(standardOffset, tz.GetUtcOffset (dst_end.Add (daylightChanges.Delta.Negate ().Add (TimeSpan.FromSeconds(1)))));
|
||||
Assert.AreEqual(standardOffset, tz.GetUtcOffset (dst_end.Add(daylightChanges.Delta.Negate ())));
|
||||
Assert.AreNotEqual(standardOffset, tz.GetUtcOffset (dst_end.Add(daylightChanges.Delta.Negate ().Add (TimeSpan.FromSeconds(-1)))));
|
||||
Assert.AreEqual(dstOffset, tz.GetUtcOffset (dst_end.Add (daylightChanges.Delta.Negate ().Add (TimeSpan.FromSeconds(1)))));
|
||||
Assert.AreEqual(dstOffset, tz.GetUtcOffset (dst_end.Add(daylightChanges.Delta.Negate ())));
|
||||
Assert.AreEqual(dstOffset, tz.GetUtcOffset (dst_end.Add(daylightChanges.Delta.Negate ().Add (TimeSpan.FromSeconds(-1)))));
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user