public void Comment_should_record_comment_in_currently_executed_step()
 {
     var runner = new TestableBDDRunner(GetType(), MockRepository.GenerateMock<IProgressNotifier>());
     var comment = "abc";
     runner.RunScenario(_ => Commented_step(comment));
     Assert.That(runner.Result.Scenarios.Single().Steps.Single().Comments.ToArray(), Is.EqualTo(new[] { comment }));
 }
        public void Running_scenarios_should_be_thread_safe()
        {
            var subject = new TestableBDDRunner(GetType(), new NoNotifier());

            Enumerable.Range(0, _elementsCount)
            .Select(i => ToScenarioBuilder(subject, i))
            .ToArray()
            .AsParallel()
            .ForAll(b => b.Run(Step_with_comments));

            Assert.That(subject.Result.Scenarios.Count(), Is.EqualTo(_elementsCount));
            for (int i = 0; i < _elementsCount; ++i)
            {
                var expectedName = ToName(i);
                var scenario = subject.Result.Scenarios.FirstOrDefault(s => s.Name == expectedName);
                Assert.That(scenario, Is.Not.Null, "Missing scenario: {0}", i);

                var step = scenario.Steps.FirstOrDefault();
                Assert.That(step, Is.Not.Null, "Missing step for scenario: {0}", i);
                Assert.That(step.Comments.ToArray(), Is.EqualTo(new[] { "comment one", "comment 2" }), "missing comments for scenario: {0}", i);
            }
        }
 private static ICustomizedScenarioBuilder ToScenarioBuilder(TestableBDDRunner runner, int i)
 {
     return runner.NewScenario(ToName(i));
 }
 public void Comment_should_ignore_empty_comments(string comment)
 {
     var runner = new TestableBDDRunner(GetType(), MockRepository.GenerateMock<IProgressNotifier>());
     runner.RunScenario(_ => Commented_step(comment));
     Assert.That(runner.Result.Scenarios.Single().Steps.Single().Comments.ToArray(), Is.Empty);
 }