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 } }
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)); } }