Virtual destructors: extended and fixed the testing

This commit is contained in:
Robert Reif 2010-08-09 21:22:46 +02:00 committed by Daniel Marjamäki
parent bf1352c573
commit 0b41d822cb
1 changed files with 17 additions and 5 deletions

View File

@ -444,7 +444,6 @@ private:
// Check.. // Check..
Settings settings; Settings settings;
settings.inconclusive = true;
settings._checkCodingStyle = true; settings._checkCodingStyle = true;
CheckClass checkClass(&tokenizer, &settings, this); CheckClass checkClass(&tokenizer, &settings, this);
checkClass.operatorEqToSelf(); checkClass.operatorEqToSelf();
@ -1207,6 +1206,7 @@ private:
// Check.. // Check..
Settings settings; Settings settings;
settings.inconclusive = true;
CheckClass checkClass(&tokenizer, &settings, this); CheckClass checkClass(&tokenizer, &settings, this);
checkClass.virtualDestructor(); checkClass.virtualDestructor();
} }
@ -1228,6 +1228,15 @@ private:
checkVirtualDestructor("class Base { };\n" checkVirtualDestructor("class Base { };\n"
"class Derived : public Base { public: ~Derived() { (void)11; } };"); "class Derived : public Base { public: ~Derived() { (void)11; } };");
ASSERT_EQUALS("[test.cpp:1]: (error) Class Base which is inherited by class Derived does not have a virtual destructor\n", errout.str());
checkVirtualDestructor("class Base { };\n"
"class Derived : protected Base { public: ~Derived() { (void)11; } };");
TODO_ASSERT_EQUALS("[test.cpp:1]: (error) Class Base which is inherited by class Derived does not have a virtual destructor\n", errout.str());
ASSERT_EQUALS("", errout.str());
checkVirtualDestructor("class Base { };\n"
"class Derived : private Base { public: ~Derived() { (void)11; } };");
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());
checkVirtualDestructor("class Base { };\n" checkVirtualDestructor("class Base { };\n"
@ -1241,11 +1250,16 @@ private:
checkVirtualDestructor("class Base { public: ~Base(); };\n" checkVirtualDestructor("class Base { public: ~Base(); };\n"
"class Derived : public Base { public: ~Derived() { (void)11; } };"); "class Derived : public Base { public: ~Derived() { (void)11; } };");
ASSERT_EQUALS("[test.cpp:1]: (error) Class Base which is inherited by class Derived does not have a virtual destructor\n", errout.str());
checkVirtualDestructor("class Base { public: ~Base(); };\n"
"class Derived : protected Base { public: ~Derived() { (void)11; } };");
TODO_ASSERT_EQUALS("[test.cpp:1]: (error) Class Base which is inherited by class Derived does not have a virtual destructor\n", errout.str());
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());
checkVirtualDestructor("class Base { public: ~Base(); };\n" checkVirtualDestructor("class Base { public: ~Base(); };\n"
"class Derived : private Fred, public Base { public: ~Derived() { (void)11; } };"); "class Derived : private Fred, public Base { public: ~Derived() { (void)11; } };");
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("[test.cpp:1]: (error) Class Base which is inherited by class Derived does not have a virtual destructor\n", errout.str());
} }
void virtualDestructor4() void virtualDestructor4()
@ -1403,7 +1417,7 @@ private:
" public:\n" " public:\n"
" ~B(){int a;}\n" " ~B(){int a;}\n"
"};\n"); "};\n");
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("[test.cpp:7]: (error) Class AA<double> which is inherited by class B does not have a virtual destructor\n", errout.str());
} }
void checkUninitVar(const char code[]) void checkUninitVar(const char code[])
@ -1419,7 +1433,6 @@ private:
// Check.. // Check..
Settings settings; Settings settings;
settings.inconclusive = true;
settings._checkCodingStyle = true; settings._checkCodingStyle = true;
CheckClass checkClass(&tokenizer, &settings, this); CheckClass checkClass(&tokenizer, &settings, this);
checkClass.constructors(); checkClass.constructors();
@ -2338,7 +2351,6 @@ private:
// Check.. // Check..
Settings settings; Settings settings;
settings._checkCodingStyle = true; settings._checkCodingStyle = true;
settings.inconclusive = true;
CheckClass checkClass(&tokenizer, &settings, this); CheckClass checkClass(&tokenizer, &settings, this);
checkClass.thisSubtraction(); checkClass.thisSubtraction();
} }