From bd0376841562bfa638de184a34f159579b45b726 Mon Sep 17 00:00:00 2001 From: Robert Reif Date: Thu, 28 Apr 2011 21:03:57 -0400 Subject: [PATCH] move symbol database tests to testsymboldatabase.cpp --- test/testclass.cpp | 233 ----------------------------------- test/testsymboldatabase.cpp | 234 +++++++++++++++++++++++++++++++++++- 2 files changed, 233 insertions(+), 234 deletions(-) diff --git a/test/testclass.cpp b/test/testclass.cpp index 9446ded14..92565221a 100644 --- a/test/testclass.cpp +++ b/test/testclass.cpp @@ -191,24 +191,6 @@ private: TEST_CASE(constIfCfg); // ticket #1881 - fp when there are #if TEST_CASE(constFriend); // ticket #1921 - fp for friend function 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 @@ -6171,221 +6153,6 @@ private: 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 class X { };\n" - "X< 1>2 > x1;\n" - "X<(1>2)> x2;\n" - "template class Y { };\n" - "Y> x3;\n" - "Y>1>> x4;\n" - "Y>1)>> x5;\n"); - ASSERT_EQUALS("", errout.str()); - } - - void symboldatabase7() - { - // ticket #2230 - segmentation fault - checkConst("template class E,class D> class C : E\n" - "{\n" - "public:\n" - " int f();\n" - "};\n" - "class E : C\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,\n" - " PaletteColorSpaceHolder>\n" - "{\n" - " uno::Reference 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) diff --git a/test/testsymboldatabase.cpp b/test/testsymboldatabase.cpp index 7ed0b0db1..d25530ae0 100644 --- a/test/testsymboldatabase.cpp +++ b/test/testsymboldatabase.cpp @@ -102,6 +102,24 @@ private: TEST_CASE(hasGlobalVariables3); 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() @@ -636,7 +654,221 @@ private: 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 class X { };\n" + "X< 1>2 > x1;\n" + "X<(1>2)> x2;\n" + "template class Y { };\n" + "Y> x3;\n" + "Y>1>> x4;\n" + "Y>1)>> x5;\n"); + ASSERT_EQUALS("", errout.str()); + } + + void symboldatabase7() + { + // ticket #2230 - segmentation fault + check("template class E,class D> class C : E\n" + "{\n" + "public:\n" + " int f();\n" + "};\n" + "class E : C\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,\n" + " PaletteColorSpaceHolder>\n" + "{\n" + " uno::Reference 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)