aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clangcodemodel/test
diff options
context:
space:
mode:
authorDavid Schulz <[email protected]>2024-06-26 12:38:17 +0200
committerDavid Schulz <[email protected]>2024-06-27 04:28:55 +0000
commit39a448c62e96871e0928db802fdf68b4d9d507ec (patch)
tree7d13f79b31d22e9acf5b8b7c35c3322e0eab687f /src/plugins/clangcodemodel/test
parentef3a4fd9e35bf6f2a3e67cc3602d48a570c6d99b (diff)
Editor: Simplify TextDocumentManipulator
The TextDocumentManipulatorInterface was introduced to decouple modification operations from QTextDocument. But nowadays all tests and production code usages are backed by a QTextDocument, so we can remove this abstraction layer again. The first step is to merge the interface and all manipulator implementations. Change-Id: Idd1609df549d3b120dd516d5161af9aa8aa571ca Reviewed-by: Christian Kandeler <[email protected]>
Diffstat (limited to 'src/plugins/clangcodemodel/test')
-rw-r--r--src/plugins/clangcodemodel/test/clangdtests.cpp108
1 files changed, 19 insertions, 89 deletions
diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp
index 84a155b5353..0a41ff925ff 100644
--- a/src/plugins/clangcodemodel/test/clangdtests.cpp
+++ b/src/plugins/clangcodemodel/test/clangdtests.cpp
@@ -30,7 +30,7 @@
#include <texteditor/codeassist/assistproposaliteminterface.h>
#include <texteditor/codeassist/genericproposal.h>
#include <texteditor/codeassist/ifunctionhintproposalmodel.h>
-#include <texteditor/codeassist/textdocumentmanipulatorinterface.h>
+#include <texteditor/codeassist/textdocumentmanipulator.h>
#include <texteditor/semantichighlighter.h>
#include <texteditor/textmark.h>
@@ -1530,76 +1530,6 @@ void ClangdTestHighlighting::testIfdefedOutBlocks()
}
-class Manipulator final : public TextDocumentManipulatorInterface
-{
-public:
- Manipulator()
- {
- const auto textEditor = static_cast<BaseTextEditor *>(EditorManager::currentEditor());
- QVERIFY(textEditor);
- m_doc = textEditor->textDocument()->document();
- m_cursor = textEditor->editorWidget()->textCursor();
- }
-
- int currentPosition() const override { return m_cursor.position(); }
- int positionAt(TextPositionOperation) const override { return 0; }
- QChar characterAt(int position) const override { return m_doc->characterAt(position); }
-
- QString textAt(int position, int length) const override
- {
- return m_doc->toPlainText().mid(position, length);
- }
-
- QTextCursor textCursorAt(int position) const override
- {
- QTextCursor cursor(m_doc);
- cursor.setPosition(position);
- return cursor;
- }
-
- void setCursorPosition(int position) override { m_cursor.setPosition(position); }
- void setAutoCompleteSkipPosition(int position) override { m_skipPos = position; }
-
- bool replace(int position, int length, const QString &text) override
- {
- QTextCursor cursor = textCursorAt(position);
- cursor.setPosition(position + length, QTextCursor::KeepAnchor);
- cursor.insertText(text);
- return true;
- }
-
- void insertCodeSnippet(int pos, const QString &text, const SnippetParser &parser) override
- {
- const auto parseResult = parser(text);
- if (const auto snippet = std::get_if<ParsedSnippet>(&parseResult)) {
- if (!snippet->parts.isEmpty())
- textCursorAt(pos).insertText(snippet->parts.first().text);
- }
- }
-
- void paste() override {}
- void encourageApply() override {}
- void autoIndent(int, int) override {}
-
- QString getLine(int line) const { return m_doc->findBlockByNumber(line - 1).text(); }
-
- QPair<int, int> cursorPos() const
- {
- const int pos = currentPosition();
- QPair<int, int> lineAndColumn;
- Text::convertPosition(m_doc, pos, &lineAndColumn.first, &lineAndColumn.second);
- return lineAndColumn;
- }
-
- int skipPos() const { return m_skipPos; }
-
-private:
- QTextDocument *m_doc;
- QTextCursor m_cursor;
- int m_skipPos = -1;
-};
-
-
class ClangdTestCompletion final : public ClangdTest
{
Q_OBJECT
@@ -1723,10 +1653,10 @@ void ClangdTestCompletion::testCompleteGlobals()
const AssistProposalItemInterface * const item = getItem(proposal, " globalFunction()", "void");
QVERIFY(item);
- Manipulator manipulator;
+ TextDocumentManipulator manipulator(TextEditorWidget::currentTextEditorWidget());
item->apply(manipulator, cursorPos);
QCOMPARE(manipulator.getLine(7), " globalFunction() /* COMPLETE HERE */");
- QCOMPARE(manipulator.cursorPos(), qMakePair(7, 19));
+ QCOMPARE(manipulator.cursorPos(), Text::Position(7, 19));
QCOMPARE(manipulator.skipPos(), -1);
}
@@ -1743,10 +1673,10 @@ void ClangdTestCompletion::testCompleteMembers()
const AssistProposalItemInterface * const item = getItem(proposal, " member", "int");
QVERIFY(item);
- Manipulator manipulator;
+ TextDocumentManipulator manipulator(TextEditorWidget::currentTextEditorWidget());
item->apply(manipulator, cursorPos);
QCOMPARE(manipulator.getLine(7), " s.member /* COMPLETE HERE */");
- QCOMPARE(manipulator.cursorPos(), qMakePair(7, 12));
+ QCOMPARE(manipulator.cursorPos(), Text::Position(7, 12));
QCOMPARE(manipulator.skipPos(), -1);
}
@@ -1761,10 +1691,10 @@ void ClangdTestCompletion::testCompleteMembersFromInside()
const AssistProposalItemInterface * const item = getItem(proposal, " privateFunc()", "void");
QVERIFY(item);
- Manipulator manipulator;
+ TextDocumentManipulator manipulator(TextEditorWidget::currentTextEditorWidget());
item->apply(manipulator, cursorPos);
QCOMPARE(manipulator.getLine(4), " privateFunc() /* COMPLETE HERE */");
- QCOMPARE(manipulator.cursorPos(), qMakePair(4, 21));
+ QCOMPARE(manipulator.cursorPos(), Text::Position(4, 21));
QCOMPARE(manipulator.skipPos(), -1);
}
@@ -1779,10 +1709,10 @@ void ClangdTestCompletion::testCompleteMembersFromOutside()
const AssistProposalItemInterface * const item = getItem(proposal, " publicFunc()", "void");
QVERIFY(item);
- Manipulator manipulator;
+ TextDocumentManipulator manipulator(TextEditorWidget::currentTextEditorWidget());
item->apply(manipulator, cursorPos);
QCOMPARE(manipulator.getLine(13), " c.publicFunc() /* COMPLETE HERE */");
- QCOMPARE(manipulator.cursorPos(), qMakePair(13, 18));
+ QCOMPARE(manipulator.cursorPos(), Text::Position(13, 18));
QCOMPARE(manipulator.skipPos(), -1);
}
@@ -1797,10 +1727,10 @@ void ClangdTestCompletion::testCompleteMembersFromFriend()
const AssistProposalItemInterface * const item = getItem(proposal, " privateFunc()", "void");
QVERIFY(item);
- Manipulator manipulator;
+ TextDocumentManipulator manipulator(TextEditorWidget::currentTextEditorWidget());
item->apply(manipulator, cursorPos);
QCOMPARE(manipulator.getLine(14), " C().privateFunc() /* COMPLETE HERE */");
- QCOMPARE(manipulator.cursorPos(), qMakePair(14, 21));
+ QCOMPARE(manipulator.cursorPos(), Text::Position(14, 21));
QCOMPARE(manipulator.skipPos(), -1);
}
@@ -1814,10 +1744,10 @@ void ClangdTestCompletion::testFunctionAddress()
const AssistProposalItemInterface * const item = getItem(proposal, " memberFunc()", "void");
QVERIFY(item);
- Manipulator manipulator;
+ TextDocumentManipulator manipulator(TextEditorWidget::currentTextEditorWidget());
item->apply(manipulator, cursorPos);
QCOMPARE(manipulator.getLine(7), " const auto p = &S::memberFunc /* COMPLETE HERE */;");
- QCOMPARE(manipulator.cursorPos(), qMakePair(7, 33));
+ QCOMPARE(manipulator.cursorPos(), Text::Position(7, 33));
QCOMPARE(manipulator.skipPos(), -1);
}
@@ -1878,10 +1808,10 @@ void ClangdTestCompletion::testCompleteClassAndConstructor()
const AssistProposalItemInterface * const item
= getItem(proposal, QString::fromUtf8(" Foo(…)"), "[2 overloads]");
QVERIFY(item);
- Manipulator manipulator;
+ TextDocumentManipulator manipulator(TextEditorWidget::currentTextEditorWidget());
item->apply(manipulator, cursorPos);
QCOMPARE(manipulator.getLine(7), " Foo( /* COMPLETE HERE */");
- QCOMPARE(manipulator.cursorPos(), qMakePair(7, 8));
+ QCOMPARE(manipulator.cursorPos(), Text::Position(7, 8));
QCOMPARE(manipulator.skipPos(), -1);
}
@@ -1905,10 +1835,10 @@ void ClangdTestCompletion::testCompleteWithDotToArrowCorrection()
QVERIFY(proposal);
const AssistProposalItemInterface * const item = getItem(proposal, " member", "int");
QVERIFY(item);
- Manipulator manipulator;
+ TextDocumentManipulator manipulator(TextEditorWidget::currentTextEditorWidget());
item->apply(manipulator, cursorPos);
QCOMPARE(manipulator.getLine(4), " bar->member /* COMPLETE HERE */");
- QCOMPARE(manipulator.cursorPos(), qMakePair(4, 15));
+ QCOMPARE(manipulator.cursorPos(), Text::Position(4, 15));
QCOMPARE(manipulator.skipPos(), -1);
}
@@ -1936,10 +1866,10 @@ void ClangdTestCompletion::testCompleteCodeInGeneratedUiFile()
const AssistProposalItemInterface * const item = getItem(
proposal, " setupUi(QMainWindow *MainWindow)", "void");
QVERIFY(item);
- Manipulator manipulator;
+ TextDocumentManipulator manipulator(TextEditorWidget::currentTextEditorWidget());
item->apply(manipulator, cursorPos);
QCOMPARE(manipulator.getLine(34), " ui->setupUi( /* COMPLETE HERE */");
- QCOMPARE(manipulator.cursorPos(), qMakePair(34, 16));
+ QCOMPARE(manipulator.cursorPos(), Text::Position(34, 16));
QCOMPARE(manipulator.skipPos(), -1);
}