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)); }
public void FixtureSetUp() { _onWorkerOneProcess = Start(GetPathFromConfig("PingApp-worker-exe-file"), WorkerService); _onWorkerTwoProcess = Start(GetPathFromConfig("PongApp-worker-exe-file"), WorkerService); var _pingCallBackHandler = new ExecutorCallbackService(); var _pongCallBackHandler = new ExecutorCallbackService(); _onWorkerOne = OnWorker.FromEndpointConfigNames("PingApp-AssemblyManager", "PingApp-Executor", _pingCallBackHandler); _onWorkerTwo = OnWorker.FromEndpointConfigNames("PongApp-AssemblyManager", "PongApp-Executor", _pongCallBackHandler); Instruction <Tuple <string, string>, bool> openApp1 = (ct, rp, args) => OpenApp(ct, rp, args.Item1); Instruction <Tuple <string, string>, bool> openApp2 = (ct, rp, args) => OpenApp(ct, rp, args.Item2); pingPath = GetPathFromConfig("PingApp-exe-file"); pongPath = GetPathFromConfig("PongApp-exe-file"); var tuple = new Tuple <string, string>(pingPath + @"\PingApp.exe", pongPath + @"\PongApp.exe"); DistrEx.Coordinator.Coordinator.Do(_onWorkerOne.Do(openApp1), _onWorkerTwo.Do(openApp2), tuple); }