private Action GuardAction <TSubject, TResult, TVars, TSequence> ( MainTestContext <TSubject, TResult, TVars, TSequence> context, Action <TSubject> action) { return(() => { try { var stopwatch = Stopwatch.StartNew(); var subject = typeof(TSubject) != typeof(Dummy) ? context.Subject : default(TSubject); action(subject); context.Duration = stopwatch.Elapsed; } catch (Exception exception) { if (!context.ExpectsException) { throw; } context.Exception = exception; } finally { context.ActionExecuted = true; } }); }
public ITestController<TSubject, TResult, TVars, TSequence> CreateMainTestController<TSubject, TResult, TVars, TSequence> ( SuiteProvider suiteProvider, TestProvider provider, Action<ITestController> configurator, ActionContainer<TSubject, TResult> actionContainer, TSequence sequence) { var context = new MainTestContext<TSubject, TResult, TVars, TSequence>(actionContainer, configurator) { Sequence = sequence }; var controller = CreateTestController(suiteProvider, provider, context); var wrappedAction = actionContainer.VoidAction != null ? GuardAction(context, actionContainer.VoidAction) : GuardAction(context, x => context.Result = actionContainer.ResultAction.AssertNotNull()(x)); controller.AddAction<Act>(actionContainer.Text, x => wrappedAction()); configurator(controller); return controller; }
private Action GuardAction<TSubject, TResult, TVars, TSequence> (MainTestContext<TSubject, TResult, TVars, TSequence> context, Action<TSubject> action) { return () => { try { var stopwatch = Stopwatch.StartNew(); action(context.Subject); context.Duration = stopwatch.Elapsed; } catch (Exception exception) { if (!context.ExpectsException) throw; context.Exception = exception; } finally { context.ActionExecuted = true; } }; }