move symbol database tests to testsymboldatabase.cpp
This commit is contained in:
parent
e8eb20c6ef
commit
bd03768415
|
@ -191,24 +191,6 @@ private:
|
||||||
TEST_CASE(constIfCfg); // ticket #1881 - fp when there are #if
|
TEST_CASE(constIfCfg); // ticket #1881 - fp when there are #if
|
||||||
TEST_CASE(constFriend); // ticket #1921 - fp for friend function
|
TEST_CASE(constFriend); // ticket #1921 - fp for friend function
|
||||||
TEST_CASE(constUnion); // ticket #2111 - fp when there are union
|
TEST_CASE(constUnion); // ticket #2111 - fp when there are union
|
||||||
|
|
||||||
TEST_CASE(symboldatabase1);
|
|
||||||
TEST_CASE(symboldatabase2);
|
|
||||||
TEST_CASE(symboldatabase3); // ticket #2000
|
|
||||||
TEST_CASE(symboldatabase4);
|
|
||||||
TEST_CASE(symboldatabase5); // ticket #2178
|
|
||||||
TEST_CASE(symboldatabase6); // ticket #2221
|
|
||||||
TEST_CASE(symboldatabase7); // ticket #2230
|
|
||||||
TEST_CASE(symboldatabase8); // ticket #2252
|
|
||||||
TEST_CASE(symboldatabase9); // ticket #2525
|
|
||||||
TEST_CASE(symboldatabase10); // ticket #2537
|
|
||||||
TEST_CASE(symboldatabase11); // ticket #2539
|
|
||||||
TEST_CASE(symboldatabase12); // ticket #2547
|
|
||||||
TEST_CASE(symboldatabase13); // ticket #2577
|
|
||||||
TEST_CASE(symboldatabase14); // ticket #2589
|
|
||||||
TEST_CASE(symboldatabase15); // ticket #2591
|
|
||||||
TEST_CASE(symboldatabase16); // ticket #2637
|
|
||||||
TEST_CASE(symboldatabase17); // ticket #2657
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check the operator Equal
|
// Check the operator Equal
|
||||||
|
@ -6171,221 +6153,6 @@ private:
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void symboldatabase1()
|
|
||||||
{
|
|
||||||
checkConst("namespace foo {\n"
|
|
||||||
" class bar;\n"
|
|
||||||
"};");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
|
|
||||||
checkConst("class foo : public bar < int, int> {\n"
|
|
||||||
"};");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase2()
|
|
||||||
{
|
|
||||||
checkConst("class foo {\n"
|
|
||||||
"public slots :\n"
|
|
||||||
"foo() { }\n"
|
|
||||||
"};");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
|
|
||||||
checkConst("class foo {\n"
|
|
||||||
"class bar;\n"
|
|
||||||
"foo() { }\n"
|
|
||||||
"};");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase3()
|
|
||||||
{
|
|
||||||
checkConst("typedef void (func_type)();\n"
|
|
||||||
"struct A {\n"
|
|
||||||
" friend func_type f : 2;\n"
|
|
||||||
"};\n");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase4()
|
|
||||||
{
|
|
||||||
checkConst("static void function_declaration_before(void) __attribute__((__used__));\n"
|
|
||||||
"static void function_declaration_before(void) {}\n"
|
|
||||||
"static void function_declaration_after(void) {}\n"
|
|
||||||
"static void function_declaration_after(void) __attribute__((__used__));\n");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
|
|
||||||
checkConst("main(int argc, char *argv[]) { }\n");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
|
|
||||||
checkConst("namespace boost {\n"
|
|
||||||
" std::locale generate_locale()\n"
|
|
||||||
" {\n"
|
|
||||||
" return std::locale();\n"
|
|
||||||
" }\n"
|
|
||||||
"}\n");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
|
|
||||||
checkConst("namespace X {\n"
|
|
||||||
" static void function_declaration_before(void) __attribute__((__used__));\n"
|
|
||||||
" static void function_declaration_before(void) {}\n"
|
|
||||||
" static void function_declaration_after(void) {}\n"
|
|
||||||
" static void function_declaration_after(void) __attribute__((__used__));\n"
|
|
||||||
"}\n");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
|
|
||||||
checkConst("testing::testing()\n"
|
|
||||||
"{\n"
|
|
||||||
"}\n");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase5()
|
|
||||||
{
|
|
||||||
// ticket #2178 - segmentation fault
|
|
||||||
checkConst("int CL_INLINE_DECL(integer_decode_float) (int x) {\n"
|
|
||||||
" return (sign ? cl_I() : 0);\n"
|
|
||||||
"}\n");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase6()
|
|
||||||
{
|
|
||||||
// ticket #2221 - segmentation fault
|
|
||||||
checkConst("template<int i> class X { };\n"
|
|
||||||
"X< 1>2 > x1;\n"
|
|
||||||
"X<(1>2)> x2;\n"
|
|
||||||
"template<class T> class Y { };\n"
|
|
||||||
"Y<X<1>> x3;\n"
|
|
||||||
"Y<X<6>>1>> x4;\n"
|
|
||||||
"Y<X<(6>>1)>> x5;\n");
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase7()
|
|
||||||
{
|
|
||||||
// ticket #2230 - segmentation fault
|
|
||||||
checkConst("template<template<class> class E,class D> class C : E<D>\n"
|
|
||||||
"{\n"
|
|
||||||
"public:\n"
|
|
||||||
" int f();\n"
|
|
||||||
"};\n"
|
|
||||||
"class E : C<D,int>\n"
|
|
||||||
"{\n"
|
|
||||||
"public:\n"
|
|
||||||
" int f() { return C< ::D,int>::f(); }\n"
|
|
||||||
"};\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase8()
|
|
||||||
{
|
|
||||||
// ticket #2252 - segmentation fault
|
|
||||||
checkConst("struct PaletteColorSpaceHolder: public rtl::StaticWithInit<uno::Reference<rendering::XColorSpace>,\n"
|
|
||||||
" PaletteColorSpaceHolder>\n"
|
|
||||||
"{\n"
|
|
||||||
" uno::Reference<rendering::XColorSpace> operator()()\n"
|
|
||||||
" {\n"
|
|
||||||
" return vcl::unotools::createStandardColorSpace();\n"
|
|
||||||
" }\n"
|
|
||||||
"};\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase9()
|
|
||||||
{
|
|
||||||
// ticket #2425 - segmentation fault
|
|
||||||
checkConst("class CHyperlink : public CString\n"
|
|
||||||
"{\n"
|
|
||||||
"public:\n"
|
|
||||||
" const CHyperlink& operator=(LPCTSTR lpsz) {\n"
|
|
||||||
" CString::operator=(lpsz);\n"
|
|
||||||
" return *this;\n"
|
|
||||||
" }\n"
|
|
||||||
"};\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase10()
|
|
||||||
{
|
|
||||||
// ticket #2537 - segmentation fault
|
|
||||||
checkConst("class A {\n"
|
|
||||||
"private:\n"
|
|
||||||
" void f();\n"
|
|
||||||
"};\n"
|
|
||||||
"class B {\n"
|
|
||||||
" friend void A::f();\n"
|
|
||||||
"};\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase11()
|
|
||||||
{
|
|
||||||
// ticket #2539 - segmentation fault
|
|
||||||
checkConst("int g ();\n"
|
|
||||||
"struct S {\n"
|
|
||||||
" int i : (false ? g () : 1);\n"
|
|
||||||
"};\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase12()
|
|
||||||
{
|
|
||||||
// ticket #2547 - segmentation fault
|
|
||||||
checkConst("class foo {\n"
|
|
||||||
" void bar2 () = __null;\n"
|
|
||||||
"};\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase13()
|
|
||||||
{
|
|
||||||
// ticket #2577 - segmentation fault
|
|
||||||
checkConst("class foo {\n"
|
|
||||||
" void bar2 () = A::f;\n"
|
|
||||||
"};\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase14()
|
|
||||||
{
|
|
||||||
// ticket #2589 - segmentation fault
|
|
||||||
checkConst("struct B : A\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase15()
|
|
||||||
{
|
|
||||||
// ticket #2591 - segmentation fault
|
|
||||||
checkConst("struct A :\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase16()
|
|
||||||
{
|
|
||||||
// ticket #2637 - segmentation fault
|
|
||||||
checkConst("{} const const\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void symboldatabase17()
|
|
||||||
{
|
|
||||||
// ticket #2657 - segmentation fault
|
|
||||||
checkConst("return f(){}\n");
|
|
||||||
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
REGISTER_TEST(TestClass)
|
REGISTER_TEST(TestClass)
|
||||||
|
|
|
@ -102,6 +102,24 @@ private:
|
||||||
TEST_CASE(hasGlobalVariables3);
|
TEST_CASE(hasGlobalVariables3);
|
||||||
|
|
||||||
TEST_CASE(functionArgs1);
|
TEST_CASE(functionArgs1);
|
||||||
|
|
||||||
|
TEST_CASE(symboldatabase1);
|
||||||
|
TEST_CASE(symboldatabase2);
|
||||||
|
TEST_CASE(symboldatabase3); // ticket #2000
|
||||||
|
TEST_CASE(symboldatabase4);
|
||||||
|
TEST_CASE(symboldatabase5); // ticket #2178
|
||||||
|
TEST_CASE(symboldatabase6); // ticket #2221
|
||||||
|
TEST_CASE(symboldatabase7); // ticket #2230
|
||||||
|
TEST_CASE(symboldatabase8); // ticket #2252
|
||||||
|
TEST_CASE(symboldatabase9); // ticket #2525
|
||||||
|
TEST_CASE(symboldatabase10); // ticket #2537
|
||||||
|
TEST_CASE(symboldatabase11); // ticket #2539
|
||||||
|
TEST_CASE(symboldatabase12); // ticket #2547
|
||||||
|
TEST_CASE(symboldatabase13); // ticket #2577
|
||||||
|
TEST_CASE(symboldatabase14); // ticket #2589
|
||||||
|
TEST_CASE(symboldatabase15); // ticket #2591
|
||||||
|
TEST_CASE(symboldatabase16); // ticket #2637
|
||||||
|
TEST_CASE(symboldatabase17); // ticket #2657
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_isVariableDeclarationCanHandleNull()
|
void test_isVariableDeclarationCanHandleNull()
|
||||||
|
@ -637,6 +655,220 @@ private:
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void symboldatabase1()
|
||||||
|
{
|
||||||
|
check("namespace foo {\n"
|
||||||
|
" class bar;\n"
|
||||||
|
"};");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("class foo : public bar < int, int> {\n"
|
||||||
|
"};");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase2()
|
||||||
|
{
|
||||||
|
check("class foo {\n"
|
||||||
|
"public slots :\n"
|
||||||
|
"foo() { }\n"
|
||||||
|
"};");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("class foo {\n"
|
||||||
|
"class bar;\n"
|
||||||
|
"foo() { }\n"
|
||||||
|
"};");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase3()
|
||||||
|
{
|
||||||
|
check("typedef void (func_type)();\n"
|
||||||
|
"struct A {\n"
|
||||||
|
" friend func_type f : 2;\n"
|
||||||
|
"};\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase4()
|
||||||
|
{
|
||||||
|
check("static void function_declaration_before(void) __attribute__((__used__));\n"
|
||||||
|
"static void function_declaration_before(void) {}\n"
|
||||||
|
"static void function_declaration_after(void) {}\n"
|
||||||
|
"static void function_declaration_after(void) __attribute__((__used__));\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("main(int argc, char *argv[]) { }\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("namespace boost {\n"
|
||||||
|
" std::locale generate_locale()\n"
|
||||||
|
" {\n"
|
||||||
|
" return std::locale();\n"
|
||||||
|
" }\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("namespace X {\n"
|
||||||
|
" static void function_declaration_before(void) __attribute__((__used__));\n"
|
||||||
|
" static void function_declaration_before(void) {}\n"
|
||||||
|
" static void function_declaration_after(void) {}\n"
|
||||||
|
" static void function_declaration_after(void) __attribute__((__used__));\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("testing::testing()\n"
|
||||||
|
"{\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase5()
|
||||||
|
{
|
||||||
|
// ticket #2178 - segmentation fault
|
||||||
|
check("int CL_INLINE_DECL(integer_decode_float) (int x) {\n"
|
||||||
|
" return (sign ? cl_I() : 0);\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase6()
|
||||||
|
{
|
||||||
|
// ticket #2221 - segmentation fault
|
||||||
|
check("template<int i> class X { };\n"
|
||||||
|
"X< 1>2 > x1;\n"
|
||||||
|
"X<(1>2)> x2;\n"
|
||||||
|
"template<class T> class Y { };\n"
|
||||||
|
"Y<X<1>> x3;\n"
|
||||||
|
"Y<X<6>>1>> x4;\n"
|
||||||
|
"Y<X<(6>>1)>> x5;\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase7()
|
||||||
|
{
|
||||||
|
// ticket #2230 - segmentation fault
|
||||||
|
check("template<template<class> class E,class D> class C : E<D>\n"
|
||||||
|
"{\n"
|
||||||
|
"public:\n"
|
||||||
|
" int f();\n"
|
||||||
|
"};\n"
|
||||||
|
"class E : C<D,int>\n"
|
||||||
|
"{\n"
|
||||||
|
"public:\n"
|
||||||
|
" int f() { return C< ::D,int>::f(); }\n"
|
||||||
|
"};\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase8()
|
||||||
|
{
|
||||||
|
// ticket #2252 - segmentation fault
|
||||||
|
check("struct PaletteColorSpaceHolder: public rtl::StaticWithInit<uno::Reference<rendering::XColorSpace>,\n"
|
||||||
|
" PaletteColorSpaceHolder>\n"
|
||||||
|
"{\n"
|
||||||
|
" uno::Reference<rendering::XColorSpace> operator()()\n"
|
||||||
|
" {\n"
|
||||||
|
" return vcl::unotools::createStandardColorSpace();\n"
|
||||||
|
" }\n"
|
||||||
|
"};\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase9()
|
||||||
|
{
|
||||||
|
// ticket #2425 - segmentation fault
|
||||||
|
check("class CHyperlink : public CString\n"
|
||||||
|
"{\n"
|
||||||
|
"public:\n"
|
||||||
|
" const CHyperlink& operator=(LPCTSTR lpsz) {\n"
|
||||||
|
" CString::operator=(lpsz);\n"
|
||||||
|
" return *this;\n"
|
||||||
|
" }\n"
|
||||||
|
"};\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase10()
|
||||||
|
{
|
||||||
|
// ticket #2537 - segmentation fault
|
||||||
|
check("class A {\n"
|
||||||
|
"private:\n"
|
||||||
|
" void f();\n"
|
||||||
|
"};\n"
|
||||||
|
"class B {\n"
|
||||||
|
" friend void A::f();\n"
|
||||||
|
"};\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase11()
|
||||||
|
{
|
||||||
|
// ticket #2539 - segmentation fault
|
||||||
|
check("int g ();\n"
|
||||||
|
"struct S {\n"
|
||||||
|
" int i : (false ? g () : 1);\n"
|
||||||
|
"};\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase12()
|
||||||
|
{
|
||||||
|
// ticket #2547 - segmentation fault
|
||||||
|
check("class foo {\n"
|
||||||
|
" void bar2 () = __null;\n"
|
||||||
|
"};\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase13()
|
||||||
|
{
|
||||||
|
// ticket #2577 - segmentation fault
|
||||||
|
check("class foo {\n"
|
||||||
|
" void bar2 () = A::f;\n"
|
||||||
|
"};\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase14()
|
||||||
|
{
|
||||||
|
// ticket #2589 - segmentation fault
|
||||||
|
check("struct B : A\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase15()
|
||||||
|
{
|
||||||
|
// ticket #2591 - segmentation fault
|
||||||
|
check("struct A :\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase16()
|
||||||
|
{
|
||||||
|
// ticket #2637 - segmentation fault
|
||||||
|
check("{} const const\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void symboldatabase17()
|
||||||
|
{
|
||||||
|
// ticket #2657 - segmentation fault
|
||||||
|
check("return f(){}\n");
|
||||||
|
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
REGISTER_TEST(TestSymbolDatabase)
|
REGISTER_TEST(TestSymbolDatabase)
|
||||||
|
|
Loading…
Reference in New Issue