Example #1
0
        public void Should_See_Nullable_Field()
        {
            var partlyNullable = new NullableTestClass(null, "not null");

            Assert.Null(partlyNullable.NullableField);
            Assert.NotNull(partlyNullable.NotNullableField);
        }
Example #2
0
        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();
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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);
        }
Example #12
0
        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));
        }
Example #13
0
    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);
    }