summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcompletion_test.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2013-05-22 08:46:09 +0200
committerErik Verbruggen <erik.verbruggen@digia.com>2013-05-24 11:46:48 +0200
commita439d12b4877f1e53c6d30f8d700f90d4ed73df0 (patch)
tree567b87a4ebda642f9d85ecf63390611b2d6ef94c /src/plugins/cpptools/cppcompletion_test.cpp
parent783ec18424289301bdf598e9a19dfb55f0847be9 (diff)
downloadqt-creator-a439d12b4877f1e53c6d30f8d700f90d4ed73df0.tar.gz
C++: fix typedefed struct
Fixed: * replacing dot with arrow * code completion Task-number: QTCREATORBUG-7373 Change-Id: I6bd3781e91876567ce6f0d4160373438c756c417 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.cpp168
1 files changed, 166 insertions, 2 deletions
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp
index c1012f3527..a3b56ca108 100644
--- a/src/plugins/cpptools/cppcompletion_test.cpp
+++ b/src/plugins/cpptools/cppcompletion_test.cpp
@@ -1473,7 +1473,61 @@ void CppToolsPlugin::test_completion_member_access_operator_1()
QVERIFY(replaceAccessOperator);
}
-void CppToolsPlugin::test_completion_typedef_of_type_and_replace_access_operator()
+void CppToolsPlugin::test_completion_typedef_of_type_and_decl_of_type_no_replace_access_operator()
+{
+ TestData data;
+ data.srcText = "\n"
+ "struct S { int m; };\n"
+ "typedef S SType;\n"
+ "SType p;\n"
+ "@\n"
+ "}\n"
+ ;
+ setup(&data);
+
+ Utils::ChangeSet change;
+ QString txt = QLatin1String("p.");
+ change.insert(data.pos, txt);
+ QTextCursor cursor(data.doc);
+ change.apply(&cursor);
+ data.pos += txt.length();
+
+ bool replaceAccessOperator = false;
+ QStringList completions = getCompletions(data, &replaceAccessOperator);
+
+ QCOMPARE(completions.size(), 2);
+ QVERIFY(completions.contains(QLatin1String("S")));
+ QVERIFY(completions.contains(QLatin1String("m")));
+ QVERIFY(! replaceAccessOperator);
+}
+
+void CppToolsPlugin::test_completion_typedef_of_pointer_and_decl_of_pointer_no_replace_access_operator()
+{
+ TestData data;
+ data.srcText = "\n"
+ "struct S { int m; };\n"
+ "typedef S *SType;\n"
+ "SType *p;\n"
+ "@\n"
+ "}\n"
+ ;
+ setup(&data);
+
+ Utils::ChangeSet change;
+ QString txt = QLatin1String("p.");
+ change.insert(data.pos, txt);
+ QTextCursor cursor(data.doc);
+ change.apply(&cursor);
+ data.pos += txt.length();
+
+ bool replaceAccessOperator = false;
+ QStringList completions = getCompletions(data, &replaceAccessOperator);
+
+ QCOMPARE(completions.size(), 0);
+ QVERIFY(! replaceAccessOperator);
+}
+
+void CppToolsPlugin::test_completion_typedef_of_type_and_decl_of_pointer_replace_access_operator()
{
TestData data;
data.srcText = "\n"
@@ -1501,7 +1555,7 @@ void CppToolsPlugin::test_completion_typedef_of_type_and_replace_access_operator
QVERIFY(replaceAccessOperator);
}
-void CppToolsPlugin::test_completion_typedef_of_pointer_of_type_and_replace_access_operator()
+void CppToolsPlugin::test_completion_typedef_of_pointer_and_decl_of_type_replace_access_operator()
{
TestData data;
data.srcText = "\n"
@@ -1529,6 +1583,116 @@ void CppToolsPlugin::test_completion_typedef_of_pointer_of_type_and_replace_acce
QVERIFY(replaceAccessOperator);
}
+void CppToolsPlugin::test_completion_predecl_typedef_of_type_and_decl_of_pointer_replace_access_operator()
+{
+ TestData data;
+ data.srcText = "\n"
+ "typedef struct S SType;\n"
+ "struct S { int m; };\n"
+ "SType *p;\n"
+ "@\n"
+ "}\n"
+ ;
+ setup(&data);
+
+ Utils::ChangeSet change;
+ QString txt = QLatin1String("p.");
+ change.insert(data.pos, txt);
+ QTextCursor cursor(data.doc);
+ change.apply(&cursor);
+ data.pos += txt.length();
+
+ bool replaceAccessOperator = false;
+ QStringList completions = getCompletions(data, &replaceAccessOperator);
+
+ QCOMPARE(completions.size(), 2);
+ QVERIFY(completions.contains(QLatin1String("S")));
+ QVERIFY(completions.contains(QLatin1String("m")));
+ QVERIFY(replaceAccessOperator);
+}
+
+void CppToolsPlugin::test_completion_predecl_typedef_of_type_and_decl_type_no_replace_access_operator()
+{
+ TestData data;
+ data.srcText = "\n"
+ "typedef struct S SType;\n"
+ "struct S { int m; };\n"
+ "SType p;\n"
+ "@\n"
+ "}\n"
+ ;
+ setup(&data);
+
+ Utils::ChangeSet change;
+ QString txt = QLatin1String("p.");
+ change.insert(data.pos, txt);
+ QTextCursor cursor(data.doc);
+ change.apply(&cursor);
+ data.pos += txt.length();
+
+ bool replaceAccessOperator = false;
+ QStringList completions = getCompletions(data, &replaceAccessOperator);
+
+ QCOMPARE(completions.size(), 2);
+ QVERIFY(completions.contains(QLatin1String("S")));
+ QVERIFY(completions.contains(QLatin1String("m")));
+ QVERIFY(! replaceAccessOperator);
+}
+
+void CppToolsPlugin::test_completion_predecl_typedef_of_pointer_and_decl_of_pointer_no_replace_access_operator()
+{
+ TestData data;
+ data.srcText = "\n"
+ "typedef struct S *SType;\n"
+ "struct S { int m; };\n"
+ "SType *p;\n"
+ "@\n"
+ "}\n"
+ ;
+ setup(&data);
+
+ Utils::ChangeSet change;
+ QString txt = QLatin1String("p.");
+ change.insert(data.pos, txt);
+ QTextCursor cursor(data.doc);
+ change.apply(&cursor);
+ data.pos += txt.length();
+
+ bool replaceAccessOperator = false;
+ QStringList completions = getCompletions(data, &replaceAccessOperator);
+
+ QCOMPARE(completions.size(), 0);
+ QVERIFY(! replaceAccessOperator);
+}
+
+void CppToolsPlugin::test_completion_predecl_typedef_of_pointer_and_decl_of_type_replace_access_operator()
+{
+ TestData data;
+ data.srcText = "\n"
+ "typedef struct S *SType;\n"
+ "struct S { int m; };\n"
+ "SType p;\n"
+ "@\n"
+ "}\n"
+ ;
+ setup(&data);
+
+ Utils::ChangeSet change;
+ QString txt = QLatin1String("p.");
+ change.insert(data.pos, txt);
+ QTextCursor cursor(data.doc);
+ change.apply(&cursor);
+ data.pos += txt.length();
+
+ bool replaceAccessOperator = false;
+ QStringList completions = getCompletions(data, &replaceAccessOperator);
+
+ QCOMPARE(completions.size(), 2);
+ QVERIFY(completions.contains(QLatin1String("S")));
+ QVERIFY(completions.contains(QLatin1String("m")));
+ QVERIFY(replaceAccessOperator);
+}
+
void CppToolsPlugin::test_completion_typedef_of_pointer()
{
TestData data;