summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcompletion_test.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-02-16 11:49:07 +0100
committerNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-02-17 13:47:38 +0000
commit9fb5b0be15a1d877132942ca5da1829510f23361 (patch)
treecabae43037ebe98ea14895dca1fc18d8f4e76644 /src/plugins/cpptools/cppcompletion_test.cpp
parent6546a292c2f2f6a70cec950c011a27e91311867e (diff)
downloadqt-creator-9fb5b0be15a1d877132942ca5da1829510f23361.tar.gz
CppTools: Add basic completion support for qt5 style signals/slots
Trigger completion for Qt5 signals/slots as soon as the user types '&' in connect(object, & connect(object, &Foo:signal, object2, & Change-Id: I338a26415196959e3dc413bdfd023314812f3aaa Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Diffstat (limited to 'src/plugins/cpptools/cppcompletion_test.cpp')
-rw-r--r--src/plugins/cpptools/cppcompletion_test.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp
index 5c84ec9307..625132f99b 100644
--- a/src/plugins/cpptools/cppcompletion_test.cpp
+++ b/src/plugins/cpptools/cppcompletion_test.cpp
@@ -2168,6 +2168,94 @@ void CppToolsPlugin::test_completion_data()
<< QLatin1String("Foo")
<< QLatin1String("bar"));
+ const QByteArray commonSignalSlotCompletionTestCode =
+ "#define SIGNAL(a) #a\n"
+ "#define SLOT(a) #a\n"
+ "#define signals public\n"
+ "#define slots\n"
+ "#define Q_OBJECT virtual const QMetaObject *metaObject() const;"
+ "\n"
+ "class Base : public QObject\n"
+ "{\n"
+ " Q_OBJECT\n"
+ "public:\n"
+ " void hiddenFunction();\n"
+ " void baseFunction();\n"
+ "signals:\n"
+ " void hiddenSignal();\n"
+ " void baseSignal1();\n"
+ " void baseSignal2(int newValue);\n"
+ "public slots:\n"
+ " void baseSlot1();\n"
+ " void baseSlot2(int newValue);\n"
+ "};\n"
+ "\n"
+ "class Derived : public Base\n"
+ "{\n"
+ " Q_OBJECT\n"
+ "public:\n"
+ " void hiddenFunction();\n"
+ " void derivedFunction();\n"
+ "signals:\n"
+ " void hiddenSignal();\n"
+ " void derivedSignal1();\n"
+ " void derivedSignal2(int newValue);\n"
+ "public slots:\n"
+ " void derivedSlot1();\n"
+ " void derivedSlot2(int newValue);\n"
+ "};\n"
+ "\n"
+ "void client()\n"
+ "{\n"
+ " Derived *myObject = new Derived;\n"
+ " @\n"
+ "}\n";
+
+ QTest::newRow("SIGNAL(")
+ << commonSignalSlotCompletionTestCode
+ << _("connect(myObject, SIGNAL(") << (QStringList()
+ << QLatin1String("baseSignal1()")
+ << QLatin1String("baseSignal2(int)")
+ << QLatin1String("hiddenSignal()")
+ << QLatin1String("derivedSignal1()")
+ << QLatin1String("derivedSignal2(int)"));
+
+ QTest::newRow("SLOT(")
+ << commonSignalSlotCompletionTestCode
+ << _("connect(myObject, SIGNAL(baseSignal1()), myObject, SLOT(") << (QStringList()
+ << QLatin1String("baseSlot1()")
+ << QLatin1String("baseSlot2(int)")
+ << QLatin1String("derivedSlot1()")
+ << QLatin1String("derivedSlot2(int)"));
+
+ QTest::newRow("Qt5 signal")
+ << commonSignalSlotCompletionTestCode
+ << _("connect(myObject, &") << (QStringList()
+ << QLatin1String("Base::baseSignal1")
+ << QLatin1String("Base::baseSignal2")
+ << QLatin1String("Base::hiddenSignal")
+ << QLatin1String("Derived::derivedSignal1")
+ << QLatin1String("Derived::derivedSignal2")
+ << QLatin1String("Derived::hiddenSignal")); // OK, hidden signal
+
+ QTest::newRow("Qt5 slot")
+ << commonSignalSlotCompletionTestCode
+ << _("connect(myObject, &MyObject::timeout, myObject, &") << (QStringList()
+ << QLatin1String("Base::baseSignal1")
+ << QLatin1String("Base::baseSignal2")
+ << QLatin1String("Base::baseSlot1")
+ << QLatin1String("Base::baseSlot2")
+ << QLatin1String("Base::baseFunction")
+ << QLatin1String("Base::hiddenFunction")
+ << QLatin1String("Base::hiddenSignal")
+ << QLatin1String("Derived::derivedFunction")
+ << QLatin1String("Derived::derivedSignal1")
+ << QLatin1String("Derived::derivedSignal2")
+ << QLatin1String("Derived::derivedSlot1")
+ << QLatin1String("Derived::derivedSlot2")
+ << QLatin1String("Derived::hiddenFunction")
+ << QLatin1String("Derived::hiddenSignal"));
+
QTest::newRow("signals_hide_QPrivateSignal") << _(
"#define SIGNAL(a) #a\n"
"#define SLOT(a) #a\n"