public void Serializes_null()
        {
            var sut    = new DateTimeOffsetJsonConverter();
            var actual = JsonConvert.SerializeObject(null, sut);

            Assert.Equal("null", actual);
        }
        public void Cannot_convert(Type objectType)
        {
            var sut    = new DateTimeOffsetJsonConverter();
            var actual = sut.CanConvert(objectType);

            Assert.False(actual);
        }
        public void Deserializes_correctly()
        {
            var sut    = new DateTimeOffsetJsonConverter();
            var value  = "\"19700101\"";
            var actual = JsonConvert.DeserializeObject <DateTimeOffset>(value, sut);

            Assert.Equal(DateTimeOffset.Parse("1970-01-01"), actual);

            value  = "\"29991231\"";
            actual = JsonConvert.DeserializeObject <DateTimeOffset>(value, sut);
            Assert.Equal(DateTimeOffset.Parse("2999-12-31"), actual);

            value = "\"19700101\"";
            var actual2 = JsonConvert.DeserializeObject <DateTimeOffset?>(value, sut);

            Assert.Equal(DateTimeOffset.Parse("1970-01-01"), actual2.Value);

            value   = "\"29991231\"";
            actual2 = JsonConvert.DeserializeObject <DateTimeOffset?>(value, sut);
            Assert.Equal(DateTimeOffset.Parse("2999-12-31"), actual2.Value);
        }
        public void Serializes_correctly()
        {
            var sut    = new DateTimeOffsetJsonConverter();
            var date   = DateTimeOffset.Now;
            var actual = JsonConvert.SerializeObject(date, sut);

            Assert.Equal($"\"{date.ToString(DateTimeOffsetJsonConverter.ImportDateFormat)}\"", actual);

            date   = DateTimeOffset.UtcNow;
            actual = JsonConvert.SerializeObject(date, sut);
            Assert.Equal($"\"{date.ToString(DateTimeOffsetJsonConverter.ImportDateFormat)}\"", actual);

            date   = DateTimeOffset.MinValue;
            actual = JsonConvert.SerializeObject(date, sut);
            Assert.Equal($"\"{date.ToString(DateTimeOffsetJsonConverter.ImportDateFormat)}\"", actual);

            date   = DateTimeOffset.MaxValue;
            actual = JsonConvert.SerializeObject(date, sut);
            Assert.Equal($"\"{date.ToString(DateTimeOffsetJsonConverter.ImportDateFormat)}\"", actual);

            var date2 = (DateTimeOffset?)DateTimeOffset.Now;

            actual = JsonConvert.SerializeObject(date2, sut);
            Assert.Equal($"\"{date2.Value.ToString(DateTimeOffsetJsonConverter.ImportDateFormat)}\"", actual);

            date2  = (DateTimeOffset?)DateTimeOffset.UtcNow;
            actual = JsonConvert.SerializeObject(date2, sut);
            Assert.Equal($"\"{date2.Value.ToString(DateTimeOffsetJsonConverter.ImportDateFormat)}\"", actual);

            date2  = (DateTimeOffset?)DateTimeOffset.MinValue;
            actual = JsonConvert.SerializeObject(date2, sut);
            Assert.Equal($"\"{date2.Value.ToString(DateTimeOffsetJsonConverter.ImportDateFormat)}\"", actual);

            date2  = (DateTimeOffset?)DateTimeOffset.MaxValue;
            actual = JsonConvert.SerializeObject(date2, sut);
            Assert.Equal($"\"{date2.Value.ToString(DateTimeOffsetJsonConverter.ImportDateFormat)}\"", actual);
        }