Beispiel #1
0
        public bool ExecuteScenario(Scenario scenario, ScenarioContext scenarioContext)
        {
            _eventBus.Raise(new ScenarioStarting {
                Scenario = scenario
            });
            //_scenarioInterpreter.NewScenario();

            var result = ExecutionStatus.Passed;

            foreach (var line in (scenario.Background ?? new ScenarioLine[0]).Union(scenario.Body))
            {
                LineStatus status = _lineExecuter.ExecuteLine(scenario, scenarioContext, line.Text);
                if (LineStatus.Failed == status)
                {
                    result = ExecutionStatus.Failed;
                    break;
                }
                if (LineStatus.Pending == status)
                {
                    result = ExecutionStatus.Pending;
                    break;
                }
            }

            if (!TryToDisposeScenarioContext(scenarioContext))
            {
                result = ExecutionStatus.Failed;
            }

            switch (result)
            {
            case ExecutionStatus.Failed:
            {
                _eventBus.Raise(new ScenarioFailed {
                        Scenario = scenario, ExceptionInfo = _exceptionInfo
                    });
                return(false);
            }

            case ExecutionStatus.Pending:
            {
                _eventBus.Raise(new ScenarioPending {
                        Scenario = scenario
                    });
                return(true);
            }

            default:
            {
                _eventBus.Raise(new ScenarioPassed {
                        Scenario = scenario
                    });
                return(true);
            }
            }
        }
Beispiel #2
0
        protected object[] ExecuteLine(string line)
        {
            if (LastStatus != LineStatus.Passed)
            {
                return(GetContexts());
            }

            LastStatus = LineExecuter.ExecuteLine(CurrentScenario, CurrentScenarioContext, line);

            return(GetContexts());
        }