CppEditor: Improve insert position for AddIncludeForUndefinedIdentifier

Includes of moc files are not considered while determining the new
include's position. Further the new include is inserted at its
"alphabeticaly sorted" position.

Task-number: QTCREATORBUG-8871
Change-Id: I67b40a6f538112753298b960da488e24f4643808
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
Lorenz Haas
2013-04-21 14:37:08 +02:00
committed by Nikolai Kosjar
parent f5ccdb6b23
commit 7ef611047f
3 changed files with 237 additions and 52 deletions

View File

@@ -969,13 +969,176 @@ void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier_normal()
"}\n"
;
expected =
"#include \"file.h\"\n"
"#include \"someheader.h\"\n"
"\n"
"void f()\n"
"{\n"
" Foo foo;\n"
"}\n"
"\n"
;
testFiles << TestDocument::create(original, expected, QLatin1String("file.cpp"));
AddIncludeForUndefinedIdentifier factory;
TestCase data(testFiles);
data.run(&factory);
}
/// Check add include, ignoring any moc includes.
void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier_ignoremoc()
{
QList<TestDocumentPtr> testFiles;
QByteArray original;
QByteArray expected;
// Header File
original = "class Foo {};\n";
expected = original + "\n";
testFiles << TestDocument::create(original, expected, QLatin1String("file.h"));
// Source File
original =
"void f()\n"
"{\n"
" Fo@o foo;\n"
"}\n"
"#include \"file.moc\";\n"
;
expected =
"#include \"file.h\"\n"
"\n"
"void f()\n"
"{\n"
" Foo foo;\n"
"}\n"
"#include \"file.moc\";\n"
"\n"
;
testFiles << TestDocument::create(original, expected, QLatin1String("file.cpp"));
AddIncludeForUndefinedIdentifier factory;
TestCase data(testFiles);
data.run(&factory);
}
/// Check add include sorting top
void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier_sortingTop()
{
QList<TestDocumentPtr> testFiles;
QByteArray original;
QByteArray expected;
// Header File
original = "class Foo {};\n";
expected = original + "\n";
testFiles << TestDocument::create(original, expected, QLatin1String("file.h"));
// Source File
original =
"#include \"y.h\"\n"
"#include \"z.h\"\n"
"void f()\n"
"{\n"
" Fo@o foo;\n"
"}\n"
"#include \"file.moc\";\n"
;
expected =
"#include \"file.h\"\n"
"#include \"y.h\"\n"
"#include \"z.h\"\n"
"void f()\n"
"{\n"
" Foo foo;\n"
"}\n"
"#include \"file.moc\";\n"
"\n"
;
testFiles << TestDocument::create(original, expected, QLatin1String("file.cpp"));
AddIncludeForUndefinedIdentifier factory;
TestCase data(testFiles);
data.run(&factory);
}
/// Check add include sorting middle
void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier_sortingMiddle()
{
QList<TestDocumentPtr> testFiles;
QByteArray original;
QByteArray expected;
// Header File
original = "class Foo {};\n";
expected = original + "\n";
testFiles << TestDocument::create(original, expected, QLatin1String("file.h"));
// Source File
original =
"#include \"a.h\"\n"
"#include \"z.h\"\n"
"void f()\n"
"{\n"
" Fo@o foo;\n"
"}\n"
"#include \"file.moc\";\n"
;
expected =
"#include \"a.h\"\n"
"#include \"file.h\"\n"
"#include \"z.h\"\n"
"void f()\n"
"{\n"
" Foo foo;\n"
"}\n"
"#include \"file.moc\";\n"
"\n"
;
testFiles << TestDocument::create(original, expected, QLatin1String("file.cpp"));
AddIncludeForUndefinedIdentifier factory;
TestCase data(testFiles);
data.run(&factory);
}
/// Check add include sorting bottom
void CppEditorPlugin::test_quickfix_AddIncludeForUndefinedIdentifier_sortingBottom()
{
QList<TestDocumentPtr> testFiles;
QByteArray original;
QByteArray expected;
// Header File
original = "class Foo {};\n";
expected = original + "\n";
testFiles << TestDocument::create(original, expected, QLatin1String("file.h"));
// Source File
original =
"#include \"a.h\"\n"
"#include \"b.h\"\n"
"void f()\n"
"{\n"
" Fo@o foo;\n"
"}\n"
"#include \"file.moc\";\n"
;
expected =
"#include \"a.h\"\n"
"#include \"b.h\"\n"
"#include \"file.h\"\n"
"void f()\n"
"{\n"
" Foo foo;\n"
"}\n"
"#include \"file.moc\";\n"
"\n"
;
testFiles << TestDocument::create(original, expected, QLatin1String("file.cpp"));