forked from qt-creator/qt-creator
CppLocatorFilterTest: Add locator matchers tests
Change-Id: Ifc9b25bd8503c75724ffec2a0ebd855e61a19bc6 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
@@ -3,8 +3,6 @@
|
||||
|
||||
#include "cpplocatorfilter_test.h"
|
||||
|
||||
#include "cppcurrentdocumentfilter.h"
|
||||
#include "cpplocatorfilter.h"
|
||||
#include "cppmodelmanager.h"
|
||||
#include "cpptoolstestcase.h"
|
||||
|
||||
@@ -37,6 +35,7 @@ class CppLocatorFilterTestCase
|
||||
{
|
||||
public:
|
||||
CppLocatorFilterTestCase(ILocatorFilter *filter,
|
||||
const QList<LocatorMatcherTask> &matchers,
|
||||
const QString &fileName,
|
||||
const QString &searchText,
|
||||
const ResultDataList &expectedResults)
|
||||
@@ -47,7 +46,15 @@ public:
|
||||
QVERIFY(!m_fileName.isEmpty());
|
||||
QVERIFY(garbageCollectGlobalSnapshot());
|
||||
|
||||
ResultDataList results = ResultData::fromFilterEntryList(matchesFor(searchText));
|
||||
const auto runMatcher = [this, matchers, searchText] {
|
||||
CppLocatorFilterTestCase::doBeforeLocatorRun();
|
||||
const auto result = LocatorMatcher::runBlocking(matchers, searchText);
|
||||
CppLocatorFilterTestCase::doAfterLocatorRun();
|
||||
return result;
|
||||
};
|
||||
|
||||
const QList<LocatorFilterEntry> entries = filter ? matchesFor(searchText) : runMatcher();
|
||||
const ResultDataList results = ResultData::fromFilterEntryList(entries);
|
||||
if (debug) {
|
||||
ResultData::printFilterEntries(expectedResults, "Expected:");
|
||||
ResultData::printFilterEntries(results, "Results:");
|
||||
@@ -114,31 +121,44 @@ private:
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
using MatcherCreator = std::function<QList<LocatorMatcherTask>()>;
|
||||
|
||||
void LocatorFilterTest::testLocatorFilter()
|
||||
{
|
||||
QFETCH(QString, testFile);
|
||||
QFETCH(ILocatorFilter *, filter);
|
||||
QFETCH(MatcherCreator, matcherCreator);
|
||||
QFETCH(QString, searchText);
|
||||
QFETCH(ResultDataList, expectedResults);
|
||||
|
||||
{
|
||||
Tests::VerifyCleanCppModelManager verify;
|
||||
CppLocatorFilterTestCase(filter, {}, testFile, searchText, expectedResults);
|
||||
}
|
||||
|
||||
CppLocatorFilterTestCase(filter, testFile, searchText, expectedResults);
|
||||
{
|
||||
Tests::VerifyCleanCppModelManager verify;
|
||||
CppLocatorFilterTestCase(nullptr, matcherCreator(), testFile, searchText, expectedResults);
|
||||
}
|
||||
}
|
||||
|
||||
void LocatorFilterTest::testLocatorFilter_data()
|
||||
{
|
||||
QTest::addColumn<QString>("testFile");
|
||||
QTest::addColumn<ILocatorFilter *>("filter");
|
||||
QTest::addColumn<MatcherCreator>("matcherCreator");
|
||||
QTest::addColumn<QString>("searchText");
|
||||
QTest::addColumn<ResultDataList>("expectedResults");
|
||||
|
||||
CppModelManager *cppModelManager = CppModelManager::instance();
|
||||
|
||||
ILocatorFilter *cppFunctionsFilter = cppModelManager->functionsFilter();
|
||||
ILocatorFilter *cppClassesFilter = cppModelManager->classesFilter();
|
||||
ILocatorFilter *cppLocatorFilter = cppModelManager->locatorFilter();
|
||||
|
||||
const MatcherCreator functionMatcherCreator = &LocatorMatcher::functionMatchers;
|
||||
const MatcherCreator classMatcherCreator = &LocatorMatcher::classMatchers;
|
||||
const MatcherCreator locatorMatcherCreator = &LocatorMatcher::locatorMatchers;
|
||||
|
||||
MyTestDataDir testDirectory("testdata_basic");
|
||||
QString testFile = testDirectory.file("file1.cpp");
|
||||
testFile[0] = testFile[0].toLower(); // Ensure Windows path sorts after scope names.
|
||||
@@ -149,6 +169,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
||||
QTest::newRow("CppFunctionsFilter")
|
||||
<< testFile
|
||||
<< cppFunctionsFilter
|
||||
<< functionMatcherCreator
|
||||
<< "function"
|
||||
<< ResultDataList{
|
||||
ResultData("functionDefinedInClass(bool, int)",
|
||||
@@ -171,6 +192,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
||||
QTest::newRow("CppFunctionsFilter-Sorting")
|
||||
<< testFile
|
||||
<< cppFunctionsFilter
|
||||
<< functionMatcherCreator
|
||||
<< "pos"
|
||||
<< ResultDataList{
|
||||
ResultData("positiveNumber()", testFileShort),
|
||||
@@ -182,6 +204,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
||||
QTest::newRow("CppFunctionsFilter-arguments")
|
||||
<< testFile
|
||||
<< cppFunctionsFilter
|
||||
<< functionMatcherCreator
|
||||
<< "function*bool"
|
||||
<< ResultDataList{
|
||||
ResultData("functionDefinedInClass(bool, int)",
|
||||
@@ -198,6 +221,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
||||
QTest::newRow("CppFunctionsFilter-WithNamespacePrefix")
|
||||
<< testFile
|
||||
<< cppFunctionsFilter
|
||||
<< functionMatcherCreator
|
||||
<< "mynamespace::"
|
||||
<< ResultDataList{
|
||||
ResultData("MyClass()", "MyNamespace::MyClass (file1.cpp)"),
|
||||
@@ -213,6 +237,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
||||
QTest::newRow("CppFunctionsFilter-WithClassPrefix")
|
||||
<< testFile
|
||||
<< cppFunctionsFilter
|
||||
<< functionMatcherCreator
|
||||
<< "MyClass::func"
|
||||
<< ResultDataList{
|
||||
ResultData("functionDefinedInClass(bool, int)",
|
||||
@@ -234,6 +259,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
||||
QTest::newRow("CppClassesFilter")
|
||||
<< testFile
|
||||
<< cppClassesFilter
|
||||
<< classMatcherCreator
|
||||
<< "myclass"
|
||||
<< ResultDataList{
|
||||
ResultData("MyClass", "<anonymous namespace>"),
|
||||
@@ -244,6 +270,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
||||
QTest::newRow("CppClassesFilter-WithNamespacePrefix")
|
||||
<< testFile
|
||||
<< cppClassesFilter
|
||||
<< classMatcherCreator
|
||||
<< "mynamespace::"
|
||||
<< ResultDataList{
|
||||
ResultData("MyClass", "MyNamespace")
|
||||
@@ -253,6 +280,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
||||
QTest::newRow("CppLocatorFilter-filtered")
|
||||
<< testFile
|
||||
<< cppLocatorFilter
|
||||
<< locatorMatcherCreator
|
||||
<< "my"
|
||||
<< ResultDataList{
|
||||
ResultData("MyClass", testFileShort),
|
||||
@@ -279,6 +307,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
||||
QTest::newRow("CppClassesFilter-ObjC")
|
||||
<< objTestFile
|
||||
<< cppClassesFilter
|
||||
<< classMatcherCreator
|
||||
<< "M"
|
||||
<< ResultDataList{
|
||||
ResultData("MyClass", objTestFileShort),
|
||||
@@ -290,6 +319,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
||||
QTest::newRow("CppFunctionsFilter-ObjC")
|
||||
<< objTestFile
|
||||
<< cppFunctionsFilter
|
||||
<< functionMatcherCreator
|
||||
<< "M"
|
||||
<< ResultDataList{
|
||||
ResultData("anotherMethod", "MyClass (file1.mm)"),
|
||||
@@ -389,12 +419,18 @@ void LocatorFilterTest::testFunctionsFilterHighlighting()
|
||||
" ~~~ ")
|
||||
};
|
||||
|
||||
{
|
||||
Tests::VerifyCleanCppModelManager verify;
|
||||
CppModelManager *cppModelManager = CppModelManager::instance();
|
||||
ILocatorFilter *filter = cppModelManager->functionsFilter();
|
||||
CppLocatorFilterTestCase(filter, {}, testFile, searchText, expectedResults);
|
||||
}
|
||||
|
||||
{
|
||||
Tests::VerifyCleanCppModelManager verify;
|
||||
|
||||
CppLocatorFilterTestCase(filter, testFile, searchText, expectedResults);
|
||||
const MatcherCreator matcherCreator = &LocatorMatcher::functionMatchers;
|
||||
CppLocatorFilterTestCase(nullptr, matcherCreator(), testFile, searchText, expectedResults);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace CppEditor::Internal
|
||||
|
Reference in New Issue
Block a user