public void ShouldNotParseWithoutCases() { // Arrange var grammar = new CicodeGrammar(); var parser = new Parser(grammar); var sourceCode = @" FUNCTION A() SELECT CASE a END SELECT END "; // Act var parseTree = parser.Parse(sourceCode); // Assert Assert.IsNotNull(parseTree); Assert.IsTrue(parseTree.HasErrors()); // A parser error is expected at the end of line 4 because the expected list of cases which is missing Assert.AreEqual <int>(1, parseTree.ParserMessages .Where(m => m.Location.Line == 4) .Where(m => m.ParserState.ExpectedTerminals.First().Name == "CASE") .Count()); }
public void ShouldNotParseWithoutCases() { // Arrange var grammar = new CicodeGrammar(); var parser = new Parser(grammar); var sourceCode = @" FUNCTION A() SELECT CASE a END SELECT END "; // Act var parseTree = parser.Parse(sourceCode); // Assert Assert.IsNotNull(parseTree); Assert.IsTrue(parseTree.HasErrors()); // A parser error is expected at the end of line 4 because the expected list of cases which is missing Assert.AreEqual<int>(1, parseTree.ParserMessages .Where(m => m.Location.Line == 4) .Where(m => m.ParserState.ExpectedTerminals.First().Name == "CASE") .Count()); }
public void ShouldNotParseCaseElseWhenNotAtTheEnd() { // Arrange var grammar = new CicodeGrammar(); var parser = new Parser(grammar); var sourceCode = @" FUNCTION A() SELECT CASE a CASE 1 A(); CASE ELSE A(); CASE 1 A(); END SELECT END "; // Act var parseTree = parser.Parse(sourceCode); // Assert Assert.IsNotNull(parseTree); Assert.IsTrue(parseTree.HasErrors()); // A parser error is expected at line 7 because of the CASE ELSE clause which is not at then end of the case list Assert.AreEqual <int>(1, parseTree.ParserMessages.Where(m => m.Location.Line == 7).Count()); }
public void ShouldNotParseCaseElseWhenNotAtTheEnd() { // Arrange var grammar = new CicodeGrammar(); var parser = new Parser(grammar); var sourceCode = @" FUNCTION A() SELECT CASE a CASE 1 A(); CASE ELSE A(); CASE 1 A(); END SELECT END "; // Act var parseTree = parser.Parse(sourceCode); // Assert Assert.IsNotNull(parseTree); Assert.IsTrue(parseTree.HasErrors()); // A parser error is expected at line 7 because of the CASE ELSE clause which is not at then end of the case list Assert.AreEqual<int>(1, parseTree.ParserMessages.Where(m => m.Location.Line == 7).Count()); }
protected void ParseAndAssertNoErrors(string sourceCode) { var grammar = new CicodeGrammar(); var parser = new Parser(grammar); var parseTree = parser.Parse(sourceCode); Assert.IsNotNull(parseTree); Assert.IsFalse(parseTree.HasErrors(), GetParserMessages(parseTree)); }
/// <summary> /// Load sample program from resources, run it and check its output /// </summary> protected void ParseResourceAndAssertNoErrors(string programResourceName) { var grammar = new CicodeGrammar(); var parser = new Parser(grammar); var parseTree = parser.Parse(LoadResourceText(programResourceName)); Assert.IsNotNull(parseTree); Assert.IsFalse(parseTree.HasErrors(), GetParserMessages(parseTree)); }
/// <summary> /// Load sample program from resources, run it and check its output /// </summary> void RunSampleAndCompareResults(string programResourceName, string outputResourceName) { var grammar = new CicodeGrammar(); var parser = new Parser(grammar); var parseTree = parser.Parse(LoadResourceText(programResourceName)); Assert.IsNotNull(parseTree); Assert.IsFalse(parseTree.HasErrors()); string result = ""; //grammar.RunSample(new RunSampleArgs(parser.Language, null, parseTree)); Assert.IsNotNull(result); Assert.AreEqual(LoadResourceText(outputResourceName), result); }