提交 e32e14e9 编写于 作者: M Marcos Henrich

[corlib] Tests TimeZoneInfo.ConvertTimeFromUtc.

Tests that TimeZoneInfo.ConvertTimeFromUtc with TimeZoneInfo.Local set to
TimeZoneInfo.Utc returns a date of kind Local.

Covers #334711.
上级 82459777
......@@ -39,6 +39,17 @@ namespace MonoTests.System
{
public class TimeZoneInfoTest
{
static FieldInfo localField;
public static void SetLocal (TimeZoneInfo val)
{
if (localField == null)
localField = typeof (TimeZoneInfo).GetField ("local",
BindingFlags.Static | BindingFlags.GetField | BindingFlags.NonPublic);
localField.SetValue (null, val);
}
[TestFixture]
public class PropertiesTests
{
......@@ -466,16 +477,47 @@ namespace MonoTests.System
Assert.AreEqual (res.Kind, DateTimeKind.Utc, "#2");
}
[Test]
public void ConvertFromToUtc_Utc ()
{
DateTime utc = DateTime.UtcNow;
Assert.AreEqual (utc.Kind, DateTimeKind.Utc);
DateTime converted = TimeZoneInfo.ConvertTimeFromUtc (utc, TimeZoneInfo.Utc);
Assert.AreEqual (DateTimeKind.Utc, converted.Kind);
DateTime back = TimeZoneInfo.ConvertTimeToUtc (converted, TimeZoneInfo.Utc);
Assert.AreEqual (back.Kind, DateTimeKind.Utc);
Assert.AreEqual (utc, back);
}
[Test]
public void ConvertFromToUtc_LocalAsUtc ()
{
var oldLocal = TimeZoneInfo.Local;
TimeZoneInfoTest.SetLocal (TimeZoneInfo.Utc);
try {
DateTime utc = DateTime.UtcNow;
Assert.AreEqual (utc.Kind, DateTimeKind.Utc);
DateTime converted = TimeZoneInfo.ConvertTimeFromUtc (utc, TimeZoneInfo.Local);
Assert.AreEqual (DateTimeKind.Local, converted.Kind);
DateTime back = TimeZoneInfo.ConvertTimeToUtc (converted, TimeZoneInfo.Local);
Assert.AreEqual (back.Kind, DateTimeKind.Utc);
Assert.AreEqual (utc, back);
} finally {
TimeZoneInfoTest.SetLocal (oldLocal);
}
}
[Test]
public void ConvertFromToLocal ()
{
DateTime utc = DateTime.UtcNow;
Assert.AreEqual(utc.Kind, DateTimeKind.Utc);
DateTime converted = TimeZoneInfo.ConvertTimeFromUtc(utc, TimeZoneInfo.Local);
Assert.AreEqual(DateTimeKind.Local, converted.Kind);
DateTime back = TimeZoneInfo.ConvertTimeToUtc(converted, TimeZoneInfo.Local);
Assert.AreEqual(back.Kind, DateTimeKind.Utc);
Assert.AreEqual(utc, back);
Assert.AreEqual (utc.Kind, DateTimeKind.Utc);
DateTime converted = TimeZoneInfo.ConvertTimeFromUtc (utc, TimeZoneInfo.Local);
Assert.AreEqual (DateTimeKind.Local, converted.Kind);
DateTime back = TimeZoneInfo.ConvertTimeToUtc (converted, TimeZoneInfo.Local);
Assert.AreEqual (back.Kind, DateTimeKind.Utc);
Assert.AreEqual (utc, back);
}
[Test]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册