public void DeserializeComplex_ArrayComplexMultidimetional() { var value1 = new PublicConstructorWithParameters("value") { Prop1 = 1 }; var value2 = new PublicConstructorWithParameters("value") { Prop1 = 2 }; var value3 = new PublicConstructorWithParameters("value") { Prop1 = 3 }; var value4 = new PublicConstructorWithParameters("value") { Prop1 = 4 }; var array = new PublicConstructorWithParameters[2, 2] { { value1, value2 }, { value3, value4 } }; var expressionStr = array.AsExpression().DefaultSerializer.Serialize(); var deserializer = new ComplexEntityExpressionDeserializer(); var deserialized = deserializer.Deserialize <PublicConstructorWithParameters[, ]>(expressionStr); Assert.Equal(1, deserialized[0, 0].Prop1); Assert.Equal(2, deserialized[0, 1].Prop1); Assert.Equal(3, deserialized[1, 0].Prop1); Assert.Equal(4, deserialized[1, 1].Prop1); }
public void DeserializeComplex_DictionaryComplexKeyAndValueObject() { var key = new PublicConstructorWithParameters("value") { Prop1 = 1 }; var value = new PublicConstructorWithParameters("value") { Prop1 = 2 }; var dic = new Dictionary <PublicConstructorWithParameters, PublicConstructorWithParameters>() { { key, value }, }; var anonymous = new { A = dic, PropKey = key, PropValue = value }; var expressionStr = anonymous.AsExpression().DefaultSerializer.Serialize(); var deserializer = new ComplexEntityExpressionDeserializer(); var deserialized = (ExpandoObject)deserializer.Deserialize(expressionStr, anonymous.GetType()); var A = GetExpandoObjectValue <Dictionary <PublicConstructorWithParameters, PublicConstructorWithParameters> >(deserialized, "A"); var propKey = GetExpandoObjectValue <PublicConstructorWithParameters>(deserialized, "PropKey"); var propValue = GetExpandoObjectValue <PublicConstructorWithParameters>(deserialized, "PropValue"); Assert.Equal(1, A.Keys.ElementAt(0).Prop1); Assert.Equal(2, A.Values.ElementAt(0).Prop1); Assert.Same(propKey, A.Keys.ElementAt(0)); Assert.Same(propValue, A.Values.ElementAt(0)); }
public void DeserializeComplex_ArrayComplex() { var value1 = new PublicConstructorWithParameters("value") { Prop1 = 1 }; var value2 = new PublicConstructorWithParameters("value") { Prop1 = 2 }; var value3 = new PublicConstructorWithParameters("value") { Prop1 = 3 }; var array = new PublicConstructorWithParameters[] { value1, value2, value3 }; var expressionStr = array.AsExpression().DefaultSerializer.Serialize(); var deserializer = new ComplexEntityExpressionDeserializer(); var deserialized = deserializer.Deserialize <PublicConstructorWithParameters[]>(expressionStr); Assert.Equal(1, deserialized[0].Prop1); Assert.Equal(2, deserialized[1].Prop1); Assert.Equal(3, deserialized[2].Prop1); }