public void Can_Map_Top_Value_To_Deep_Value_Between_Objects() { var mapping = new TypeBindingBuilder <Source, Target>() .Bind(t => t.Nested.FlatValue, s => s.FlatValue) .BuildBinding() .BuildMapping(); var source = new Source { FlatValue = "Hello World" }; var target = new Target(); var sourceReader = new ObjectDataModelReader <Source>(source); var targetWriter = new ObjectDataModelWriter <Target>(target); mapping.Run(sourceReader, targetWriter); Assert.AreEqual(source.FlatValue, target.Nested.FlatValue); }
public void Converts_Field_Values() { var mapping = new TypeBindingBuilder <Source, Target>() .Bind(t => t.ValueType, s => s.ValueType, value => value + 10) .BuildBinding() .BuildMapping(); var source = new Source { ValueType = 10 }; var target = new Target(); var sourceReader = new ObjectDataModelReader <Source>(source); var targetWriter = new ObjectDataModelWriter <Target>(target); mapping.Run(sourceReader, targetWriter); Assert.AreEqual(source.ValueType + 10, target.ValueType); }
public void Can_Map_With_Nulls_And_Leave_Defaults() { var mapping = new TypeBindingBuilder <Source, Target>() .Bind(t => t.Nested.FlatValue, s => s.Nested.FlatValue) // will be null when mapped .Bind(t => t.ValueType, s => s.ValueType) // will be mapped after the null is hit .BuildBinding() .BuildMapping(); var source = new Source { ValueType = 5 }; var target = new Target(); var sourceReader = new ObjectDataModelReader <Source>(source); var targetWriter = new ObjectDataModelWriter <Target>(target); mapping.Run(sourceReader, targetWriter); Assert.IsNull(target.Nested); Assert.AreEqual(source.ValueType, target.ValueType); }
public void Ignores_Conversion_Failure() { var mapping = new TypeBindingBuilder <Source, Target>() .Bind( t => t.ValueType, s => s.ValueType, (int @in, out int @out) => { @out = @in; return(false); } ) .BuildBinding() .BuildMapping(); var source = new Source { ValueType = 10 }; var target = new Target(); var sourceReader = new ObjectDataModelReader <Source>(source); var targetWriter = new ObjectDataModelWriter <Target>(target); mapping.Run(sourceReader, targetWriter); Assert.AreEqual(default, target.ValueType);