public void TestMethodInterfaceInheritanceSerialization()
        {
            BinarySerializer serializer = new BinarySerializer(new UnknowTestTypeResolver());

            TestInterfaceImpl1 testObj1 = new TestInterfaceImpl1();

            testObj1.TestBaseProperty   = "TEST";
            testObj1.AdditionalProperty = "Some data";
            testObj1.DeepTestProperty1  = "Inherited interface property 1";
            testObj1.DeepTestProperty2  = "Inherited interface property 2";

            InterfRefObject interfRef = new InterfRefObject();

            interfRef.BaseObjectInstance = testObj1;

            var bytes = serializer.Serialize(interfRef, null);

            InterfRefObject deserializedObj = (InterfRefObject)serializer.Deserialize(bytes, null);

            Assert.Equal(((ITestInterfaceBase)interfRef.BaseObjectInstance).TestBaseProperty, ((ITestInterfaceBase)deserializedObj.BaseObjectInstance).TestBaseProperty);

            TestInterfaceImpl1 implObj = (TestInterfaceImpl1)deserializedObj.BaseObjectInstance;

            Assert.Null(implObj.AdditionalProperty);

            Assert.Equal(testObj1.DeepTestProperty1, implObj.DeepTestProperty1);
            Assert.Equal(testObj1.DeepTestProperty2, implObj.DeepTestProperty2);
            Assert.Equal(testObj1.TestBaseProperty, implObj.TestBaseProperty);
            Assert.Null(implObj.AdditionalProperty);
        }
        public void TestMethodInterfaceSerialization()
        {
            try
            {
                BinarySerializer serializer = new BinarySerializer(new UnknowTestTypeResolver());

                TestInterfaceImpl1 testObj1 = new TestInterfaceImpl1();
                testObj1.TestBaseProperty   = "TEST";
                testObj1.AdditionalProperty = "Some data";
                testObj1.DeepTestProperty1  = "Inherited interface property 1";
                testObj1.DeepTestProperty2  = "Inherited interface property 2";

                InterfRefObject interfRef = new InterfRefObject();
                interfRef.BaseObject = testObj1;

                var dataBytes = serializer.Serialize(interfRef, null);

                InterfRefObject deserializedObj = (InterfRefObject)serializer.Deserialize(dataBytes, null);

                Assert.Equal(interfRef.BaseObject.TestBaseProperty, deserializedObj.BaseObject.TestBaseProperty);

                TestInterfaceImpl1 implObj = (TestInterfaceImpl1)deserializedObj.BaseObject;
                Assert.Null(implObj.AdditionalProperty);

                Assert.Equal(testObj1.DeepTestProperty1, implObj.DeepTestProperty1);
                Assert.Equal(testObj1.DeepTestProperty2, implObj.DeepTestProperty2);
            }
            catch (Exception ex)
            {
                throw;  // because of visual studio unittest bug
            }
        }
Exemple #3
0
        public void TestMethodInterfaceInheritanceSerialization()
        {
            JsonObjectSerializer serializer = new JsonObjectSerializer(UnknownTypeResolver, SpecialTypeResolver);

            TestInterfaceImpl1 testObj1 = new TestInterfaceImpl1();

            testObj1.TestBaseProperty   = "TEST";
            testObj1.AdditionalProperty = "Some data";
            testObj1.DeepTestProperty1  = "Inherited interface property 1";
            testObj1.DeepTestProperty2  = "Inherited interface property 2";

            InterfRefObject interfRef = new InterfRefObject();

            interfRef.BaseObjectInstance = testObj1;

            string json = serializer.Serialize(interfRef, null);

            InterfRefObject deserializedObj = (InterfRefObject)serializer.Deserialize(json, typeof(InterfRefObject), null);

            Assert.Equal(((ITestInterfaceBase)interfRef.BaseObjectInstance).TestBaseProperty, ((ITestInterfaceBase)deserializedObj.BaseObjectInstance).TestBaseProperty);

            TestInterfaceImpl1 implObj = (TestInterfaceImpl1)deserializedObj.BaseObjectInstance;

            Assert.Null(implObj.AdditionalProperty);

            Assert.Equal(testObj1.DeepTestProperty1, implObj.DeepTestProperty1);
            Assert.Equal(testObj1.DeepTestProperty2, implObj.DeepTestProperty2);
        }
Exemple #4
0
        private static void CheckCollectionItem(ITestInterfaceBase orginalItem, ITestInterfaceBase deserializedItem)
        {
            Assert.Equal(orginalItem.TestBaseProperty, deserializedItem.TestBaseProperty);
            Assert.Equal(orginalItem.DeepTestProperty1, deserializedItem.DeepTestProperty1);
            Assert.Equal(orginalItem.DeepTestProperty2, deserializedItem.DeepTestProperty2);

            TestInterfaceImpl1 implObj = (TestInterfaceImpl1)deserializedItem;

            Assert.Null(implObj.AdditionalProperty);
        }
Exemple #5
0
        public void TestMethodInterfaceInheritanceExposedSubInterfaceSerialization()
        {
            // 1. Serialize and deserialize with exposed sub interface
            JsonObjectSerializer serializer = new JsonObjectSerializer(UnknownTypeResolver, SubInterfaceExposeTypeResolver);

            TestInterfaceExtendedImple testObjExtended = new TestInterfaceExtendedImple();

            testObjExtended.TestBaseProperty = "TEST";
            testObjExtended.TestExtProperty  = "Exposed Sub Interface Property";


            InterfRefObject interfRef = new InterfRefObject();

            interfRef.BaseObjectInstance = testObjExtended;

            string json = serializer.Serialize(interfRef, null);

            InterfRefObject deserializedObj = (InterfRefObject)serializer.Deserialize(json, typeof(InterfRefObject), null);

            Assert.Equal(((ITestInterfaceBase)interfRef.BaseObjectInstance).TestBaseProperty, ((ITestInterfaceBase)deserializedObj.BaseObjectInstance).TestBaseProperty);
            Assert.Equal(((ITestInterfaceExtended)interfRef.BaseObjectInstance).TestExtProperty, ((ITestInterfaceExtended)deserializedObj.BaseObjectInstance).TestExtProperty);


            // 2. Serailize and deserialize with base interface
            TestInterfaceImpl1 testObjBase = new TestInterfaceImpl1();

            testObjBase.TestBaseProperty = "TEST";

            interfRef.BaseObjectInstance = testObjBase;

            string json2 = serializer.Serialize(interfRef, null);

            //InterfRefObject deserializedObj2 = (InterfRefObject)serializer.Deserialize(json2, typeof(InterfRefObject), null);

            //Assert.Equal(((ITestInterfaceBase)interfRef.BaseObjectInstance).TestBaseProperty, ((ITestInterfaceBase)deserializedObj2.BaseObjectInstance).TestBaseProperty);

            //todo: complete test
        }
        public void TestMethodInterfaceInheritanceArraySerializationWithNewSerializer()
        {
            try
            {
                BinarySerializer serializer = new BinarySerializer(new UnknowTestTypeResolver());

                TestInterfaceImpl1Collections collHolder = new TestInterfaceImpl1Collections();

                TestInterfaceImpl1 testObj1 = new TestInterfaceImpl1();
                testObj1.TestBaseProperty   = "TEST";
                testObj1.AdditionalProperty = "Some data";
                testObj1.DeepTestProperty1  = "Inherited interface property 1";
                testObj1.DeepTestProperty2  = "Inherited interface property 2";

                TestInterfaceImpl1 testObj2 = new TestInterfaceImpl1();
                testObj2.TestBaseProperty   = "TEST 2";
                testObj2.AdditionalProperty = "Some data 2";
                testObj2.DeepTestProperty1  = "Inherited interface property 1 - 2";
                testObj2.DeepTestProperty2  = "Inherited interface property 2 - 2";

                collHolder.Array = new ITestInterfaceBase[] { testObj1 };

                collHolder.List = new List <ITestInterfaceBase>();
                collHolder.List.Add(testObj1);
                collHolder.List.Add(testObj2);

                collHolder.ObjectArray = new object[] { testObj1, testObj2 };

                decimal  anyObjVal    = 342534.56m;
                object[] anyObjectArr = new object[] { 2, "hallo", new object[] { 7, "nested", new TestObject()
                                                                                  {
                                                                                      DecimalValue = anyObjVal
                                                                                  } } };
                collHolder.AnyObjectArray = anyObjectArr;

                // own collection
                collHolder.OwnCollection = new OwnCollection();
                collHolder.OwnCollection.Add("Own Testdata 1");
                collHolder.OwnCollection.Add("Own Testdata 2");

                var data = serializer.Serialize(collHolder, null);

                ClearGlobalTypeCache();

                BinarySerializer serializer2 = new BinarySerializer(new UnknowTestTypeResolver());

                TestInterfaceImpl1Collections deserializedObj = (TestInterfaceImpl1Collections)serializer2.Deserialize(data, null);

                Assert.Equal <int>(collHolder.Array.Length, deserializedObj.Array.Length);
                for (int i = 0; i < collHolder.Array.Length; i++)
                {
                    ITestInterfaceBase orginalItem      = collHolder.Array[i];
                    ITestInterfaceBase deserializedItem = deserializedObj.Array[i];

                    CheckCollectionItem(orginalItem, deserializedItem, true);
                }

                for (int i = 0; i < collHolder.List.Count; i++)
                {
                    ITestInterfaceBase orginalItem      = collHolder.List[i];
                    ITestInterfaceBase deserializedItem = deserializedObj.List[i];

                    CheckCollectionItem(orginalItem, deserializedItem, true);
                }

                for (int i = 0; i < collHolder.ObjectArray.Length; i++)
                {
                    ITestInterfaceBase orginalItem      = (ITestInterfaceBase)collHolder.ObjectArray[i];
                    ITestInterfaceBase deserializedItem = (ITestInterfaceBase)deserializedObj.ObjectArray[i];

                    CheckCollectionItem(orginalItem, deserializedItem, true);
                }


                // check own collection implementation
                var deserializedEnumerator = deserializedObj.OwnCollection.GetEnumerator();
                foreach (var item in collHolder.OwnCollection)
                {
                    deserializedEnumerator.MoveNext();

                    Assert.True(item.Equals(deserializedEnumerator.Current));
                }

                object     anyItemObj = ((object[])((object[])collHolder.AnyObjectArray)[2])[2];
                TestObject anyItem    = anyItemObj as TestObject;

                Assert.Equal(anyObjVal, anyItem.DecimalValue);
            }
            catch (Exception ex)
            {
                throw;  // because of visual studio unittest bug
            }
        }
Exemple #7
0
        public void TestMethodInterfaceInheritanceArraySerialization()
        {
            JsonObjectSerializer serializer = new JsonObjectSerializer(UnknownTypeResolver, SpecialTypeResolver);

            TestInterfaceImpl1Collections collHolder = new TestInterfaceImpl1Collections();

            TestInterfaceImpl1 testObj1 = new TestInterfaceImpl1();

            testObj1.TestBaseProperty   = "TEST";
            testObj1.AdditionalProperty = "Some data";
            testObj1.DeepTestProperty1  = "Inherited interface property 1";
            testObj1.DeepTestProperty2  = "Inherited interface property 2";

            TestInterfaceImpl1 testObj2 = new TestInterfaceImpl1();

            testObj2.TestBaseProperty   = "TEST 2";
            testObj2.AdditionalProperty = "Some data 2";
            testObj2.DeepTestProperty1  = "Inherited interface property 1 - 2";
            testObj2.DeepTestProperty2  = "Inherited interface property 2 - 2";

            collHolder.Array = new ITestInterfaceBase[] { testObj1 };

            collHolder.List = new List <ITestInterfaceBase>();
            collHolder.List.Add(testObj1);
            collHolder.List.Add(testObj2);

            collHolder.ObjectArray = new object[] { testObj1, testObj2 };

            // own collection
            collHolder.OwnCollection = new OwnCollection();
            collHolder.OwnCollection.Add("Own Testdata 1");
            collHolder.OwnCollection.Add("Own Testdata 2");

            string json = serializer.Serialize(collHolder, null);

            TestInterfaceImpl1Collections deserializedObj = (TestInterfaceImpl1Collections)serializer.Deserialize(json, typeof(TestInterfaceImpl1Collections), null);

            Assert.Equal <int>(collHolder.Array.Length, deserializedObj.Array.Length);
            for (int i = 0; i < collHolder.Array.Length; i++)
            {
                ITestInterfaceBase orginalItem      = collHolder.Array[i];
                ITestInterfaceBase deserializedItem = deserializedObj.Array[i];

                CheckCollectionItem(orginalItem, deserializedItem);
            }

            for (int i = 0; i < collHolder.List.Count; i++)
            {
                ITestInterfaceBase orginalItem      = collHolder.List[i];
                ITestInterfaceBase deserializedItem = deserializedObj.List[i];

                CheckCollectionItem(orginalItem, deserializedItem);
            }

            for (int i = 0; i < collHolder.ObjectArray.Length; i++)
            {
                ITestInterfaceBase orginalItem      = (ITestInterfaceBase)collHolder.ObjectArray[i];
                ITestInterfaceBase deserializedItem = (ITestInterfaceBase)deserializedObj.ObjectArray[i];

                CheckCollectionItem(orginalItem, deserializedItem);
            }

            // check own collection implementation
            var deserializedEnumerator = deserializedObj.OwnCollection.GetEnumerator();

            foreach (var item in collHolder.OwnCollection)
            {
                deserializedEnumerator.MoveNext();

                Assert.True(item.Equals(deserializedEnumerator.Current));
            }
        }