summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@digia.com>2013-08-16 11:17:04 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-08-19 13:59:03 +0200
commit5ee0ab93e6e1ed6c0f4205b42cd0bbb9b755ebac (patch)
tree12dc815ea28eb15afbd60f19eda37399ccbf130c /src
parentf393743840b6c823c5bc35818d0810b3aa1c5d14 (diff)
downloadqt-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.pro5
-rw-r--r--src/plugins/locator/locator.qbs10
-rw-r--r--src/plugins/locator/locatorfiltertest.cpp89
-rw-r--r--src/plugins/locator/locatorfiltertest.h96
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