示例#1
0
        public string FormatAst(Feature feature)
        {
            var result = new StringBuilder();

            FormatFeature(feature, result);
            return(LineEndingHelper.NormalizeLineEndings(result.ToString()));
        }
        public void TestChangeDefaultLanguage()
        {
            var tokenMatcher           = new TokenMatcher("no");
            var parser                 = new Parser(new AstBuilder <GherkinDocument>());
            var jsonSerializerSettings = new JsonSerializerSettings();

            jsonSerializerSettings.Formatting        = Formatting.Indented;
            jsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore;

            var parsingResult = parser.Parse(new TokenScanner(new StringReader("Egenskap: i18n support")), tokenMatcher);
            var astText       = LineEndingHelper.NormalizeLineEndings(JsonConvert.SerializeObject(parsingResult, jsonSerializerSettings));

            string expected = LineEndingHelper.NormalizeLineEndings(@"{
  ""Feature"": {
    ""Tags"": [],
    ""Location"": {
      ""Line"": 1,
      ""Column"": 1
    },
    ""Language"": ""no"",
    ""Keyword"": ""Egenskap"",
    ""Name"": ""i18n support"",
    ""Children"": []
  },
  ""Comments"": []
}");

            Assert.AreEqual(expected, astText);
        }
        public void TestSuccessfulAstBuilding(string testFeatureFile)
        {
            var featureFileFolder = Path.GetDirectoryName(testFeatureFile);

            Debug.Assert(featureFileFolder != null);
            var expectedAstFile = testFeatureFile + ".ast";

            var astText         = AstGenerator.AstGenerator.GenerateAst(testFeatureFile);
            var expectedAstText = LineEndingHelper.NormalizeLineEndings(File.ReadAllText(expectedAstFile));

            Assert.AreEqual(expectedAstText, astText);
        }
示例#4
0
        public void TestSuccessfulTokenMatching(string testFeatureFile)
        {
            var featureFileFolder = Path.GetDirectoryName(testFeatureFile);

            Debug.Assert(featureFileFolder != null);
            var expectedTokensFile = testFeatureFile + ".tokens";

            var tokensText         = TokensGenerator.TokensGenerator.GenerateTokens(testFeatureFile);
            var expectedTokensText = LineEndingHelper.NormalizeLineEndings(File.ReadAllText(expectedTokensFile));

            Assert.AreEqual(expectedTokensText, tokensText);
        }
        public void TestSuccessfulTokenMatching(string testFeatureFile)
        {
            var fullPathToTestFeatureFile = Path.Combine(TestFileProvider.GetTestFileFolder("good"), testFeatureFile);
            var featureFileFolder         = Path.GetDirectoryName(fullPathToTestFeatureFile);

            Debug.Assert(featureFileFolder != null);
            var expectedTokensFile = fullPathToTestFeatureFile + ".tokens";

            var tokensText         = Tokens.TokensGenerator.GenerateTokens(fullPathToTestFeatureFile);
            var expectedTokensText = LineEndingHelper.NormalizeLineEndings(File.ReadAllText(expectedTokensFile));

            Assert.Equal(expectedTokensText, tokensText);
        }
        public void TestMultipleFeatures()
        {
            var tokenMatcher           = new TokenMatcher();
            var parser                 = new Parser(new AstBuilder <GherkinDocument>());
            var jsonSerializerSettings = new JsonSerializerSettings();

            jsonSerializerSettings.Formatting        = Formatting.Indented;
            jsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore;

            var parsingResult1 = parser.Parse(new TokenScanner(new StringReader("Feature: Test")), tokenMatcher);
            var astText1       = LineEndingHelper.NormalizeLineEndings(JsonConvert.SerializeObject(parsingResult1, jsonSerializerSettings));
            var parsingResult2 = parser.Parse(new TokenScanner(new StringReader("Feature: Test2")), tokenMatcher);
            var astText2       = LineEndingHelper.NormalizeLineEndings(JsonConvert.SerializeObject(parsingResult2, jsonSerializerSettings));

            string expected1 = LineEndingHelper.NormalizeLineEndings(@"{
  ""Feature"": {
    ""Tags"": [],
    ""Location"": {
      ""Line"": 1,
      ""Column"": 1
    },
    ""Language"": ""en"",
    ""Keyword"": ""Feature"",
    ""Name"": ""Test"",
    ""Children"": []
  },
  ""Comments"": []
}");
            string expected2 = LineEndingHelper.NormalizeLineEndings(@"{
  ""Feature"": {
    ""Tags"": [],
    ""Location"": {
      ""Line"": 1,
      ""Column"": 1
    },
    ""Language"": ""en"",
    ""Keyword"": ""Feature"",
    ""Name"": ""Test2"",
    ""Children"": []
  },
  ""Comments"": []
}");

            Assert.AreEqual(expected1, astText1);
            Assert.AreEqual(expected2, astText2);
        }
示例#7
0
        public void TestSuccessfulAstBuilding(string testFeatureFile)
        {
            var featureFileFolder = Path.GetDirectoryName(testFeatureFile);

            Debug.Assert(featureFileFolder != null);
            var expectedAstFile = testFeatureFile + ".ast";

            var parser        = new Parser();
            var parsingResult = (Feature)parser.Parse(testFeatureFile);

            Assert.IsNotNull(parsingResult);

            var astFormatter    = new TestAstFormatter();
            var astText         = astFormatter.FormatAst(parsingResult);
            var expectedAstText = LineEndingHelper.NormalizeLineEndings(File.ReadAllText(expectedAstFile));

            Assert.AreEqual(expectedAstText, astText);
        }
示例#8
0
        public void TestSuccessfulTokenMatching(string testFeatureFile)
        {
            var featureFileFolder = Path.GetDirectoryName(testFeatureFile);

            Debug.Assert(featureFileFolder != null);
            var expectedTokensFile = testFeatureFile + ".tokens";

            var parser = new Parser <object>();
            var tokenFormatterBuilder = new TokenFormatterBuilder();

            using (var reader = new StreamReader(testFeatureFile))
                parser.Parse(new TokenScanner(reader), new TokenMatcher(), tokenFormatterBuilder);

            var tokensText = tokenFormatterBuilder.GetTokensText();

            var expectedTokensText = LineEndingHelper.NormalizeLineEndings(File.ReadAllText(expectedTokensFile));

            Assert.AreEqual(expectedTokensText, tokensText);
        }
示例#9
0
        public void TestParserErrors(string testFeatureFile)
        {
            var featureFileFolder = Path.GetDirectoryName(testFeatureFile);

            Debug.Assert(featureFileFolder != null);
            var expectedErrorsFile = testFeatureFile + ".errors";

            try
            {
                var parser = new Parser();
                parser.Parse(testFeatureFile);
                Assert.Fail("ParserException expected");
            }
            catch (ParserException parserException)
            {
                var errorsText = LineEndingHelper.NormalizeLineEndings(parserException.Message);

                var expectedErrorsText = LineEndingHelper.NormalizeLineEndings(File.ReadAllText(expectedErrorsFile));
                Assert.AreEqual(expectedErrorsText, errorsText);
            }
        }
示例#10
0
        public void TestFeatureAfterParseError()
        {
            var tokenMatcher           = new TokenMatcher();
            var parser                 = new Parser(new AstBuilder <Feature>());
            var jsonSerializerSettings = new JsonSerializerSettings();

            jsonSerializerSettings.Formatting        = Formatting.Indented;
            jsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore;

            try
            {
                parser.Parse(new TokenScanner(new StringReader(@"# a comment
Feature: Foo
  Scenario: Bar
    Given x
      ```
      unclosed docstring")), tokenMatcher);
                Assert.Fail("ParserException expected");
            }
            catch (ParserException)
            {
            }
            var parsingResult2 = parser.Parse(new TokenScanner(new StringReader(@"Feature: Foo
  Scenario: Bar
    Given x
      """"""
      closed docstring
      """"""")), tokenMatcher);
            var astText2       = LineEndingHelper.NormalizeLineEndings(JsonConvert.SerializeObject(parsingResult2, jsonSerializerSettings));

            string expected2 = LineEndingHelper.NormalizeLineEndings(@"{
  ""Tags"": [],
  ""Location"": {
    ""Line"": 1,
    ""Column"": 1
  },
  ""Language"": ""en"",
  ""Keyword"": ""Feature"",
  ""Name"": ""Foo"",
  ""ScenarioDefinitions"": [
    {
      ""Tags"": [],
      ""Location"": {
        ""Line"": 2,
        ""Column"": 3
      },
      ""Keyword"": ""Scenario"",
      ""Name"": ""Bar"",
      ""Steps"": [
        {
          ""Location"": {
            ""Line"": 3,
            ""Column"": 5
          },
          ""Keyword"": ""Given "",
          ""Text"": ""x"",
          ""Argument"": {
            ""Location"": {
              ""Line"": 4,
              ""Column"": 7
            },
            ""ContentType"": """",
            ""Content"": ""closed docstring""
          }
        }
      ]
    }
  ],
  ""Comments"": []
}");

            Assert.AreEqual(expected2, astText2);
        }
示例#11
0
 public string GetTokensText()
 {
     return(LineEndingHelper.NormalizeLineEndings(tokensTextBuilder.ToString()));
 }