diff options
author | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-04-07 16:12:57 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-04-13 10:55:44 +0000 |
commit | f368294251b6bd63fc0911e68c688eecfdab9d22 (patch) | |
tree | dd86a0bcc15b43ef97a9dfd3d6460180f59838cd /src/plugins/cpptools/cppcompletion_test.cpp | |
parent | 2ae5e146b3a0a03be3be8d476a293eebcfc78642 (diff) | |
download | qt-creator-f368294251b6bd63fc0911e68c688eecfdab9d22.tar.gz |
CppTools: Fix global completion after '&'
Regression introduced by
commit 9fb5b0be15a1d877132942ca5da1829510f23361
CppTools: Add basic completion support for qt5 style signals/slots
Change-Id: I0a8e5ef31c1394512a51a26ed08b0f445add5acd
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Diffstat (limited to 'src/plugins/cpptools/cppcompletion_test.cpp')
-rw-r--r-- | src/plugins/cpptools/cppcompletion_test.cpp | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp index e6cc006825..f15950bc71 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() @@ -327,6 +337,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()) { @@ -2337,14 +2372,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() |