예제 #1
0
        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);
        }
예제 #2
0
		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;
		}
예제 #3
0
		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
			}
		}
예제 #4
0
        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);
        }
예제 #5
0
        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
            }
        }
예제 #6
0
        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);
        }
예제 #7
0
		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;
		}