public void To_DefaultCase_DoesNotThrow() { var mapper = A.Fake <IExtensibleMapper <TSource, TTarget> >(); const string resultString = "foo"; Expression <Func <TSource, string> > fromExpr = s => resultString; var target = new TargetSpec <TSource, TTarget, string>(mapper, fromExpr); var prop = typeof(TTarget).GetProperties( BindingFlags.GetProperty | BindingFlags.SetProperty | BindingFlags.Instance | BindingFlags.Public) .First(p => p.PropertyType == typeof(string)); var propParam = Expression.Parameter(typeof(TTarget)); var propExpr = Expression.Property(propParam, prop); var propCast = Expression.Convert(propExpr, typeof(object)); var propLambda = Expression.Lambda <Func <TTarget, object> >(propExpr, propParam); MappingAction <TSource, TTarget> resultingAction = null; A.CallTo( () => mapper.AddMappingAction( A <string> .Ignored, prop.Name, A <MappingAction <TSource, TTarget> > .Ignored)) .Invokes(a => { resultingAction = (MappingAction <TSource, TTarget>)a.Arguments[2]; }); var res = target.To(propLambda); var sourceObj = new TSource(); var targetObj = new TTarget(); resultingAction(sourceObj, targetObj); prop.GetValue(targetObj, null).ShouldBe(resultString); }
public void To_NotAProperty_Throws() { var mapper = A.Fake <IExtensibleMapper <TSource, TTarget> >(); Expression <Func <TSource, int> > fromExpr = s => 1; var target = new TargetSpec <TSource, TTarget, int>(mapper, fromExpr); Should.Throw <ArgumentException>(() => target.To(t => 1)); }