|
1 | | -#define ENABLE_TRACING |
| 1 | +#define ENABLE_TRACING |
2 | 2 |
|
3 | 3 | using System; |
4 | 4 | using System.Threading.Tasks; |
@@ -516,6 +516,62 @@ public async Task CanGenerateSingleQueryAsync() |
516 | 516 | await new AssignOperationTypeVisitor().AcceptAsync(result, null); |
517 | 517 | _logger.LogInformation("{Result}", await DebugQueryVisitor.RunAsync(result)); |
518 | 518 | } |
| 519 | + |
| 520 | + [Theory] |
| 521 | + [InlineData("term~", null, false, "")] |
| 522 | + [InlineData("term~1", null, false, "1")] |
| 523 | + [InlineData("roam~0.8", null, false, "0.8")] |
| 524 | + [InlineData("\"phrase query\"~2", null, true, "2")] |
| 525 | + [InlineData("field:term~", "field", false, "")] |
| 526 | + [InlineData("field:\"phrase\"~3", "field", true, "3")] |
| 527 | + public void Parse_WithProximityModifier_SetsProximityOnTermNode(string query, string expectedField, bool expectedQuoted, string expectedProximity) |
| 528 | + { |
| 529 | + var parser = new LuceneQueryParser(); |
| 530 | + var result = parser.Parse(query); |
| 531 | + |
| 532 | + _logger.LogInformation("{Result}", DebugQueryVisitor.Run(result)); |
| 533 | + string generatedQuery = GenerateQueryVisitor.Run(result); |
| 534 | + Assert.Equal(query, generatedQuery); |
| 535 | + |
| 536 | + var termNode = result.Left as TermNode; |
| 537 | + Assert.NotNull(termNode); |
| 538 | + Assert.Equal(expectedField, termNode.Field); |
| 539 | + Assert.Equal(expectedQuoted, termNode.IsQuotedTerm); |
| 540 | + Assert.Equal(expectedProximity, termNode.Proximity); |
| 541 | + } |
| 542 | + |
| 543 | + [Fact] |
| 544 | + public void Parse_WithFuzzyTermInGroup_SetsProximityOnInnerTermNode() |
| 545 | + { |
| 546 | + var parser = new LuceneQueryParser(); |
| 547 | + var result = parser.Parse("searchKeywords:(\"Wellness\"~)"); |
| 548 | + |
| 549 | + _logger.LogInformation("{Result}", DebugQueryVisitor.Run(result)); |
| 550 | + string generatedQuery = GenerateQueryVisitor.Run(result); |
| 551 | + Assert.Equal("searchKeywords:(\"Wellness\"~)", generatedQuery); |
| 552 | + |
| 553 | + var groupNode = result.Left as GroupNode; |
| 554 | + Assert.NotNull(groupNode); |
| 555 | + Assert.Equal("searchKeywords", groupNode.Field); |
| 556 | + Assert.True(groupNode.HasParens); |
| 557 | + |
| 558 | + var termNode = groupNode.Left as TermNode; |
| 559 | + Assert.NotNull(termNode); |
| 560 | + Assert.Equal("Wellness", termNode.Term); |
| 561 | + Assert.True(termNode.IsQuotedTerm); |
| 562 | + Assert.Equal("", termNode.Proximity); |
| 563 | + } |
| 564 | + |
| 565 | + [Fact] |
| 566 | + public void Parse_WithoutProximityModifier_ProximityIsNull() |
| 567 | + { |
| 568 | + var parser = new LuceneQueryParser(); |
| 569 | + var result = parser.Parse("field:value"); |
| 570 | + |
| 571 | + var termNode = result.Left as TermNode; |
| 572 | + Assert.NotNull(termNode); |
| 573 | + Assert.Null(termNode.Proximity); |
| 574 | + } |
519 | 575 | } |
520 | 576 |
|
521 | 577 | public class TestQueryVisitor : ChainableQueryVisitor |
|
0 commit comments