From b03ba2bdb1ca4e96fa8be5da5c53fe48d8393c6f Mon Sep 17 00:00:00 2001 From: Przemyslaw Gorszkowski Date: Sat, 13 Oct 2012 15:27:42 +0200 Subject: [PATCH] Unit tests for code completion Unit tests for code completion for nested class when enclosing is a template Change-Id: I409f742923468db23dd9a8e4c18cbb21b1e52dd9 Reviewed-by: hjk --- src/plugins/cpptools/cppcompletion_test.cpp | 46 ++++++++++++++++++++- src/plugins/cpptools/cpptoolsplugin.h | 2 + 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp index f36ac54a6c4..1ebf2282dfb 100644 --- a/src/plugins/cpptools/cppcompletion_test.cpp +++ b/src/plugins/cpptools/cppcompletion_test.cpp @@ -812,7 +812,6 @@ void CppToolsPlugin::test_completion_base_class_has_name_the_same_as_derived_dat } - void CppToolsPlugin::test_completion_cyclic_inheritance() { test_completion(); @@ -970,3 +969,48 @@ void CppToolsPlugin::test_completion_cyclic_inheritance_data() << code << completions; } + +void CppToolsPlugin::test_completion_enclosing_template_class() +{ + test_completion(); +} + +void CppToolsPlugin::test_completion_enclosing_template_class_data() +{ + QTest::addColumn("code"); + QTest::addColumn("expectedCompletions"); + + QByteArray code; + QStringList completions; + + code = "\n" + "template\n" + "struct Enclosing\n" + "{\n" + " struct Nested { int int_nested; }; \n" + " int int_enclosing;\n" + "};\n" + "\n" + "Enclosing::Nested c;" + "@\n"; + completions.append("Nested"); + completions.append("int_nested"); + QTest::newRow("case: nested class with enclosing template class") + << code << completions; + + completions.clear(); + + code = "\n" + "template\n" + "struct Enclosing\n" + "{\n" + " template struct Nested { int int_nested; }; \n" + " int int_enclosing;\n" + "};\n" + "\n" + "Enclosing::Nested c;" + "@\n"; + completions.append("Nested"); + completions.append("int_nested"); + QTest::newRow("case: nested template class with enclosing template class") + << code << completions;} diff --git a/src/plugins/cpptools/cpptoolsplugin.h b/src/plugins/cpptools/cpptoolsplugin.h index 3acba5359b6..68d91ca5293 100644 --- a/src/plugins/cpptools/cpptoolsplugin.h +++ b/src/plugins/cpptools/cpptoolsplugin.h @@ -104,6 +104,8 @@ private slots: void test_completion_base_class_has_name_the_same_as_derived_data(); void test_completion_cyclic_inheritance(); void test_completion_cyclic_inheritance_data(); + void test_completion_enclosing_template_class(); + void test_completion_enclosing_template_class_data(); private: void test_completion();