Пример #1
0
        public void CanConvertObjectWithTypePropertyInSameAssembly()
        {
            var obj = new TypeHolder()
            {
                PropType = typeof(SimpleBaseObject)
            };

            var str         = _serializer.Serialize(obj);
            var strWithType = _serializer.Serialize(obj, new SerializerSettings()
            {
                SerializationTypeHandle = SerializationTypeHandle.All
            });

            Console.WriteLine(str);
            Console.WriteLine(strWithType);
            Assert.AreEqual("{\"PropType\":\"SFJsonTests.SimpleBaseObject, SFJsonTests\"}", str);
            Assert.AreEqual("{\"$type\":\"SFJsonTests.TypeHolder, SFJsonTests\",\"PropType\":\"SFJsonTests.SimpleBaseObject, SFJsonTests\"}", strWithType);

            var strDeserialized = _deserializer.Deserialize <TypeHolder>(str);

            Assert.NotNull(strDeserialized);
            Assert.IsInstanceOf <TypeHolder>(strDeserialized);
            Assert.AreEqual(obj.PropType, strDeserialized.PropType);

            var strWithTypeDeserialized = _deserializer.Deserialize <TypeHolder>(strWithType);

            Assert.NotNull(strWithTypeDeserialized);
            Assert.IsInstanceOf <TypeHolder>(strWithTypeDeserialized);
            Assert.AreEqual(obj.PropType, strWithTypeDeserialized.PropType);
        }
Пример #2
0
        public void CanConvertObjectWithComplexTypeProperty()
        {
            var obj = new TypeHolder()
            {
                PropType = typeof(Dictionary <Dictionary <JsonTokenType, int[]>, List <string[]> >)
            };

            var str         = _serializer.Serialize(obj);
            var strWithType = _serializer.Serialize(obj, new SerializerSettings()
            {
                SerializationTypeHandle = SerializationTypeHandle.All
            });

            Console.WriteLine(str);
            Console.WriteLine(strWithType);
            Assert.AreEqual("{\"PropType\":\"System.Collections.Generic.Dictionary`2[[System.Collections.Generic.Dictionary`2[[SFJson.Tokenization.Tokens.JsonTokenType, SFJson],[System.Int32[], System.Private.CoreLib]], System.Private.CoreLib],[System.Collections.Generic.List`1[[System.String[], System.Private.CoreLib]], System.Private.CoreLib]], System.Private.CoreLib\"}", str);
            Assert.AreEqual("{\"$type\":\"SFJsonTests.TypeHolder, SFJsonTests\",\"PropType\":\"System.Collections.Generic.Dictionary`2[[System.Collections.Generic.Dictionary`2[[SFJson.Tokenization.Tokens.JsonTokenType, SFJson],[System.Int32[], System.Private.CoreLib]], System.Private.CoreLib],[System.Collections.Generic.List`1[[System.String[], System.Private.CoreLib]], System.Private.CoreLib]], System.Private.CoreLib\"}", strWithType);

            var strDeserialized = _deserializer.Deserialize <TypeHolder>(str);

            Assert.NotNull(strDeserialized);
            Assert.IsInstanceOf <TypeHolder>(strDeserialized);
            Assert.AreEqual(obj.PropType, strDeserialized.PropType);

            var strWithTypeDeserialized = _deserializer.Deserialize <TypeHolder>(strWithType);

            Assert.NotNull(strWithTypeDeserialized);
            Assert.IsInstanceOf <TypeHolder>(strWithTypeDeserialized);
            Assert.AreEqual(obj.PropType, strWithTypeDeserialized.PropType);
        }
Пример #3
0
        public void ConvertsNullType()
        {
            var obj = new TypeHolder()
            {
                PropType = null
            };

            var str         = _serializer.Serialize(obj);
            var strWithType = _serializer.Serialize(obj, new SerializerSettings()
            {
                SerializationTypeHandle = SerializationTypeHandle.All
            });

            Console.WriteLine(str);
            Console.WriteLine(strWithType);
            Assert.AreEqual("{\"PropType\":null}", str);
            Assert.AreEqual("{\"$type\":\"SFJsonTests.TypeHolder, SFJsonTests\",\"PropType\":null}", strWithType);

            var strDeserialized = _deserializer.Deserialize <TypeHolder>(str);

            Assert.NotNull(strDeserialized);
            Assert.IsInstanceOf <TypeHolder>(strDeserialized);
            Assert.IsNull(strDeserialized.PropType);

            var strWithTypeDeserialized = _deserializer.Deserialize <TypeHolder>(strWithType);

            Assert.NotNull(strWithTypeDeserialized);
            Assert.IsInstanceOf <TypeHolder>(strWithTypeDeserialized);
            Assert.IsNull(strWithTypeDeserialized.PropType);
        }