public async Task It_should_wrap_only_first_inner_exception_from_non_void_task() { async Task <bool> Throws <TException>() where TException : Exception, new() { throw new TException(); } async Task <bool> MyTask() { await Task.WhenAll(Throws <InvalidOperationException>(), Throws <NotImplementedException>()); return(true); } try { await ScenarioExecutionFlow.WrapScenarioExceptions(MyTask()); Assert.Fail("Expected exception to be thrown"); } catch (ScenarioExecutionException e) { Assert.That(e.InnerException, Is.TypeOf <InvalidOperationException>()); } }
public async Task It_should_return_task_result(bool expected) { async Task <bool> MyTask() { await Task.Yield(); return(expected); } Assert.That(await ScenarioExecutionFlow.WrapScenarioExceptions(MyTask()), Is.EqualTo(expected)); }
public async Task <IStepResultDescriptor> ExecuteAsync(object context, object[] args) { var task = _invocation.Invoke(); await ScenarioExecutionFlow.WrapScenarioExceptions(task); if (HasResultDescriptor(task)) { return(await ConvertToResultDescriptor(task)); } return(DefaultStepResultDescriptor.Instance); }
public async Task It_should_wrap_exceptions_from_non_void_tasks(NamedTaskCase <bool> taskCase) { try { await ScenarioExecutionFlow.WrapScenarioExceptions(taskCase.Invoke()); Assert.Fail("Expected exception to be thrown"); } catch (ScenarioExecutionException e) { Assert.That(e.InnerException, Is.TypeOf <NotImplementedException>()); } }
public async Task ExecuteAsync() { try { var task = _enumerator.MoveNext() ? _enumerator.Current.Invoke(_target, ExecuteAsync) : _targetInvocation.Invoke(); await ScenarioExecutionFlow.WrapScenarioExceptions(task); } catch (Exception ex) { if (ScenarioExecutionException.TryWrap(ex, out var wrapped)) { throw wrapped; } throw; } }
private static async Task <IStepResultDescriptor> FinalizeTaskWithDefaultResultDescriptor(Task parent) { await ScenarioExecutionFlow.WrapScenarioExceptions(parent); return(DefaultStepResultDescriptor.Instance); }
private static async Task <IStepResultDescriptor> ConvertTask <T>(Task <T> parent) where T : IStepResultDescriptor { return(await ScenarioExecutionFlow.WrapScenarioExceptions(parent)); }