From ec45a4fab92edc8370d280ca54f0a70eb6580223 Mon Sep 17 00:00:00 2001 From: AliReza Date: Sat, 21 Oct 2023 18:42:38 +0200 Subject: [PATCH] test: add parser and lexer error message tests --- test/Gridify.Tests/ErrorMessageTests.cs | 28 ++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/test/Gridify.Tests/ErrorMessageTests.cs b/test/Gridify.Tests/ErrorMessageTests.cs index a71e4aea..287fcd13 100644 --- a/test/Gridify.Tests/ErrorMessageTests.cs +++ b/test/Gridify.Tests/ErrorMessageTests.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Gridify.Syntax; using Xunit; using Xunit.Abstractions; @@ -35,7 +36,32 @@ public void FilteringError_WhenInvalidCharacterDetected_ShouldReturnErrorWithCha // assert var exception = Assert.Throws(act); _testOutputHelper.WriteLine(exception.Message); - Assert.Contains($"at index {index.ToString()}", exception.Message); + Assert.Contains($", at index {index.ToString()}", exception.Message); Assert.Contains("bad character input", exception.Message); } + + [Theory] + [InlineData("test=(1234)", 5, SyntaxKind.OpenParenthesisToken, SyntaxKind.ValueToken)] + [InlineData("test(=123", 4, SyntaxKind.OpenParenthesisToken, SyntaxKind.Operator)] + [InlineData("(test=2", 7, SyntaxKind.End, SyntaxKind.CloseParenthesis)] + [InlineData("test=,", 6, SyntaxKind.End, SyntaxKind.FieldToken)] // test=, is valid if there is another expression after operator + [InlineData("test=2,2", 7, SyntaxKind.BadToken, SyntaxKind.FieldToken)] + public void FilteringError_WhenInvalidTokenDetected_ShouldReturnErrorWithExpectedToken( + string filter, + int index, + SyntaxKind unexpectedToken, + SyntaxKind expectedToken) + { + // arrange + var dataSource = new List().AsQueryable(); + var gq = new GridifyQuery() { Filter = filter }; + + // act + var act = () => dataSource.ApplyFiltering(gq); + + // assert + var exception = Assert.Throws(act); + _testOutputHelper.WriteLine(exception.Message); + Assert.Contains($"Unexpected token <{unexpectedToken}> at index {index}, expected <{expectedToken}>", exception.Message); + } }