summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcompletion_test.cpp
diff options
context:
space:
mode:
authorSergey Shambir <sergey.shambir.auto@gmail.com>2013-04-04 11:27:06 +0400
committerErik Verbruggen <erik.verbruggen@digia.com>2013-04-10 11:55:06 +0200
commita2730a4570641c5a803eca78236842e4ca97376b (patch)
treec9437ac944e15eb13e1667f9e670988835c44f41 /src/plugins/cpptools/cppcompletion_test.cpp
parentadda69278f249491348fc04651ac6184e929bb60 (diff)
downloadqt-creator-a2730a4570641c5a803eca78236842e4ca97376b.tar.gz
CppTools: added template function params to completions
Change-Id: I67e9685406a0bf9a7cc358ce24f0e862d7938be6 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cppcompletion_test.cpp')
-rw-r--r--src/plugins/cpptools/cppcompletion_test.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp
index 5096262a3c..657b6397aa 100644
--- a/src/plugins/cpptools/cppcompletion_test.cpp
+++ b/src/plugins/cpptools/cppcompletion_test.cpp
@@ -1185,6 +1185,64 @@ void CppToolsPlugin::test_completion_cyclic_inheritance_data()
<< code << completions;
}
+void CppToolsPlugin::test_completion_template_function()
+{
+ QFETCH(QByteArray, code);
+ QFETCH(QStringList, expectedCompletions);
+
+ TestData data;
+ data.srcText = code;
+ setup(&data);
+
+ QStringList actualCompletions = getCompletions(data);
+ actualCompletions.sort();
+ expectedCompletions.sort();
+
+ QString errorPattern(QLatin1String("Completion not found: %1"));
+ foreach (const QString &completion, expectedCompletions) {
+ QByteArray errorMessage = errorPattern.arg(completion).toUtf8();
+ QVERIFY2(actualCompletions.contains(completion), errorMessage.data());
+ }
+}
+
+void CppToolsPlugin::test_completion_template_function_data()
+{
+ QTest::addColumn<QByteArray>("code");
+ QTest::addColumn<QStringList>("expectedCompletions");
+
+ QByteArray code;
+ QStringList completions;
+
+ code = "\n"
+ "template <class tclass, typename tname, int tint>\n"
+ "tname Hello(const tclass &e)\n"
+ "{\n"
+ " tname e2 = e;\n"
+ " @\n"
+ "}";
+
+ completions.append(QLatin1String("tclass"));
+ completions.append(QLatin1String("tname"));
+ completions.append(QLatin1String("tint"));
+ QTest::newRow("case: template parameters in template function body")
+ << code << completions;
+
+ completions.clear();
+
+ code = "\n"
+ "template <class tclass, typename tname, int tint>\n"
+ "tname Hello(const tclass &e, @)\n"
+ "{\n"
+ " tname e2 = e;\n"
+ "}";
+
+ completions.append(QLatin1String("tclass"));
+ completions.append(QLatin1String("tname"));
+ completions.append(QLatin1String("tint"));
+ QTest::newRow("case: template parameters in template function parameters list")
+ << code << completions;
+}
+
void CppToolsPlugin::test_completion_enclosing_template_class()
{
test_completion();