public void Should_See_Nullable_Field() { var partlyNullable = new NullableTestClass(null, "not null"); Assert.Null(partlyNullable.NullableField); Assert.NotNull(partlyNullable.NotNullableField); }
static void TestSyncNullable(string propertyName, object value) { // Get the property var property = typeof(NullableTestClass).GetProperty(propertyName); // Set the value and ensure it was set correctly var cSrc = new NullableTestClass(); property.SetValue(cSrc, value, null); Assert.AreEqual(value, property.GetValue(cSrc, null)); // Serialize var bs = new BitStream(); cSrc.Serialize(bs); // Deserialize var cDest = new NullableTestClass(); bs.PositionBits = 0; cDest.Deserialize(bs); // Check Assert.AreEqual(value, property.GetValue(cDest, null)); }
public void ShouldExcludeNullDateTimeOffset() { var originalDateTimeOffset = new NullableTestClass(); var serializedDateTimeOffset = JsonHelper.Serialize(originalDateTimeOffset); var serializedJToken = JToken.Parse(serializedDateTimeOffset); serializedJToken["DateTimeOffset"].Should().BeNull(); }
public void ShouldPreserveTimezoneInformationForNullableDateTime() { var originalDateTimeOffset = new NullableTestClass(new DateTimeOffset(2014, 1, 1, 0, 0, 0, TimeSpan.Zero)); var serializedDateTimeOffset = JsonHelper.Serialize(originalDateTimeOffset); var deserializedDateTimeOffset = JsonHelper.Deserialize <NullableTestClass>(serializedDateTimeOffset); deserializedDateTimeOffset.DateTimeOffset.Should().Be(originalDateTimeOffset.DateTimeOffset); }
public void ShouldSetNullForExcludedProperty() { var originalDateTimeOffset = new NullableTestClass(); var serializedDateTimeOffset = JsonHelper.Serialize(originalDateTimeOffset); var serializedJToken = JToken.Parse(serializedDateTimeOffset); serializedJToken["DateTimeOffset"].Should().BeNull(); var deserializedDateTimeOffset = JsonHelper.Deserialize <NullableTestClass>(serializedDateTimeOffset); deserializedDateTimeOffset.DateTimeOffset.Should().BeNull(); }
public void NullableTimeSpanDeserializationTest() { NullableTestClass Actual = JsonSerializer.Deserialize <NullableTestClass>(@"{""TimeSpan"":""01:02:03""}"); Assert.IsNotNull(Actual); Assert.IsTrue(Actual.TimeSpan.HasValue); Assert.AreEqual(new TimeSpan(1, 2, 3), Actual.TimeSpan); Actual = JsonSerializer.Deserialize <NullableTestClass>(@"{""TimeSpan"":null}"); Assert.IsNotNull(Actual); Assert.IsFalse(Actual.TimeSpan.HasValue); }
public void NullableDateTimeDeserializationTest() { NullableTestClass Actual = JsonSerializer.Deserialize <NullableTestClass>(@"{""DateTime"":""/Date(1580803200000)/""}"); Assert.IsNotNull(Actual); Assert.IsTrue(Actual.DateTime.HasValue); Assert.AreEqual(DateTimeKind.Utc, Actual.DateTime !.Value.Kind); Assert.AreEqual(s_TestLocalDateTimeOffset.UtcDateTime, Actual.DateTime); Actual = JsonSerializer.Deserialize <NullableTestClass>(@"{""DateTime"":null}"); Assert.IsNotNull(Actual); Assert.IsFalse(Actual.DateTime.HasValue); }
public void NullableDateTimeDeserializationTest() { NullableTestClass Actual = JsonSerializer.Deserialize <NullableTestClass>(@"{""DateTime"":""/Date(1580803200000)/""}"); Assert.IsNotNull(Actual); Assert.IsTrue(Actual.DateTime.HasValue); Assert.AreEqual(DateTimeKind.Utc, Actual.DateTime !.Value.Kind); Assert.AreEqual(new DateTime(2020, 2, 4).ToUniversalTime(), Actual.DateTime); Actual = JsonSerializer.Deserialize <NullableTestClass>(@"{""DateTime"":null}"); Assert.IsNotNull(Actual); Assert.IsFalse(Actual.DateTime.HasValue); }
public void NullableDateTimeOffsetDeserializationTest() { NullableTestClass Actual = JsonSerializer.Deserialize <NullableTestClass>(@"{""DateTimeOffset"":""/Date(1580803200000-0800)/""}"); Assert.IsNotNull(Actual); Assert.AreEqual( s_TestLocalDateTimeOffsetNegative, Actual.DateTimeOffset); Assert.AreEqual(s_TestLocalDateTimeOffsetNegative.UtcDateTime, Actual.DateTimeOffset !.Value.UtcDateTime); Actual = JsonSerializer.Deserialize <NullableTestClass>(@"{""DateTimeOffset"":null}"); Assert.IsNotNull(Actual); Assert.IsFalse(Actual.DateTimeOffset.HasValue); }
public void NullableDateTimeOffsetDeserializationTest() { NullableTestClass Actual = JsonSerializer.Deserialize <NullableTestClass>(@"{""DateTimeOffset"":""/Date(1580803200000-0800)/""}"); Assert.IsNotNull(Actual); Assert.AreEqual( new DateTimeOffset( new DateTime(2020, 2, 4), TimeSpan.FromHours(-8)), Actual.DateTimeOffset); Assert.AreEqual(new DateTime(2020, 2, 4).ToUniversalTime(), Actual.DateTimeOffset !.Value.UtcDateTime); Actual = JsonSerializer.Deserialize <NullableTestClass>(@"{""DateTimeOffset"":null}"); Assert.IsNotNull(Actual); Assert.IsFalse(Actual.DateTimeOffset.HasValue); }
static void NullableTest() { var ceras = new CerasSerializer(); var obj = new NullableTestClass { A = 12.00000476M, B = 13.000001326M, C = 14, D = 15 }; var data = ceras.Serialize(obj); var clone = ceras.Deserialize <NullableTestClass>(data); Debug.Assert(obj.A == clone.A); Debug.Assert(obj.B == clone.B); Debug.Assert(obj.C == clone.C); Debug.Assert(obj.D == clone.D); }
static int Main() { BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.InvokeMethod; MethodInfo mi = typeof(NullableTestClass).GetMethod("F"); NullableTestClass nullable = new NullableTestClass(); SimpleStruct? test = new SimpleStruct(90, 90); mi.Invoke(nullable, flags, new PassesStuffBinder(null), new object [] { null }, null); if (nullable.hasValue) { Console.WriteLine("invoked nullabled with null arg but did not get a null in the method"); return(1); } nullable = new NullableTestClass(); mi.Invoke(nullable, flags, new PassesStuffBinder(new SimpleStruct(10, 20)), new object [] { 200 }, null); if (!nullable.hasValue || nullable.bVal != 20) { Console.WriteLine("invoked nullabled with boxed struct, but did not get it"); return(2); } nullable = new NullableTestClass(); mi.Invoke(nullable, flags, new PassesStuffBinder(test), new object [] { 200 }, null); if (!nullable.hasValue || nullable.bVal != 90) { Console.WriteLine("invoked nullabled with nullable literal, but did not get it"); return(3); } mi = typeof(PrimitiveTestClass).GetMethod("i4"); PrimitiveTestClass prim = new PrimitiveTestClass(); mi.Invoke(prim, flags, new PassesStuffBinder((byte)10), new object [] { 88 }, null); if (prim.val != 10) { Console.WriteLine("invoked primitive with byte, it should be widened to int " + prim.val); return(4); } try { mi.Invoke(prim, flags, new PassesStuffBinder(Missing.Value), new object [] { null }, null); Console.WriteLine("invoked literal with reference value"); return(5); } catch (Exception) { } try { MethodInfo method = typeof(Driver).GetMethod("StructTest"); MethodInfo generic_method = method.MakeGenericMethod(typeof(int)); generic_method.Invoke(null, new object [] { new GenericStruct <int>() }); method = typeof(Driver).GetMethod("ReferenceTest"); generic_method = method.MakeGenericMethod(typeof(int)); generic_method.Invoke(null, new object [] { new GenericClass <int>() }); } catch (Exception e) { Console.WriteLine("calling with generic arg failed " + e); return(6); } return(0); }