forked from qt-creator/qt-creator
CppTools: Cover all permutations for each enum testcase
* named enum, access by value names * named enum, access by enum name (C++11) * anonymous enum + Add some failing tests Task-number: QTCREATORBUG-13757 Change-Id: I7b0a859805a5979c3c886a6dbec703639fb374be Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
committed by
Orgad Shaneh
parent
738572a4f2
commit
fb396ffbd4
@@ -310,10 +310,43 @@ void CppToolsPlugin::test_completion()
|
||||
actualCompletions.sort();
|
||||
expectedCompletions.sort();
|
||||
|
||||
QEXPECT_FAIL("enum_in_function_in_struct_in_function", "doesn't work", Abort);
|
||||
QEXPECT_FAIL("enum_in_function_in_struct_in_function", "QTCREATORBUG-13757", Abort);
|
||||
QEXPECT_FAIL("enum_in_function_in_struct_in_function_cxx11", "QTCREATORBUG-13757", Abort);
|
||||
QEXPECT_FAIL("enum_in_function_in_struct_in_function_anon", "QTCREATORBUG-13757", Abort);
|
||||
QEXPECT_FAIL("enum_inside_member_function", "QTCREATORBUG-13757", Abort);
|
||||
QEXPECT_FAIL("enum_inside_member_function_cxx11", "QTCREATORBUG-13757", Abort);
|
||||
QEXPECT_FAIL("enum_inside_member_function_anon", "QTCREATORBUG-13757", Abort);
|
||||
QEXPECT_FAIL("enum_in_class_accessed_in_member_func_cxx11", "QTCREATORBUG-13757", Abort);
|
||||
QEXPECT_FAIL("enum_in_class_accessed_in_member_func_inline_cxx11", "QTCREATORBUG-13757", Abort);
|
||||
QCOMPARE(actualCompletions, expectedCompletions);
|
||||
}
|
||||
|
||||
static void enumTestCase(const QByteArray &tag, const QByteArray &source,
|
||||
const QByteArray &prefix = QByteArray())
|
||||
{
|
||||
QByteArray fullSource = source;
|
||||
fullSource.replace('$', "enum E { val1, val2, val3 };");
|
||||
QTest::newRow(tag) << fullSource << (prefix + "val")
|
||||
<< (QStringList()
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
|
||||
QTest::newRow(tag + "_cxx11") << fullSource << (prefix + "E::")
|
||||
<< (QStringList()
|
||||
<< QLatin1String("E")
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
|
||||
fullSource.replace("enum E ", "enum ");
|
||||
QTest::newRow(tag + "_anon") << fullSource << (prefix + "val")
|
||||
<< (QStringList()
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
}
|
||||
|
||||
void CppToolsPlugin::test_completion_data()
|
||||
{
|
||||
QTest::addColumn<QByteArray>("code");
|
||||
@@ -1762,103 +1795,94 @@ void CppToolsPlugin::test_completion_data()
|
||||
<< QLatin1String("staticFun2")
|
||||
<< QLatin1String("m2"));
|
||||
|
||||
QTest::newRow("enum_inside_block_inside_function_cxx11_QTCREATORBUG5456") << _(
|
||||
"void foo()\n"
|
||||
"{\n"
|
||||
" {\n"
|
||||
" enum E { e1, e2, e3 };\n"
|
||||
" @\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
) << _("E::") << (QStringList()
|
||||
<< QLatin1String("E")
|
||||
<< QLatin1String("e1")
|
||||
<< QLatin1String("e2")
|
||||
<< QLatin1String("e3"));
|
||||
enumTestCase(
|
||||
"enum_inside_block_inside_function",
|
||||
"void foo()\n"
|
||||
"{\n"
|
||||
" {\n"
|
||||
" $\n"
|
||||
" @\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
);
|
||||
|
||||
QTest::newRow("enum_inside_function") << _(
|
||||
enumTestCase(
|
||||
"enum_inside_function",
|
||||
"void foo()\n"
|
||||
"{\n"
|
||||
" enum E { val1, val2, val3 };\n"
|
||||
" $\n"
|
||||
" @\n"
|
||||
"}\n"
|
||||
) << _("val") << (QStringList()
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
);
|
||||
|
||||
QTest::newRow("anon_enum_inside_function") << _(
|
||||
"void foo()\n"
|
||||
"{\n"
|
||||
" enum { val1, val2, val3 };\n"
|
||||
" @\n"
|
||||
"}\n"
|
||||
) << _("val") << (QStringList()
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
|
||||
QTest::newRow("enum_in_function_in_struct_in_function") << _(
|
||||
enumTestCase(
|
||||
"enum_in_function_in_struct_in_function",
|
||||
"void foo()\n"
|
||||
"{\n"
|
||||
" struct S {\n"
|
||||
" void fun()\n"
|
||||
" {\n"
|
||||
" enum E { val1, val2, val3 };\n"
|
||||
" $\n"
|
||||
" @\n"
|
||||
" }\n"
|
||||
" };\n"
|
||||
"}\n"
|
||||
) << _("val") << (QStringList()
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
);
|
||||
|
||||
QTest::newRow("enum_inside_function_cxx11_QTCREATORBUG5456") << _(
|
||||
"void foo()\n"
|
||||
enumTestCase(
|
||||
"enum_inside_class",
|
||||
"struct Foo\n"
|
||||
"{\n"
|
||||
" enum E { e1, e2, e3 };\n"
|
||||
" $\n"
|
||||
" @\n"
|
||||
"};\n",
|
||||
"Foo::"
|
||||
);
|
||||
|
||||
enumTestCase(
|
||||
"enum_inside_namespace",
|
||||
"namespace Ns\n"
|
||||
"{\n"
|
||||
" $\n"
|
||||
" @\n"
|
||||
"}\n",
|
||||
"Ns::"
|
||||
);
|
||||
|
||||
enumTestCase(
|
||||
"enum_inside_member_function",
|
||||
"class Foo { void func(); };\n"
|
||||
"void Foo::func()\n"
|
||||
"{\n"
|
||||
" $\n"
|
||||
" @\n"
|
||||
"}\n"
|
||||
) << _("E::") << (QStringList()
|
||||
<< QLatin1String("E")
|
||||
<< QLatin1String("e1")
|
||||
<< QLatin1String("e2")
|
||||
<< QLatin1String("e3"));
|
||||
);
|
||||
|
||||
QTest::newRow("enum_inside_class") << _(
|
||||
"struct Foo\n"
|
||||
enumTestCase(
|
||||
"enum_in_class_accessed_in_member_func_inline",
|
||||
"class Foo\n"
|
||||
"{\n"
|
||||
" enum E { val1, val2, val3 };\n"
|
||||
" @\n"
|
||||
" $\n"
|
||||
" void func()\n"
|
||||
" {\n"
|
||||
" @\n"
|
||||
" }\n"
|
||||
"};\n"
|
||||
) << _("Foo::v") << (QStringList()
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
);
|
||||
|
||||
QTest::newRow("enum_inside_class_cxx11") << _(
|
||||
"struct Foo\n"
|
||||
enumTestCase(
|
||||
"enum_in_class_accessed_in_member_func",
|
||||
"class Foo\n"
|
||||
"{\n"
|
||||
" enum E { val1, val2, val3 };\n"
|
||||
" @\n"
|
||||
" $\n"
|
||||
" void func();\n"
|
||||
"};\n"
|
||||
) << _("Foo::E::") << (QStringList()
|
||||
<< QLatin1String("E")
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
|
||||
QTest::newRow("anon_enum_inside_class") << _(
|
||||
"struct Foo\n"
|
||||
"void Foo::func()\n"
|
||||
"{\n"
|
||||
" enum { val1, val2, val3 };\n"
|
||||
" @\n"
|
||||
"};\n"
|
||||
) << _("Foo::v") << (QStringList()
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
"}\n"
|
||||
);
|
||||
|
||||
QTest::newRow("nested_anonymous_with___attribute__") << _(
|
||||
"struct Enclosing\n"
|
||||
@@ -1874,40 +1898,6 @@ void CppToolsPlugin::test_completion_data()
|
||||
<< QLatin1String("Enclosing")
|
||||
<< QLatin1String("i"));
|
||||
|
||||
QTest::newRow("enum_inside_namespace") << _(
|
||||
"namespace Ns\n"
|
||||
"{\n"
|
||||
" enum E { val1, val2, val3 };\n"
|
||||
" @\n"
|
||||
"}\n"
|
||||
) << _("Ns::v") << (QStringList()
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
|
||||
QTest::newRow("enum_inside_namespace_cxx11") << _(
|
||||
"namespace Ns\n"
|
||||
"{\n"
|
||||
" enum E { val1, val2, val3 };\n"
|
||||
" @\n"
|
||||
"}\n"
|
||||
) << _("Ns::E::") << (QStringList()
|
||||
<< QLatin1String("E")
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
|
||||
QTest::newRow("anon_enum_inside_namespace") << _(
|
||||
"namespace Ns\n"
|
||||
"{\n"
|
||||
" enum { val1, val2, val3 };\n"
|
||||
" @\n"
|
||||
"}\n"
|
||||
) << _("Ns::v") << (QStringList()
|
||||
<< QLatin1String("val1")
|
||||
<< QLatin1String("val2")
|
||||
<< QLatin1String("val3"));
|
||||
|
||||
QTest::newRow("lambdaCalls_1") << _(
|
||||
"struct S { int bar; };\n"
|
||||
"void foo()\n"
|
||||
|
||||
Reference in New Issue
Block a user