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); }
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); }
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); }
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); }
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); } }
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); }
public string GetTokensText() { return(LineEndingHelper.NormalizeLineEndings(tokensTextBuilder.ToString())); }