public void CanParseDateTimeOffsetWithZuluTimeSpecified(string fractionalPart, int expectedAdditionalTicks)
        {
            var handler = new DefaultDateTimeHandler();

            var s     = string.Format("2016-02-24T02:29:33{0}Z", fractionalPart);
            var value = handler.ParseDateTimeOffset(s);

            var expectedValue = new DateTimeOffset(2016, 2, 24, 2, 29, 33, TimeSpan.FromHours(0)).AddTicks(expectedAdditionalTicks);

            Assert.That(value, Is.EqualTo(expectedValue));
        }
        public void CanParseDateTimeOffsetWithNoOffsetSpecified(string fractionalPart, int expectedAdditionalTicks)
        {
            var handler = new DefaultDateTimeHandler();

            var s     = string.Format("2016-02-24T02:29:33{0}", fractionalPart);
            var value = handler.ParseDateTimeOffset(s);

            var utcOffset     = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
            var expectedValue = new DateTimeOffset(2016, 2, 24, 2, 29, 33, utcOffset).AddTicks(expectedAdditionalTicks);

            Assert.That(value, Is.EqualTo(expectedValue));
        }
        public void CanParseDateTimeWithUnspecifiedKind(string fractionalPart, int expectedAdditionalTicks)
        {
            var handler = new DefaultDateTimeHandler();

            var s     = string.Format("2016-02-24T02:29:33{0}", fractionalPart);
            var value = handler.ParseDateTime(s);

            var expectedValue = new DateTime(2016, 2, 24, 2, 29, 33, DateTimeKind.Unspecified).AddTicks(expectedAdditionalTicks);

            Assert.That(value, Is.EqualTo(expectedValue));
            Assert.That(value.Kind, Is.EqualTo(DateTimeKind.Unspecified));
        }
        public void CannotParseDateOffsetTime(string s)
        {
            var handler = new DefaultDateTimeHandler();

            TestDelegate f = () =>
            {
                try
                {
                    handler.ParseDateTimeOffset(s);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    throw;
                }
            };

            Assert.That(f, Throws.InstanceOf <FormatException>());
        }
        public void CannotParseDateOffsetTime(string s)
        {
            var handler = new DefaultDateTimeHandler();

            TestDelegate f = () =>
            {
                try
                {
                    handler.ParseDateTimeOffset(s);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    throw;
                }
            };

            Assert.That(f, Throws.InstanceOf<FormatException>());
        }
        public void CanParseDateTimeWithUtcKind(string fractionalPart, int expectedAdditionalTicks)
        {
            var handler = new DefaultDateTimeHandler();

            var s = string.Format("2016-02-24T02:29:33{0}Z", fractionalPart);
            var value = handler.ParseDateTime(s);

            var expectedValue = new DateTime(2016, 2, 24, 2, 29, 33, DateTimeKind.Utc).AddTicks(expectedAdditionalTicks);

            Assert.That(value, Is.EqualTo(expectedValue));
            Assert.That(value.Kind, Is.EqualTo(DateTimeKind.Utc));
        }
        public void CanParseDateTimeOffsetWithZuluTimeSpecified(string fractionalPart, int expectedAdditionalTicks)
        {
            var handler = new DefaultDateTimeHandler();

            var s = string.Format("2016-02-24T02:29:33{0}Z", fractionalPart);
            var value = handler.ParseDateTimeOffset(s);

            var expectedValue = new DateTimeOffset(2016, 2, 24, 2, 29, 33, TimeSpan.FromHours(0)).AddTicks(expectedAdditionalTicks);

            Assert.That(value, Is.EqualTo(expectedValue));
        }
        public void CanParseDateTimeOffsetWithNoOffsetSpecified(string fractionalPart, int expectedAdditionalTicks)
        {
            var handler = new DefaultDateTimeHandler();

            var s = string.Format("2016-02-24T02:29:33{0}", fractionalPart);
            var value = handler.ParseDateTimeOffset(s);

            var utcOffset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
            var expectedValue = new DateTimeOffset(2016, 2, 24, 2, 29, 33, utcOffset).AddTicks(expectedAdditionalTicks);

            Assert.That(value, Is.EqualTo(expectedValue));
        }