def Generate(parsed, settings): scenarios = parsed[0] feature = parsed[1] featureName = common.FeatureName(feature, settings["cases"]["namespace"]) printer = PrintScenario() featureDesc = printer.FeatureDesc(feature) concat = """ #pragma once // Local headers // Third party headers // Standard library headers #include <iostream> #include <string> namespace [[fullnamespace]] { """[1:] namespace = common.Tokenise(featureName, settings["cases"]["namespace"]) namespace = cpputils.NameSpace(settings, namespace + "::Scenarios") concat = concat.replace("[[fullnamespace]]", namespace.Begin()) for scenario in scenarios: buffer = """ /// Test class scenario class [[featureName]] { public: /// Constructor [[featureName]]() { [[documentation]] } [[steps]] }; """[1:] buffer = buffer.replace( "[[featureName]]", common.Tokenise(scenario.lines, settings["cases"]["class"])) documentation = printer.Documentation(scenario, featureDesc, settings) buffer = buffer.replace("[[documentation]]", documentation) buffer = buffer.replace("[[steps]]", printer.Steps(scenario, settings)) concat += buffer concat = concat[:-2] + """ [[endnamespace]] """.replace("[[endnamespace]]", namespace.End()) return concat
def Example(self, line, arguments): buffer = """ [[testName]] self.[[scenario]]([[arguments]]) """ scenario = common.Tokenise(line, self.settings["cases"]["scenario"]) testName = " ".join([scenario, arguments]) testName = common.Tokenise(testName, self.settings["cases"]["test"]) testName = self.testdecl.format(testName) buffer = buffer.replace("[[testName]]", testName) buffer = buffer.replace("[[scenario]]", scenario) buffer = buffer.replace("[[arguments]]", arguments) return buffer
def Generate(parsed, settings): scenarios = parsed[0] feature = parsed[1] buffer = """ Imports NUnit.Framework Namespace [[rootnamespace]][[namespace]] ' <summary> ' Gherkin DSL feature ' </summary> <TestFixture> Public Class [[className]] [[TestBody]] End Class End Namespace """[1:] namespace = common.FeatureName(feature, settings["cases"]["namespace"]) buffer = buffer.replace("[[rootnamespace]]", settings["rootnamespace"]) buffer = buffer.replace("[[namespace]]", namespace) # Print the class className = common.Tokenise("Feature", settings["cases"]["class"]) buffer = buffer.replace("[[className]]", className) vb = vbutils.VBasic(settings, "Test") testBody = vb.TestBody(scenarios, settings) buffer = buffer.replace("[[TestBody]]", testBody) return buffer
def Generate(parsed, settings): scenarios = parsed[0] feature = parsed[1] lines = "%s%s %s" % (' ', 'Feature:', feature) printer = PrintScenario() featureDesc = printer.Description(lines) concat = """ class Scenarios: """[1:] for scenario in scenarios: buffer = """ class [[Scenario]]: [[comment1]] def __init__(self): [[comment2]] [[documentation]] [[steps]] """ buffer = buffer.replace("[[comment1]]", '"""Test class scenario"""') buffer = buffer.replace("[[comment2]]", '"""Initialiser"""') buffer = buffer.replace("[[steps]]", printer.Steps(scenario, settings)) scenarioName = common.Tokenise(scenario.lines, settings["cases"]["class"]) buffer = buffer.replace("[[Scenario]]", scenarioName) lines = "%s%s %s" % (' ', 'Scenario:', scenario.lines) desc = printer.Description(lines) documentation = featureDesc + "\n" + desc buffer = buffer.replace("[[documentation]]", documentation) concat += buffer return concat.replace("(self, )", "(self)")
def Generate(parsed, settings): scenarios = parsed[0] feature = parsed[1] buffer = """ namespace [[rootnamespace]][[namespace]] { using NUnit.Framework; /// <summary> /// Gherkin DSL feature /// </summary> [TestFixture] public class [[className]] { [[TestBody]] } } """[1:] namespace = common.FeatureName(feature, settings["cases"]["namespace"]) buffer = buffer.replace("[[rootnamespace]]", settings["rootnamespace"]) buffer = buffer.replace("[[namespace]]", namespace) # Print the class className = common.Tokenise("Feature", settings["cases"]["class"]) buffer = buffer.replace("[[className]]", className) cs = csutils.CSharp(settings, "Test") testBody = cs.TestBody(scenarios, settings) buffer = buffer.replace("[[TestBody]]", testBody) return buffer
def ScenarioDecl(self, line, fullArgs, settings): scenarioName = common.Tokenise(line, self.settings["cases"]["scenario"]) decl = """ ' <summary> ' Gherkin DSL scenario ' </summary> Private Shared Sub {0}({1}) """[1:] return decl.format(scenarioName, fullArgs)
def ScenarioDecl(self, line, fullArgs, settings): scenarioName = common.Tokenise(line, self.settings["cases"]["scenario"]) decl = """ /// <summary> /// Gherkin DSL scenario /// </summary> private static void {0}({1}) """[1:] return decl.format(scenarioName, fullArgs)
def Body(self, scenario, steps): buffer = """ scenario = Scenarios.[[className]]() [[steps]] """[1:] lines = scenario.lines.split('\n') className = common.Tokenise(lines[0], self.settings["cases"]["class"]) buffer = buffer.replace("[[className]]", className) buffer = buffer.replace("[[steps]]", steps.rstrip()) return buffer
def ScenarioDecl(self, line, fullArgs, settings): scenarioName = common.Tokenise(line, self.settings["cases"]["scenario"]) decl = """ def {0}({1}): {2} """[1:] if len(fullArgs) > 0: fullArgs = "self, " + fullArgs else: fullArgs = "self" return decl.format(scenarioName, fullArgs, '"""Gherkin DSL scenario"""')
def Body(self, scenario, steps): buffer = """ [[indent]]{ [[indent]] Scenarios::[[className]] scenario; [[steps]] [[indent]]} """[1:] buffer = buffer.replace("[[steps]]", steps.rstrip()) buffer = buffer.replace("[[indent]]", self.indent) lines = scenario.lines.split('\n') className = common.Tokenise(lines[0], self.settings["cases"]["class"]) buffer = buffer.replace("[[className]]", className) return buffer
def Generate(parsed, settings): scenarios = parsed[0] feature = parsed[1] featureName = common.FeatureName(feature, settings["cases"]["class"]) printer = PrintScenario() featureDesc = printer.FeatureDesc(feature) concat = """ namespace [[rootnamespace]][[namespace]].Scenarios { """[1:] namespace = common.FeatureName(feature, settings["cases"]["namespace"]) concat = concat.replace("[[rootnamespace]]", settings["rootnamespace"]) concat = concat.replace("[[namespace]]", namespace) for scenario in scenarios: buffer = """ /// <summary> /// Test class scenario /// </summary> public class [[featureName]] { /// <summary> /// Constructor /// </summary> public [[featureName]]() { [[documentation]] } [[steps]] } """[1:] buffer = buffer.replace( "[[featureName]]", common.Tokenise(scenario.lines, settings["cases"]["class"])) documentation = printer.Documentation(scenario, featureDesc, settings) buffer = buffer.replace("[[documentation]]", documentation) buffer = buffer.replace("[[steps]]", printer.Steps(scenario, settings)) concat += buffer concat = concat[:-2] + """ } """ return concat
def Generate(parsed, settings): scenarios = parsed[0] feature = parsed[1] featureName = common.FeatureName(feature, settings["cases"]["class"]) printer = PrintScenario() featureDesc = printer.FeatureDesc(feature) concat = """ Namespace [[rootnamespace]][[namespace]].Scenarios """[1:] namespace = common.FeatureName(feature, settings["cases"]["namespace"]) concat = concat.replace("[[rootnamespace]]", settings["rootnamespace"]) concat = concat.replace("[[namespace]]", namespace) for scenario in scenarios: buffer = """ ' <summary> ' Test class scenario ' </summary> Public Class [[featureName]] ' <summary> ' Constructor ' </summary> Public Sub New() [[documentation]] End Sub [[steps]] End Class """[1:] buffer = buffer.replace( "[[featureName]]", common.Tokenise(scenario.lines, settings["cases"]["class"])) documentation = printer.Documentation(scenario, featureDesc, settings) buffer = buffer.replace("[[documentation]]", documentation) buffer = buffer.replace("[[steps]]", printer.Steps(scenario, settings)) concat += buffer concat = concat[:-2] + """ End Namespace """ return concat
def Generate(parsed, settings): scenarios = parsed[0] feature = parsed[1] featureName = common.FeatureName(feature, settings["cases"]["namespace"]) namespace = common.Tokenise(featureName, settings["cases"]["namespace"]) buffer = """ // Other bespoke headers #include "[[scenarios file]]" // Third party headers #include "gtest/gtest.h" namespace [[fullnamespace]] { class TestFixture : public ::testing::Test { protected: void SetUp() override { } void TearDown() override { } }; [[TestBody]] [[endnamespace]] """[1:] buffer = buffer.replace("[[scenarios file]]", settings["scenarios file"]) ns = cpputils.NameSpace(settings, namespace) buffer = buffer.replace("[[fullnamespace]]", ns.Begin()) buffer = buffer.replace("[[endnamespace]]", ns.End()) decl = " static void {0}({1})\n" testdecl = " TEST_F(TestFixture, {0})\n" cpp = cpputils.Cpp(settings, decl, testdecl, " ") testBody = cpp.TestBody(scenarios, settings) buffer = buffer.replace("[[TestBody]]", testBody) return buffer
def Generate(parsed, settings): scenarios = parsed[0] feature = parsed[1] buffer = """ // Other bespoke headers #include "[[scenarios file]]" // Third party headers #include "CppUnitTest.h" namespace [[fullnamespace]] { TEST_CLASS([[className]]) { [[TestBody]] }; [[endnamespace]] """[1:] buffer = buffer.replace("[[scenarios file]]", settings["scenarios file"]) namespace = common.FeatureName(feature, settings["cases"]["namespace"]) namespace = cpputils.NameSpace(settings, namespace) buffer = buffer.replace("[[fullnamespace]]", namespace.Begin()) buffer = buffer.replace("[[endnamespace]]", namespace.End()) # Print the class featureName = common.FeatureName(feature, settings["cases"]["class"]) buffer = buffer.replace("[[featureName]]", featureName) className = common.Tokenise("Feature", settings["cases"]["class"]) buffer = buffer.replace("[[className]]", className) decl = " static void {0}({1})\n" testdecl = " TEST_METHOD({0})\n" cpp = cpputils.Cpp(settings, decl, testdecl, " ") testBody = cpp.TestBody(scenarios, settings) buffer = buffer.replace("[[TestBody]]", testBody) return buffer
def TestDecl(self, line): scenarioName = common.Tokenise(line, self.settings["cases"]["test"]) return self.testdecl.format(scenarioName)
def ThenItHasCorresponding(self, output): """Gherkin DSL step""" out = common.Tokenise(self.arg, "snake") if out != output: print("\n{} isn't {}".format(out, output)) self.assertEqual(out, output)
def ScenarioDecl(self, line, fullArgs, settings): scenarioName = common.Tokenise(line, self.settings["cases"]["scenario"]) return self.decl.format(scenarioName, fullArgs)