summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcompletion_test.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2013-01-30 12:27:28 +0100
committerPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2013-02-01 09:16:15 +0100
commit21500d54b7743b35ef9ab217d66933ae057522d1 (patch)
tree376609c27c1cf7e848a3762ca2e63a93cfa97c05 /src/plugins/cpptools/cppcompletion_test.cpp
parente9f219c335a2d56d0076a24f2c0ad1f8ed1bd2ed (diff)
downloadqt-creator-21500d54b7743b35ef9ab217d66933ae057522d1.tar.gz
C++: fix replacing dot(.) with arrow(->)
Fix replacing operator dot(.) with operator arrow(->) for typedef pointer. Task-number: QTCREATORBUG-8488 Change-Id: Ic4462bc437a4aa37adfed4fa50b32d9bc20fe194 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cppcompletion_test.cpp')
-rw-r--r--src/plugins/cpptools/cppcompletion_test.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp
index 3c42969f23..51da35ad51 100644
--- a/src/plugins/cpptools/cppcompletion_test.cpp
+++ b/src/plugins/cpptools/cppcompletion_test.cpp
@@ -1354,3 +1354,59 @@ void CppToolsPlugin::test_completion_member_access_operator_1()
QVERIFY(completions.contains(QLatin1String("t")));
QVERIFY(replaceAccessOperator);
}
+
+void CppToolsPlugin::test_completion_typedef_of_type_and_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_of_type_and_replace_access_operator()
+{
+ TestData data;
+ data.srcText = "\n"
+ "struct S { int m; };\n"
+ "typedef S* SPtr;\n"
+ "SPtr 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);
+}