示例#1
0
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
示例#2
0
    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
示例#3
0
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
示例#4
0
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)")
示例#5
0
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
示例#6
0
    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)
示例#7
0
    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)
示例#8
0
    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
示例#9
0
    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"""')
示例#10
0
    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
示例#11
0
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
示例#12
0
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
示例#13
0
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
示例#14
0
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
示例#15
0
 def TestDecl(self, line):
     scenarioName = common.Tokenise(line, self.settings["cases"]["test"])
     return self.testdecl.format(scenarioName)
示例#16
0
 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)
示例#17
0
 def ScenarioDecl(self, line, fullArgs, settings):
     scenarioName = common.Tokenise(line, self.settings["cases"]["scenario"])
     return self.decl.format(scenarioName, fullArgs)