protected override MessageHolder Test(Mode mode, int errorsExpected, LNodePrinterOptions printerOptions, string text, params LNode[] expected) { var messages = new MessageHolder(); var les3 = Les3LanguageService.Value; var results = les3.Parse(text, messages, mode == Mode.Expr ? ParsingMode.Expressions : ParsingMode.Statements, true).ToList(); if (messages.List.Count != System.Math.Max(errorsExpected, 0)) { messages.WriteListTo(ConsoleMessageSink.Value); int errorCount = messages.List.Count(msg => msg.Severity >= Severity.Error); AreEqual(errorsExpected, errorCount, "Error count was {0} for «{1}»", errorCount, text); // fail } for (int i = 0; i < expected.Length; i++) { LNode expect = expected[i], actual = results.TryGet(i, null); if (!expect.Equals(actual, LNode.CompareMode.TypeMarkers)) { var options = new Les3PrinterOptions { PrintTriviaExplicitly = true, IndentString = " " }; AreEqual(les3.Print(expect, null, null, options), les3.Print(actual, null, null, options)); AreEqual(expect, actual); Fail("{0} has a different type marker than {1}", expect, actual); } } AreEqual(expected.Length, results.Count, "Got more result nodes than expected"); return(messages); }
protected override MessageHolder Test(Mode mode, int errorsExpected, string text, params LNode[] expected) { var messages = new MessageHolder(); var results = Les3LanguageService.Value.Parse(text, messages, mode == Mode.Expr ? ParsingMode.Expressions : ParsingMode.Statements, true).ToList(); if (messages.List.Count != System.Math.Max(errorsExpected, 0)) { messages.WriteListTo(ConsoleMessageSink.Value); AreEqual(errorsExpected, messages.List.Count, "Error count was {0} for «{1}»", messages.List.Count, text); // fail } for (int i = 0; i < expected.Length; i++) AreEqual(expected[i], results.TryGet(i, null)); AreEqual(expected.Length, results.Count, "Got more result nodes than expected"); return messages; }
protected override void Test(bool exprMode, int errorsExpected, string str, params LNode[] expected) { var messages = new MessageHolder(); var results = LesLanguageService.Value.Parse(str, messages, exprMode ? ParsingService.Exprs : ParsingService.Stmts); for (int i = 0; i < expected.Length; i++) { var result = results[i]; // this is when parsing actually occurs AreEqual(expected[i], result); } AreEqual(expected.Length, results.Count); if (messages.List.Count != System.Math.Max(errorsExpected, 0)) { messages.WriteListTo(MessageSink.Console); AreEqual(errorsExpected, messages.List.Count); // fail } }
protected override MessageHolder Test(Mode mode, int errorsExpected, string str, params LNode[] expected) { var messages = new MessageHolder(); var results = Les2LanguageService.Value.Parse(str, messages, mode == Mode.Expr ? ParsingMode.Expressions : ParsingMode.Statements, true).ToList(); if (messages.List.Count != System.Math.Max(errorsExpected, 0)) { messages.WriteListTo(ConsoleMessageSink.Value); AreEqual(errorsExpected, messages.List.Count, "Wrong error count for {0}", str); // fail } for (int i = 0; i < expected.Length; i++) { AreEqual(expected[i], results[i]); } AreEqual(expected.Length, results.Count); return(messages); }
protected virtual void Stmt(int errorsExpected, string str, params LNode[] expected) { var messages = new MessageHolder(); var results = LesLanguageService.Value.Parse(str, messages); for (int i = 0; i < expected.Length; i++) { var result = results[i]; // this is where parsing actually occurs AreEqual(expected[i], result); } AreEqual(expected.Length, results.Count); if (messages.List.Count != errorsExpected) { messages.WriteListTo(MessageSink.Console); AreEqual(errorsExpected, messages.List.Count); // fail } }
protected override MessageHolder Test(Mode mode, int errorsExpected, string text, params LNode[] expected) { var messages = new MessageHolder(); var results = Les3LanguageService.Value.Parse(text, messages, mode == Mode.Expr ? ParsingMode.Expressions : ParsingMode.Statements, true).ToList(); if (messages.List.Count != System.Math.Max(errorsExpected, 0)) { messages.WriteListTo(ConsoleMessageSink.Value); AreEqual(errorsExpected, messages.List.Count, "Error count was {0} for «{1}»", messages.List.Count, text); // fail } for (int i = 0; i < expected.Length; i++) { AreEqual(expected[i], results.TryGet(i, null)); } AreEqual(expected.Length, results.Count, "Got more result nodes than expected"); return(messages); }
protected override MessageHolder Test(Mode mode, int errorsExpected, string str, params LNode[] expected) { var messages = new MessageHolder(); var results = LesLanguageService.Value.Parse(str, messages, mode == Mode.Expr ? ParsingService.Exprs : ParsingService.Stmts).ToList(); for (int i = 0; i < expected.Length; i++) AreEqual(expected[i], results[i]); AreEqual(expected.Length, results.Count); if (messages.List.Count != System.Math.Max(errorsExpected, 0)) { messages.WriteListTo(MessageSink.Console); AreEqual(errorsExpected, messages.List.Count); // fail } return messages; }