public void Should_Compute_Size_Of_Value_Type_Structure_With_Parametrized_Activator_Correctly() { var mapping = ObjectSerializationMapper.Create() .FromType <ValueTypeParametrizedActivationTestClass>() .PublicFields() .ParametrizedActivation(ObjectActivationHint.Field("x", "X"), ObjectActivationHint.Field("y", "Y")) .Map(); var serializationOps = ObjectSerializerCompiler.CompileSerializationOps(mapping).ToList().AsReadOnly(); var context = ObjectSerializerInterpreter.InterpretObjectSerializationNullContext( typeof(ValueTypeParametrizedActivationTestClass), serializationOps, ObjectSerializerProgram.GetOpValueSerializerTypes(serializationOps).ToList().AsReadOnly() ); var getSizeFromValueDelegate = ObjectSerializerInterpreter.InterpretDynamicGetSizeFromValueDelegate( context, typeof(ValueTypeParametrizedActivationTestClass), serializationOps ); var testObject = new ValueTypeParametrizedActivationTestClass(0, 0); Assert.Equal(12, getSizeFromValueDelegate(context, testObject)); }
public void Should_Deserialize_Objects_Containing_Value_Type_Fields_And_Properties_With_Parametrized_Constructor() { var mapping = ObjectSerializationMapper.Create() .FromType <ValueTypePropertyAndFieldWithParametrizedConstructorTestClass>() .PublicProperties() .ParametrizedActivation(ObjectActivationHint.Field("x", "X"), ObjectActivationHint.Field("y", "Y"), ObjectActivationHint.Property("x2", "X2"), ObjectActivationHint.Property("y2", "Y2")) .Map(); var deserializationOps = ObjectSerializerCompiler.CompileDeserializationOps(mapping).ToList().AsReadOnly(); var context = ObjectSerializerInterpreter.InterpretObjectSerializationNullContext( typeof(ValueTypePropertyAndFieldWithParametrizedConstructorTestClass), deserializationOps, ObjectSerializerProgram.GetOpValueSerializerTypes(deserializationOps).ToList().AsReadOnly() ); var deserializeDelegate = ObjectSerializerInterpreter.InterpretDynamicDeserializeDelegate( context, typeof(ValueTypePropertyAndFieldWithParametrizedConstructorTestClass), deserializationOps ); var buffer = new byte[32]; MemoryMapper.WriteInt(10, buffer, 0); MemoryMapper.WriteInt(20, buffer, sizeof(int)); MemoryMapper.WriteInt(30, buffer, sizeof(int) * 2); MemoryMapper.WriteInt(40, buffer, sizeof(int) * 3); var results = (ValueTypePropertyAndFieldWithParametrizedConstructorTestClass)deserializeDelegate(context, buffer, 0); Assert.Equal(10, results.X); Assert.Equal(20, results.Y); Assert.Equal(30, results.X2); Assert.Equal(40, results.Y2); }