public void Can_serialize_UnixEpochMs_DateTimes(int whichDate) { var dateTime = DateTimeSerializerTests.DateTimeTests[whichDate].ToUniversalTime(); var dto = new TestObject { Date = dateTime }; var unixTime = dateTime.ToUnixTimeMs(); var expectedJson = "{\"Date\":" + unixTime + "}"; var json = dto.ToJson(); Assert.That(json, Is.EqualTo(expectedJson)); var fromJson = json.FromJson<TestObject>(); var nearestSec = TimeSpan.FromSeconds(1); Assert.That(fromJson.Date.RoundToMs(), Is.EqualTo(dateTime.RoundToMs())); }
public void DateTime_Is_Serialized_As_Utc_and_Deserialized_as_local() { var testObject = new TestObject { Date = new DateTime(2013, 1, 1, 0, 0, 1, DateTimeKind.Utc) }; Assert.AreEqual(DateTimeKind.Local, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); //Can change default behavior with config using (JsConfig.With(alwaysUseUtc: true)) { Assert.AreEqual(DateTimeKind.Utc, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); } testObject = new TestObject { Date = new DateTime(2013, 1, 1, 0, 0, 0, DateTimeKind.Utc) }; Assert.AreEqual(DateTimeKind.Local, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); //Can change default behavior with config using (JsConfig.With(alwaysUseUtc: true)) { Assert.AreEqual(DateTimeKind.Utc, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); } }
public void DateTimeKind_Does_Not_Change_With_SkipDateTimeConversion_true() { JsConfig.DateHandler = DateHandler.ISO8601; JsConfig.SkipDateTimeConversion = true; string serilizedResult; TestObject deserilizedResult; var testObject = new TestObject { Date = new DateTime(2013, 1, 1, 0, 0, 1, DateTimeKind.Utc) }; serilizedResult = TypeSerializer.SerializeToString<TestObject>(testObject); deserilizedResult = TypeSerializer.DeserializeFromString<TestObject>(serilizedResult); Assert.AreEqual(deserilizedResult.Date, testObject.Date); Assert.AreEqual(DateTimeKind.Utc, deserilizedResult.Date.Kind); using (JsConfig.With(skipDateTimeConversion: false)) { Assert.AreEqual(DateTimeKind.Local, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); } testObject = new TestObject { Date = new DateTime(2013, 1, 1, 0, 0, 0, DateTimeKind.Utc) }; serilizedResult = TypeSerializer.SerializeToString<TestObject>(testObject); deserilizedResult = TypeSerializer.DeserializeFromString<TestObject>(serilizedResult); Assert.AreEqual(deserilizedResult.Date, testObject.Date); Assert.AreEqual(DateTimeKind.Utc, deserilizedResult.Date.Kind); using (JsConfig.With(skipDateTimeConversion: false)) { Assert.AreEqual(DateTimeKind.Local, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); } using (JsConfig.With(alwaysUseUtc: true, skipDateTimeConversion:false)) //It will work now { Assert.AreEqual(DateTimeKind.Utc, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); } //make sure it still keeps local local testObject = new TestObject { Date = new DateTime(2013, 1, 2, 0, 2, 0, DateTimeKind.Local) }; serilizedResult = TypeSerializer.SerializeToString<TestObject>(testObject); deserilizedResult = TypeSerializer.DeserializeFromString<TestObject>(serilizedResult); Assert.AreEqual(deserilizedResult.Date, testObject.Date); Assert.AreEqual(DateTimeKind.Local, deserilizedResult.Date.Kind); using (JsConfig.With(alwaysUseUtc: true)) { Assert.AreEqual(DateTimeKind.Local, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); } using (JsConfig.With(alwaysUseUtc: true, skipDateTimeConversion: false)) { Assert.AreEqual(DateTimeKind.Utc, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); } testObject = new TestObject { Date = new DateTime(2013, 1, 2, 0, 2, 0, DateTimeKind.Unspecified) }; serilizedResult = TypeSerializer.SerializeToString<TestObject>(testObject); deserilizedResult = TypeSerializer.DeserializeFromString<TestObject>(serilizedResult); Assert.AreEqual(deserilizedResult.Date, testObject.Date); Assert.AreEqual(DateTimeKind.Unspecified, deserilizedResult.Date.Kind); using (JsConfig.With(alwaysUseUtc: true)) { Assert.AreEqual(DateTimeKind.Unspecified, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); } using (JsConfig.With(alwaysUseUtc: true, skipDateTimeConversion: false)) { Assert.AreEqual(DateTimeKind.Utc, TypeSerializer.DeserializeFromString<TestObject>(TypeSerializer.SerializeToString<TestObject>(testObject)).Date.Kind); } using (JsConfig.With(skipDateTimeConversion: false)) { serilizedResult = TypeSerializer.SerializeToString<TestObject>(testObject); deserilizedResult = TypeSerializer.DeserializeFromString<TestObject>(serilizedResult); Assert.AreEqual(DateTimeKind.Local, deserilizedResult.Date.Kind); } }
public void DateTimeKind_Does_Not_Change_With_SkipDateTimeConversion_true() { JsConfig.DateHandler = DateHandler.ISO8601; JsConfig.SkipDateTimeConversion = true; string serilizedResult; TestObject deserilizedResult; var testObject = new TestObject { Date = new DateTime(2013, 1, 1, 0, 0, 1, DateTimeKind.Utc) }; serilizedResult = TypeSerializer.SerializeToString <TestObject>(testObject); deserilizedResult = TypeSerializer.DeserializeFromString <TestObject>(serilizedResult); Assert.AreEqual(deserilizedResult.Date, testObject.Date); Assert.AreEqual(DateTimeKind.Utc, deserilizedResult.Date.Kind); using (JsConfig.With(skipDateTimeConversion: false)) { Assert.AreEqual(DateTimeKind.Local, TypeSerializer.DeserializeFromString <TestObject>(TypeSerializer.SerializeToString <TestObject>(testObject)).Date.Kind); } testObject = new TestObject { Date = new DateTime(2013, 1, 1, 0, 0, 0, DateTimeKind.Utc) }; serilizedResult = TypeSerializer.SerializeToString <TestObject>(testObject); deserilizedResult = TypeSerializer.DeserializeFromString <TestObject>(serilizedResult); Assert.AreEqual(deserilizedResult.Date, testObject.Date); Assert.AreEqual(DateTimeKind.Utc, deserilizedResult.Date.Kind); using (JsConfig.With(skipDateTimeConversion: false)) { Assert.AreEqual(DateTimeKind.Local, TypeSerializer.DeserializeFromString <TestObject>(TypeSerializer.SerializeToString <TestObject>(testObject)).Date.Kind); } using (JsConfig.With(alwaysUseUtc: true, skipDateTimeConversion: false)) //It will work now { Assert.AreEqual(DateTimeKind.Utc, TypeSerializer.DeserializeFromString <TestObject>(TypeSerializer.SerializeToString <TestObject>(testObject)).Date.Kind); } //make sure it still keeps local local testObject = new TestObject { Date = new DateTime(2013, 1, 2, 0, 2, 0, DateTimeKind.Local) }; serilizedResult = TypeSerializer.SerializeToString <TestObject>(testObject); deserilizedResult = TypeSerializer.DeserializeFromString <TestObject>(serilizedResult); Assert.AreEqual(deserilizedResult.Date, testObject.Date); Assert.AreEqual(DateTimeKind.Local, deserilizedResult.Date.Kind); using (JsConfig.With(alwaysUseUtc: true)) { Assert.AreEqual(DateTimeKind.Local, TypeSerializer.DeserializeFromString <TestObject>(TypeSerializer.SerializeToString <TestObject>(testObject)).Date.Kind); } using (JsConfig.With(alwaysUseUtc: true, skipDateTimeConversion: false)) { Assert.AreEqual(DateTimeKind.Utc, TypeSerializer.DeserializeFromString <TestObject>(TypeSerializer.SerializeToString <TestObject>(testObject)).Date.Kind); } testObject = new TestObject { Date = new DateTime(2013, 1, 2, 0, 2, 0, DateTimeKind.Unspecified) }; serilizedResult = TypeSerializer.SerializeToString <TestObject>(testObject); deserilizedResult = TypeSerializer.DeserializeFromString <TestObject>(serilizedResult); Assert.AreEqual(deserilizedResult.Date, testObject.Date); Assert.AreEqual(DateTimeKind.Unspecified, deserilizedResult.Date.Kind); using (JsConfig.With(alwaysUseUtc: true)) { Assert.AreEqual(DateTimeKind.Unspecified, TypeSerializer.DeserializeFromString <TestObject>(TypeSerializer.SerializeToString <TestObject>(testObject)).Date.Kind); } using (JsConfig.With(alwaysUseUtc: true, skipDateTimeConversion: false)) { Assert.AreEqual(DateTimeKind.Utc, TypeSerializer.DeserializeFromString <TestObject>(TypeSerializer.SerializeToString <TestObject>(testObject)).Date.Kind); } using (JsConfig.With(skipDateTimeConversion: false)) { serilizedResult = TypeSerializer.SerializeToString <TestObject>(testObject); deserilizedResult = TypeSerializer.DeserializeFromString <TestObject>(serilizedResult); Assert.AreEqual(DateTimeKind.Local, deserilizedResult.Date.Kind); } }
public void Does_serialize_to_UnixTime_when_scoped() { var dto = new TestObject { Date = new DateTime(2001,01,01, 0, 0, 0, DateTimeKind.Utc) }; using (var config = JsConfig.BeginScope()) { config.DateHandler = DateHandler.UnixTime; var json = dto.ToJson(); Assert.That(json, Is.EquivalentTo("{\"Date\":978307200}")); var fromJson = JsonSerializer.DeserializeFromString<TestObject>(json); Assert.That(fromJson.Date, Is.EqualTo(dto.Date)); } }