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
            }
        }
示例#2
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));
            }
        }