Exemplo n.º 1
0
 public ScenarioContext(StoryContext parentContext, IEnumerable <Type> implementingTypes,
                        IDictionary <Type, object> outerContexts)
 {
     _cache            = new Dictionary <Type, object>(outerContexts);
     _parentContext    = parentContext;
     ImplementingTypes = implementingTypes;
 }
        public string GenerateFixture(Story story, StoryContext context)
        {
            var tests = new StringBuilder();

            var contextSet = new TestContextSet();
            IEnumerable<string> namespaces = new string[0];

            foreach (var scenario in story.Scenarios)
            {
                foreach (var s in _preprocessor.Preprocess(scenario))
                {
                    NUnitTest test = MethodGenerator.GetTestFromScenario(s, context);
                    tests.Append("        " + test.Body);
                    tests.AppendLine();
                    contextSet.AddRange(test.ContextTypes);
                    namespaces = namespaces.Union(test.Namespaces).Distinct();
                }
            }

            var usingStatements = namespaces.Select(x => string.Format("using {0};", x));
            var usings = string.Join("\r\n", usingStatements.ToArray());

            var writeStoryToConsole = "Console.WriteLine(@\"" + story.Summary.Replace("\"", "\"\"") + "\r\n" + " \");";
            const string ns = "StorEvilSpecifications";
            var categories = string.Join("", (story.Tags ?? new string[0]).Select(t => string.Format(@"[Category(""{0}"")]", t)).ToArray());
            return string.Format(FixtureFormat, ns, usings, GetFixtureName(story), tests, writeStoryToConsole, categories, story.Id);
        }
Exemplo n.º 3
0
 public ScenarioContext(StoryContext parentContext, IEnumerable<Type> implementingTypes,
     IDictionary<Type, object> outerContexts)
 {
     _cache = new Dictionary<Type, object>(outerContexts);
     _parentContext = parentContext;
     ImplementingTypes = implementingTypes;
 }
        public TestImplementation BuildImplementation(Scenario scenario, StoryContext context)
        {
            var impl = new TestImplementation();

            foreach (var line in scenario.Body)
            {
                impl.CodeBuilder.Append(BuildConsoleWriteScenarioLine(line.Text));
                impl.CodeBuilder.AppendLine("#line " + line.LineNumber);
                var lineVariations = GenerateLineVariations(line.Text);

                ScenarioLineImplementation functionLine = null;
                foreach (var variation in lineVariations)
                {
                    if (null != (functionLine = BuildCodeFromScenarioLine(variation, context)))
                        break;
                }

                if (functionLine == null)
                {
                    impl.CodeBuilder.AppendLine(
                        @"            Assert.Ignore(@""Could not interpret: '" + line.Text + "'\");");
                    impl.CodeBuilder.AppendLine("#line hidden");
                    break;
                }

                impl.Contexts.Add(functionLine.Context);

                impl.CodeBuilder.AppendLine(functionLine.Code);
                impl.CodeBuilder.AppendLine("#line hidden");
                impl.Namespaces = impl.Namespaces.Union(functionLine.Namespaces).Distinct();
            }

            AppendDisposeCalls(impl.CodeBuilder, impl.Contexts);
            return impl;
        }
Exemplo n.º 5
0
        protected void BeforeAll()
        {
            _eventBus = StorEvilEvents.Bus;

            _storyContext = TestSession.SessionContext(GetType().Assembly.Location).GetContextForStory();
            _interpreter = new StandardScenarioInterpreter();
            _scenarioLineExecuter = new ScenarioLineExecuter(_interpreter, _eventBus);
        }
Exemplo n.º 6
0
        public void SetupContext()
        {
            var mapper = new SessionContext();

            mapper.AddContext <TestMappingContext>();
            mapper.AddContext <DependentMappingContext>();
            StoryContext    = mapper.GetContextForStory();
            ScenarioContext = StoryContext.GetScenarioContext();
        }
 protected override void Execute(Story story, IEnumerable<Scenario> scenarios, StoryContext context)
 {
     using (var remoteHandler = _factory.GetHandler(story, scenarios, ResultListener))
     {
         var handler = remoteHandler.Handler;
         handler.HandleStory(story);
         Result += handler.GetResult();
     }
 }
        public virtual NUnitTest GetTestFromScenario(Scenario scenario, StoryContext context)
        {
            TestImplementation impl = _implementationBuilder.BuildImplementation(scenario, context);

            string declarations = BuildContextDeclarations(impl.Contexts);
            var name = BuildMethodName(scenario);
            var categories = BuildCategories(scenario);

            var body = BuildTestBody(impl.CodeBuilder, name, declarations, categories);

            return new NUnitTest(name, body, impl.Contexts, impl.Namespaces);
        }
Exemplo n.º 9
0
        protected override void Execute(Story story, IEnumerable<Scenario> scenariosMatchingFilter, StoryContext context)
        {
            int failed = 0;
            foreach (var scenario in scenariosMatchingFilter)
            {
                using (var scenarioContext = context.GetScenarioContext())
                {
                    if (!_scenarioRunner.ExecuteScenario(scenario, scenarioContext))
                        failed++;
                }
            }

            Result.Failed = Result.Failed + failed;
        }
        private ScenarioLineImplementation BuildCodeFromScenarioLine(string line, StoryContext storyContext)
        {
            var scenarioContext = storyContext.GetScenarioContext();

            LineInfo invocation = null;

            invocation = _invocationGenerator.MapMethod(scenarioContext, line);
            if (invocation == null)
                return null;

            var chosenType = invocation.ImplementingType;

            return new ScenarioLineImplementation("context" + chosenType.Name + invocation.Code + ";", chosenType,
                                                  "context" + chosenType.Name, invocation.Namespaces);
        }
Exemplo n.º 11
0
 public void SetupContext()
 {
     var mapper = new SessionContext();
     mapper.AddContext<TestMappingContext>();
     mapper.AddContext<DependentMappingContext>();
     StoryContext = mapper.GetContextForStory();
     ScenarioContext = StoryContext.GetScenarioContext();
 }
Exemplo n.º 12
0
 public string GenerateFixture(Story story, StoryContext context)
 {
     return new TestFixtureClassGenerator().Generate(story, "StorEvilSpecs");
 }
Exemplo n.º 13
0
 public StoryContext GetContextForStory()
 {
     return _context ?? (_context = new StoryContext(this));
 }
Exemplo n.º 14
0
 public FakeSessionContext(StoryContext context)
 {
     _context = context;
 }
Exemplo n.º 15
0
        protected IDisposable StartScenario(Story story, Scenario scenario)
        {
            _eventBus.Raise(new ScenarioStarting {Scenario = scenario});
            if (CurrentStoryContext == null)
                CurrentStoryContext = _context.GetContextForStory();

            CurrentScenarioContext = CurrentStoryContext.GetScenarioContext();
            CurrentScenario = scenario;
            LastStatus = LineStatus.Passed;
            //ScenarioInterpreter.NewScenario();

            return CurrentScenarioContext;
        }
Exemplo n.º 16
0
 protected abstract void Execute(Story story, IEnumerable<Scenario> scenariosMatchingFilter, StoryContext context);
 public FakeStoryContextFactory(StoryContext context)
 {
     _context = context;
 }