aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/cppcompletion_test.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@theqtcompany.com>2015-04-15 17:45:47 +0200
committerEike Ziller <eike.ziller@theqtcompany.com>2015-04-15 17:45:47 +0200
commit50fe3585a890fdbb5b6b8598bd8ffe97c036b52d (patch)
treec7b4e55ac4953b344a56f54c0c272d2d324a16c8 /src/plugins/cpptools/cppcompletion_test.cpp
parent3d6d33f60d666c8cdab0aa7bad2ee417323b2ee0 (diff)
parentbd964ab0be5070c47a2c65813760413596b028e1 (diff)
Merge remote-tracking branch 'origin/3.4'
Conflicts: src/libs/timeline/qml/MainView.qml src/plugins/git/gitclient.cpp Change-Id: I0b6ec7b9a592014deb0dd2e1145b19dd6753b1c3
Diffstat (limited to 'src/plugins/cpptools/cppcompletion_test.cpp')
-rw-r--r--src/plugins/cpptools/cppcompletion_test.cpp43
1 files changed, 35 insertions, 8 deletions
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp
index 78757e6b15..418027b1be 100644
--- a/src/plugins/cpptools/cppcompletion_test.cpp
+++ b/src/plugins/cpptools/cppcompletion_test.cpp
@@ -162,6 +162,16 @@ private:
IEditor *m_editor;
};
+bool isProbablyGlobalCompletion(const QStringList &list)
+{
+ const int numberOfPrimitivesAndBasicKeywords = (T_LAST_PRIMITIVE - T_FIRST_PRIMITIVE)
+ + (T_FIRST_OBJC_AT_KEYWORD - T_FIRST_KEYWORD);
+
+ return list.size() >= numberOfPrimitivesAndBasicKeywords
+ && list.contains(QLatin1String("if"))
+ && list.contains(QLatin1String("bool"));
+}
+
} // anonymous namespace
void CppToolsPlugin::test_completion_basic_1()
@@ -329,6 +339,31 @@ void CppToolsPlugin::test_completion()
QCOMPARE(actualCompletions, expectedCompletions);
}
+void CppToolsPlugin::test_global_completion_data()
+{
+ QTest::addColumn<QByteArray>("code");
+ QTest::addColumn<QByteArray>("prefix");
+
+ // Check that special completion after '&' for Qt5 signal/slots does not
+ // interfere global completion after '&'
+ QTest::newRow("global completion after & in return expression")
+ << _("void f() { foo(myObject, @); }\n")
+ << _("&");
+ QTest::newRow("global completion after & in function argument")
+ << _("int f() { return @; }\n")
+ << _("&");
+}
+
+void CppToolsPlugin::test_global_completion()
+{
+ QFETCH(QByteArray, code);
+ QFETCH(QByteArray, prefix);
+
+ CompletionTestCase test(code, prefix);
+ QVERIFY(test.succeededSoFar());
+ QVERIFY(isProbablyGlobalCompletion(test.getCompletions()));
+}
+
static void enumTestCase(const QByteArray &tag, const QByteArray &source,
const QByteArray &prefix = QByteArray())
{
@@ -2339,14 +2374,6 @@ void CppToolsPlugin::test_completion_data()
<< QLatin1String("hiddenFunction")
<< QLatin1String("hiddenSignal"));
- QTest::newRow("Qt5 signals: no class name completion if not after 'connect(' 1")
- << commonSignalSlotCompletionTestCode
- << _("foo(myObject, &") << (QStringList());
-
- QTest::newRow("Qt5 signals/slots: no class name completion if not after 'connect(' 2")
- << commonSignalSlotCompletionTestCode
- << _("&") << (QStringList());
-
QTest::newRow("Qt5 signals: fallback to scope completion")
<< commonSignalSlotCompletionTestCode
<< _("connect(myObject, &N::") << (QStringList()