From f6f11e5142911f0c4a57b08d6425d1cf99187627 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Mon, 3 Aug 2026 20:41:57 +0200 Subject: feat(completion): complete nothing inside a quoted literal subject:"foo bar has the cursor in free text, where offering keywords would be wrong. --- tests/test_querycompleter.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tests') diff --git a/tests/test_querycompleter.cpp b/tests/test_querycompleter.cpp index 4621b19..c86edac 100644 --- a/tests/test_querycompleter.cpp +++ b/tests/test_querycompleter.cpp @@ -33,6 +33,8 @@ private slots: void valueReplaceSpanExcludesThePrefix(); void prefixIsLowercased(); void emptyValueAfterColonStillCompletes(); + void insideQuotesCompletesNothing(); + void afterClosedQuotesCompletesAgain(); }; void TestQueryCompleter::emptyTextCompletesPrefix() @@ -103,5 +105,21 @@ void TestQueryCompleter::emptyValueAfterColonStillCompletes() QCOMPARE(ctx.replaceLength, 0); } +void TestQueryCompleter::insideQuotesCompletesNothing() +{ + // subject:"foo bar| is a literal, not a keyword position. + const QString text = QStringLiteral("subject:\"foo bar"); + const CompletionContext ctx = completionContext(text, text.size()); + QCOMPARE(ctx.kind, CompletionContext::None); +} + +void TestQueryCompleter::afterClosedQuotesCompletesAgain() +{ + const QString text = QStringLiteral("subject:\"foo bar\" and ta"); + const CompletionContext ctx = completionContext(text, text.size()); + QCOMPARE(ctx.kind, CompletionContext::Prefix); + QCOMPARE(ctx.stem, QStringLiteral("ta")); +} + QTEST_MAIN(TestQueryCompleter) #include "test_querycompleter.moc" -- cgit v1.2.3