diff options
author | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-08-16 11:17:04 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-08-19 13:59:03 +0200 |
commit | 5ee0ab93e6e1ed6c0f4205b42cd0bbb9b755ebac (patch) | |
tree | 12dc815ea28eb15afbd60f19eda37399ccbf130c /src | |
parent | f393743840b6c823c5bc35818d0810b3aa1c5d14 (diff) | |
download | qt-creator-5ee0ab93e6e1ed6c0f4205b42cd0bbb9b755ebac.tar.gz |
Locator: Tests: Introduce BasicLocatorFilterTest
Change-Id: I06b798549bf9ce02d824477ea945c389da50ebce
Reviewed-by: David Schulz <david.schulz@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/locator/locator.pro | 5 | ||||
-rw-r--r-- | src/plugins/locator/locator.qbs | 10 | ||||
-rw-r--r-- | src/plugins/locator/locatorfiltertest.cpp | 89 | ||||
-rw-r--r-- | src/plugins/locator/locatorfiltertest.h | 96 |
4 files changed, 200 insertions, 0 deletions
diff --git a/src/plugins/locator/locator.pro b/src/plugins/locator/locator.pro index 0d3170cc3a..fa3816584f 100644 --- a/src/plugins/locator/locator.pro +++ b/src/plugins/locator/locator.pro @@ -33,3 +33,8 @@ FORMS += settingspage.ui \ filesystemfilter.ui \ directoryfilter.ui RESOURCES += locator.qrc + +equals(TEST, 1) { + HEADERS += locatorfiltertest.h + SOURCES += locatorfiltertest.cpp +} diff --git a/src/plugins/locator/locator.qbs b/src/plugins/locator/locator.qbs index 548346ab45..90d761bd0a 100644 --- a/src/plugins/locator/locator.qbs +++ b/src/plugins/locator/locator.qbs @@ -1,6 +1,7 @@ import qbs.base 1.0 import "../QtcPlugin.qbs" as QtcPlugin +import "../../../qbs/defaults.js" as Defaults QtcPlugin { name: "Locator" @@ -51,4 +52,13 @@ QtcPlugin { "images/locator.png", "images/reload.png", ] + + Group { + name: "Tests" + condition: Defaults.testsEnabled(qbs) + files: [ + "locatorfiltertest.cpp", + "locatorfiltertest.h", + ] + } } diff --git a/src/plugins/locator/locatorfiltertest.cpp b/src/plugins/locator/locatorfiltertest.cpp new file mode 100644 index 0000000000..692d213ef9 --- /dev/null +++ b/src/plugins/locator/locatorfiltertest.cpp @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + + +#include "locatorfiltertest.h" +#include "locatorsearchutils.h" + +#include <utils/runextensions.h> + +#include <QFuture> +#include <QList> +#include <QString> +#include <QTextStream> + +using namespace Locator; +using namespace Locator::Internal; +using namespace Locator::Internal::Tests; + +BasicLocatorFilterTest::BasicLocatorFilterTest(ILocatorFilter *filter) : m_filter(filter) +{ +} + +QList<FilterEntry> BasicLocatorFilterTest::matchesFor(const QString &searchText) +{ + doBeforeLocatorRun(); + const QList<ILocatorFilter *> filters = QList<ILocatorFilter *>() << m_filter; + QFuture<FilterEntry> locatorSearch = QtConcurrent::run(Locator::Internal::runSearch, + filters, searchText); + locatorSearch.waitForFinished(); + doAfterLocatorRun(); + return locatorSearch.results(); +} + +ResultData::ResultData() +{ +} + +ResultData::ResultData(const QString &textColumn1, const QString &textColumn2) + : textColumn1(textColumn1), textColumn2(textColumn2) +{ +} + +bool ResultData::operator==(const ResultData &other) const +{ + return textColumn1 == other.textColumn1 && textColumn2 == other.textColumn2; +} + +ResultData::ResultDataList ResultData::fromFilterEntryList(const QList<FilterEntry> &entries) +{ + ResultDataList result; + foreach (const FilterEntry &entry, entries) + result << ResultData(entry.displayName, entry.extraInfo); + return result; +} + +void ResultData::printFilterEntries(const ResultData::ResultDataList &entries) +{ + QTextStream out(stdout); + foreach (const ResultData entry, entries) { + out << "<< ResultData(_(\"" << entry.textColumn1 << "\"), _(\"" << entry.textColumn2 + << "\"))" << endl; + } +} diff --git a/src/plugins/locator/locatorfiltertest.h b/src/plugins/locator/locatorfiltertest.h new file mode 100644 index 0000000000..65e63ce561 --- /dev/null +++ b/src/plugins/locator/locatorfiltertest.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + + +#ifndef LOCATORFILTERTEST_H +#define LOCATORFILTERTEST_H + +#include "locator_global.h" +#include "ilocatorfilter.h" + +#include <QTest> + +namespace Locator { +namespace Internal { +namespace Tests { + +/// Runs a locator filter for a search text and returns the results. +class LOCATOR_EXPORT BasicLocatorFilterTest +{ +public: + BasicLocatorFilterTest(Locator::ILocatorFilter *filter); + + QList<Locator::FilterEntry> matchesFor(const QString &searchText = QString()); + +private: + virtual void doBeforeLocatorRun() {} + virtual void doAfterLocatorRun() {} + + Locator::ILocatorFilter *m_filter; +}; + +class LOCATOR_EXPORT ResultData +{ +public: + typedef QList<ResultData> ResultDataList; + + ResultData(); + ResultData(const QString &textColumn1, const QString &textColumn2); + + bool operator==(const ResultData &other) const; + + static ResultDataList fromFilterEntryList(const QList<FilterEntry> &entries); + + /// For debugging and creating reference data + static void printFilterEntries(const ResultDataList &entries); + + QString textColumn1; + QString textColumn2; +}; + +typedef ResultData::ResultDataList ResultDataList; + +} // namespace Tests +} // namespace Internal +} // namespace Locator + +Q_DECLARE_METATYPE(Locator::Internal::Tests::ResultData) +Q_DECLARE_METATYPE(Locator::Internal::Tests::ResultDataList) + +namespace QTest { + +template<> char *toString(const Locator::Internal::Tests::ResultData &data) +{ + QByteArray ba = "\"" + data.textColumn1.toUtf8() + "\", \"" + data.textColumn2.toUtf8() + "\""; + return qstrdup(ba.data()); +} + +} // namespace QTest + +#endif // LOCATORFILTERTEST_H |