public async Task CanUseForwardSlashes() { string query = @"hey/now"; var tracer = new StringBuilderTrace(); var parser = new LuceneQueryParser { //Tracer = tracer }; try { var result = await parser.ParseAsync(query); _logger.LogInformation(await DebugQueryVisitor.RunAsync(result)); string generatedQuery = await GenerateQueryVisitor.RunAsync(result); Assert.Equal(query, generatedQuery); } catch (FormatException ex) { _logger.LogInformation(tracer.ToString()); var cursor = ex.Data["cursor"] as Cursor; throw new FormatException($"[{cursor.Line}:{cursor.Column}] {ex.Message}", ex); } }
public async Task CanParseEscapedQuery(string escaped) { // https://lucene.apache.org/core/2_9_4/queryparsersyntax.html#Escaping%20Special%20Characters // + - && || ! ( ) { } [ ] ^ " ~ * ? : \ string query = @"\" + escaped; var tracer = new StringBuilderTrace(); var parser = new LuceneQueryParser { //Tracer = tracer }; try { _logger.LogInformation($"Attempting: {escaped}"); var result = await parser.ParseAsync(query); _logger.LogInformation(await DebugQueryVisitor.RunAsync(result)); string generatedQuery = await GenerateQueryVisitor.RunAsync(result); Assert.Equal(query, generatedQuery); } catch (FormatException ex) { _logger.LogInformation(tracer.ToString()); var cursor = ex.Data["cursor"] as Cursor; throw new FormatException($"[{cursor.Line}:{cursor.Column}] {ex.Message}", ex); } }