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>());
            }
        }
Esempio n. 5
0
            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;
                }
            }
Esempio n. 6
0
        private static async Task <IStepResultDescriptor> FinalizeTaskWithDefaultResultDescriptor(Task parent)
        {
            await ScenarioExecutionFlow.WrapScenarioExceptions(parent);

            return(DefaultStepResultDescriptor.Instance);
        }
Esempio n. 7
0
 private static async Task <IStepResultDescriptor> ConvertTask <T>(Task <T> parent) where T : IStepResultDescriptor
 {
     return(await ScenarioExecutionFlow.WrapScenarioExceptions(parent));
 }