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 "cpplocatorfilter_test.h"
|
||||||
|
|
||||||
#include "cppcurrentdocumentfilter.h"
|
|
||||||
#include "cpplocatorfilter.h"
|
|
||||||
#include "cppmodelmanager.h"
|
#include "cppmodelmanager.h"
|
||||||
#include "cpptoolstestcase.h"
|
#include "cpptoolstestcase.h"
|
||||||
|
|
||||||
@@ -37,6 +35,7 @@ class CppLocatorFilterTestCase
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CppLocatorFilterTestCase(ILocatorFilter *filter,
|
CppLocatorFilterTestCase(ILocatorFilter *filter,
|
||||||
|
const QList<LocatorMatcherTask> &matchers,
|
||||||
const QString &fileName,
|
const QString &fileName,
|
||||||
const QString &searchText,
|
const QString &searchText,
|
||||||
const ResultDataList &expectedResults)
|
const ResultDataList &expectedResults)
|
||||||
@@ -47,7 +46,15 @@ public:
|
|||||||
QVERIFY(!m_fileName.isEmpty());
|
QVERIFY(!m_fileName.isEmpty());
|
||||||
QVERIFY(garbageCollectGlobalSnapshot());
|
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) {
|
if (debug) {
|
||||||
ResultData::printFilterEntries(expectedResults, "Expected:");
|
ResultData::printFilterEntries(expectedResults, "Expected:");
|
||||||
ResultData::printFilterEntries(results, "Results:");
|
ResultData::printFilterEntries(results, "Results:");
|
||||||
@@ -114,31 +121,44 @@ private:
|
|||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
|
||||||
|
using MatcherCreator = std::function<QList<LocatorMatcherTask>()>;
|
||||||
|
|
||||||
void LocatorFilterTest::testLocatorFilter()
|
void LocatorFilterTest::testLocatorFilter()
|
||||||
{
|
{
|
||||||
QFETCH(QString, testFile);
|
QFETCH(QString, testFile);
|
||||||
QFETCH(ILocatorFilter *, filter);
|
QFETCH(ILocatorFilter *, filter);
|
||||||
|
QFETCH(MatcherCreator, matcherCreator);
|
||||||
QFETCH(QString, searchText);
|
QFETCH(QString, searchText);
|
||||||
QFETCH(ResultDataList, expectedResults);
|
QFETCH(ResultDataList, expectedResults);
|
||||||
|
|
||||||
Tests::VerifyCleanCppModelManager verify;
|
{
|
||||||
|
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()
|
void LocatorFilterTest::testLocatorFilter_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<QString>("testFile");
|
QTest::addColumn<QString>("testFile");
|
||||||
QTest::addColumn<ILocatorFilter *>("filter");
|
QTest::addColumn<ILocatorFilter *>("filter");
|
||||||
|
QTest::addColumn<MatcherCreator>("matcherCreator");
|
||||||
QTest::addColumn<QString>("searchText");
|
QTest::addColumn<QString>("searchText");
|
||||||
QTest::addColumn<ResultDataList>("expectedResults");
|
QTest::addColumn<ResultDataList>("expectedResults");
|
||||||
|
|
||||||
CppModelManager *cppModelManager = CppModelManager::instance();
|
CppModelManager *cppModelManager = CppModelManager::instance();
|
||||||
|
|
||||||
ILocatorFilter *cppFunctionsFilter = cppModelManager->functionsFilter();
|
ILocatorFilter *cppFunctionsFilter = cppModelManager->functionsFilter();
|
||||||
ILocatorFilter *cppClassesFilter = cppModelManager->classesFilter();
|
ILocatorFilter *cppClassesFilter = cppModelManager->classesFilter();
|
||||||
ILocatorFilter *cppLocatorFilter = cppModelManager->locatorFilter();
|
ILocatorFilter *cppLocatorFilter = cppModelManager->locatorFilter();
|
||||||
|
|
||||||
|
const MatcherCreator functionMatcherCreator = &LocatorMatcher::functionMatchers;
|
||||||
|
const MatcherCreator classMatcherCreator = &LocatorMatcher::classMatchers;
|
||||||
|
const MatcherCreator locatorMatcherCreator = &LocatorMatcher::locatorMatchers;
|
||||||
|
|
||||||
MyTestDataDir testDirectory("testdata_basic");
|
MyTestDataDir testDirectory("testdata_basic");
|
||||||
QString testFile = testDirectory.file("file1.cpp");
|
QString testFile = testDirectory.file("file1.cpp");
|
||||||
testFile[0] = testFile[0].toLower(); // Ensure Windows path sorts after scope names.
|
testFile[0] = testFile[0].toLower(); // Ensure Windows path sorts after scope names.
|
||||||
@@ -149,6 +169,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter")
|
QTest::newRow("CppFunctionsFilter")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
|
<< functionMatcherCreator
|
||||||
<< "function"
|
<< "function"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("functionDefinedInClass(bool, int)",
|
ResultData("functionDefinedInClass(bool, int)",
|
||||||
@@ -171,6 +192,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter-Sorting")
|
QTest::newRow("CppFunctionsFilter-Sorting")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
|
<< functionMatcherCreator
|
||||||
<< "pos"
|
<< "pos"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("positiveNumber()", testFileShort),
|
ResultData("positiveNumber()", testFileShort),
|
||||||
@@ -182,6 +204,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter-arguments")
|
QTest::newRow("CppFunctionsFilter-arguments")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
|
<< functionMatcherCreator
|
||||||
<< "function*bool"
|
<< "function*bool"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("functionDefinedInClass(bool, int)",
|
ResultData("functionDefinedInClass(bool, int)",
|
||||||
@@ -198,6 +221,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter-WithNamespacePrefix")
|
QTest::newRow("CppFunctionsFilter-WithNamespacePrefix")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
|
<< functionMatcherCreator
|
||||||
<< "mynamespace::"
|
<< "mynamespace::"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("MyClass()", "MyNamespace::MyClass (file1.cpp)"),
|
ResultData("MyClass()", "MyNamespace::MyClass (file1.cpp)"),
|
||||||
@@ -213,6 +237,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter-WithClassPrefix")
|
QTest::newRow("CppFunctionsFilter-WithClassPrefix")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
|
<< functionMatcherCreator
|
||||||
<< "MyClass::func"
|
<< "MyClass::func"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("functionDefinedInClass(bool, int)",
|
ResultData("functionDefinedInClass(bool, int)",
|
||||||
@@ -234,6 +259,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppClassesFilter")
|
QTest::newRow("CppClassesFilter")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppClassesFilter
|
<< cppClassesFilter
|
||||||
|
<< classMatcherCreator
|
||||||
<< "myclass"
|
<< "myclass"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("MyClass", "<anonymous namespace>"),
|
ResultData("MyClass", "<anonymous namespace>"),
|
||||||
@@ -244,6 +270,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppClassesFilter-WithNamespacePrefix")
|
QTest::newRow("CppClassesFilter-WithNamespacePrefix")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppClassesFilter
|
<< cppClassesFilter
|
||||||
|
<< classMatcherCreator
|
||||||
<< "mynamespace::"
|
<< "mynamespace::"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("MyClass", "MyNamespace")
|
ResultData("MyClass", "MyNamespace")
|
||||||
@@ -253,6 +280,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppLocatorFilter-filtered")
|
QTest::newRow("CppLocatorFilter-filtered")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppLocatorFilter
|
<< cppLocatorFilter
|
||||||
|
<< locatorMatcherCreator
|
||||||
<< "my"
|
<< "my"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("MyClass", testFileShort),
|
ResultData("MyClass", testFileShort),
|
||||||
@@ -279,6 +307,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppClassesFilter-ObjC")
|
QTest::newRow("CppClassesFilter-ObjC")
|
||||||
<< objTestFile
|
<< objTestFile
|
||||||
<< cppClassesFilter
|
<< cppClassesFilter
|
||||||
|
<< classMatcherCreator
|
||||||
<< "M"
|
<< "M"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("MyClass", objTestFileShort),
|
ResultData("MyClass", objTestFileShort),
|
||||||
@@ -290,6 +319,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter-ObjC")
|
QTest::newRow("CppFunctionsFilter-ObjC")
|
||||||
<< objTestFile
|
<< objTestFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
|
<< functionMatcherCreator
|
||||||
<< "M"
|
<< "M"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("anotherMethod", "MyClass (file1.mm)"),
|
ResultData("anotherMethod", "MyClass (file1.mm)"),
|
||||||
@@ -389,12 +419,18 @@ void LocatorFilterTest::testFunctionsFilterHighlighting()
|
|||||||
" ~~~ ")
|
" ~~~ ")
|
||||||
};
|
};
|
||||||
|
|
||||||
CppModelManager *cppModelManager = CppModelManager::instance();
|
{
|
||||||
ILocatorFilter *filter = cppModelManager->functionsFilter();
|
Tests::VerifyCleanCppModelManager verify;
|
||||||
|
CppModelManager *cppModelManager = CppModelManager::instance();
|
||||||
|
ILocatorFilter *filter = cppModelManager->functionsFilter();
|
||||||
|
CppLocatorFilterTestCase(filter, {}, testFile, searchText, expectedResults);
|
||||||
|
}
|
||||||
|
|
||||||
Tests::VerifyCleanCppModelManager verify;
|
{
|
||||||
|
Tests::VerifyCleanCppModelManager verify;
|
||||||
CppLocatorFilterTestCase(filter, testFile, searchText, expectedResults);
|
const MatcherCreator matcherCreator = &LocatorMatcher::functionMatchers;
|
||||||
|
CppLocatorFilterTestCase(nullptr, matcherCreator(), testFile, searchText, expectedResults);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace CppEditor::Internal
|
} // namespace CppEditor::Internal
|
||||||
|
Reference in New Issue
Block a user