MCPcopy Create free account
hub / github.com/KDE/kdevelop / executeMemberAccessReplacerTest

Function executeMemberAccessReplacerTest

plugins/clang/tests/test_codecompletion.cpp:256–299  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

254}
255
256void executeMemberAccessReplacerTest(const QString& code, const CompletionItems& expectedCompletionItems,
257 const ClangCodeCompletionContext::ContextFilters& filters = NoMacroOrBuiltin)
258{
259 TestFile file(code, QStringLiteral("cpp"));
260
261 auto document = ICore::self()->documentController()->openDocument(file.url().toUrl());
262 QVERIFY(document);
263 ICore::self()->documentController()->activateDocument(document);
264 auto view = ICore::self()->documentController()->activeTextDocumentView();
265 Q_ASSERT(view);
266 view->setCursorPosition(expectedCompletionItems.position);
267
268 QVERIFY(file.parseAndWait(TopDUContext::AllDeclarationsContextsUsesAndAST));
269 DUChainReadLocker lock;
270 auto top = file.topContext();
271 QVERIFY(top);
272 const ParseSessionData::Ptr sessionData(dynamic_cast<ParseSessionData*>(top->ast().data()));
273 QVERIFY(sessionData);
274
275 lock.unlock();
276
277 auto context = createContext(top, sessionData, expectedCompletionItems.position, code);
278
279 QApplication::processEvents();
280
281 if (expectedCompletionItems.code) {
282 QCOMPARE(document->textDocument()->text(), *expectedCompletionItems.code);
283 }
284
285 document->close(KDevelop::IDocument::Silent);
286
287 // The previous ClangCodeCompletionContext call should replace member access.
288 // That triggers an update request in the duchain which we are not interested in,
289 // so let's stop that request.
290 ICore::self()->languageController()->backgroundParser()->removeDocument(file.url());
291
292 context = createContext(top, sessionData, expectedCompletionItems.position);
293 context->setFilters(filters);
294 lock.lock();
295 auto tester = ClangCodeCompletionItemTester(context);
296
297 tester.names.sort();
298 QCOMPARE(tester.names, expectedCompletionItems.completions);
299}
300
301using IncludeTester = CodeCompletionItemTester<IncludePathCompletionContext>;
302

Callers 1

Calls 15

createContextFunction · 0.85
documentControllerMethod · 0.80
activateDocumentMethod · 0.80
parseAndWaitMethod · 0.80
backgroundParserMethod · 0.80
languageControllerMethod · 0.80
openDocumentMethod · 0.45
toUrlMethod · 0.45
urlMethod · 0.45
setCursorPositionMethod · 0.45
topContextMethod · 0.45

Tested by

no test coverage detected