[System]: System.TimeZoneInfo - implemented GetUtcOffset with DateTimeOffset
authorkchernyavskiy <none@none.non>
Fri, 19 Feb 2016 17:03:15 +0000 (21:03 +0400)
committerkchernyavskiy <none@none.non>
Fri, 19 Feb 2016 17:03:15 +0000 (21:03 +0400)
mcs/class/corlib/System/TimeZoneInfo.cs
mcs/class/corlib/Test/System/TimeZoneInfoTest.cs

index 6c58234d892289e057d42de6fb13da888b6fc681..81675b16232b327fa9b2cd836eda14b6441f616e 100644 (file)
@@ -736,7 +736,8 @@ namespace System
 
                public TimeSpan GetUtcOffset (DateTimeOffset dateTimeOffset)
                {
-                       throw new NotImplementedException ();
+                       bool isDST;
+                       return GetUtcOffset (dateTimeOffset.UtcDateTime, out isDST);
                }
 
                private TimeSpan GetUtcOffset (DateTime dateTime, out bool isDST)
index e8990a6013944c01356c76d5fcc2148302a5920c..3bb464fe83d588485c10b81541e2bf52236748a8 100644 (file)
@@ -1121,7 +1121,33 @@ namespace MonoTests.System
                                Assert.AreEqual(baseUtcOffset, cairo.GetUtcOffset (d));
                                Assert.AreEqual(baseUtcOffset, cairo.GetUtcOffset (d.Add (new TimeSpan(0,0,0, 1))));
                        }
-               }
+
+                 [Test]
+                 public void  GetUtcOffset_FromDateTimeOffset ()
+                 {
+                         DateTimeOffset offset;
+
+                         offset = new DateTimeOffset(dst1Start, baseUtcOffset);
+                         Assert.AreEqual(baseUtcOffset, cairo.GetUtcOffset(offset.Add(new TimeSpan(0, 0, 0, -1))), "dst1Start_with_baseUtcOffset#before");
+                         Assert.AreEqual(dstUtcOffset, cairo.GetUtcOffset(offset), "dst1Start_with_baseUtcOffset#exact");
+                         Assert.AreEqual(dstUtcOffset, cairo.GetUtcOffset(offset.Add(new TimeSpan(0, 0, 0, 1))), "dst1Start_with_baseUtcOffset#after");
+
+                         offset = new DateTimeOffset(dst1End, dstOffset + baseUtcOffset);
+                         Assert.AreEqual(dstUtcOffset, cairo.GetUtcOffset(offset.Add(new TimeSpan(0, 0, 0, -1))), "dst1End_with_dstOffset+baseUtcOffset#before");
+                         Assert.AreEqual(baseUtcOffset, cairo.GetUtcOffset(offset), "dst1End_with_dstOffset+baseUtcOffset#exact");
+                         Assert.AreEqual(baseUtcOffset, cairo.GetUtcOffset(offset.Add(new TimeSpan(0, 0, 0, 1))), "dst1End_with_dstOffset+baseUtcOffset#after");
+
+                         offset = new DateTimeOffset(dst2Start, baseUtcOffset);
+                         Assert.AreEqual(baseUtcOffset, cairo.GetUtcOffset(offset.Add(new TimeSpan(0, 0, 0, -1))), "dst2Start_with_baseUtcOffset#before");
+                         Assert.AreEqual(dstUtcOffset, cairo.GetUtcOffset(offset), "dst2Start_with_baseUtcOffset#exact");
+                         Assert.AreEqual(dstUtcOffset, cairo.GetUtcOffset(offset.Add(new TimeSpan(0, 0, 0, 1))), "dst2Start_with_baseUtcOffset#after");
+
+                         offset = new DateTimeOffset(dst2End, baseUtcOffset + dstOffset);
+                         Assert.AreEqual(dstUtcOffset, cairo.GetUtcOffset(offset.Add(new TimeSpan(0, 0, 0, -1))), "dst2End_with_dstOffset+baseUtcOffset#before");
+                         Assert.AreEqual(baseUtcOffset, cairo.GetUtcOffset(offset), "dst2End_with_dstOffset+baseUtcOffset#exact");
+                         Assert.AreEqual(baseUtcOffset, cairo.GetUtcOffset(offset.Add(new TimeSpan(0, 0, 0, 1))), "dst2End_with_dstOffset+baseUtcOffset#after");
+                 }
+    }
 
                [TestFixture]
                public class GetDaylightChanges