From b04b594c3898877dbb25d573afb9a1f8e6189484 Mon Sep 17 00:00:00 2001 From: Matt Johnson Date: Sat, 5 Apr 2014 20:15:34 -0400 Subject: [PATCH] Add failing test for deserializing DateTimeOffset Causes an InvalidCastException in the IsoDateTimeConverter --- .../Converters/IsoDateTimeConverterTests.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Src/Newtonsoft.Json.Tests/Converters/IsoDateTimeConverterTests.cs b/Src/Newtonsoft.Json.Tests/Converters/IsoDateTimeConverterTests.cs index 47f611f4..937ee426 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/IsoDateTimeConverterTests.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/IsoDateTimeConverterTests.cs @@ -274,5 +274,23 @@ namespace Newtonsoft.Json.Tests.Converters Console.WriteLine(jsonText); } + + [Test] + public void DeserializeDateTimeOffset() + { + var settings = new JsonSerializerSettings(); + settings.DateParseHandling = DateParseHandling.DateTimeOffset; + settings.Converters.Add(new IsoDateTimeConverter()); + + // Intentionally use an offset that is unlikely in the real world, + // so the test will be accurate regardless of the local time zone setting. + var offset = new TimeSpan(2, 15, 0); + var dto = new DateTimeOffset(2014, 1, 1, 0, 0, 0, 0, offset); + + var test = JsonConvert.DeserializeObject("\"2014-01-01T00:00:00+02:15\"", settings); + + Assert.AreEqual(dto, test); + Assert.AreEqual(dto.ToString("o"), test.ToString("o")); + } } } \ No newline at end of file