94 lines
2.6 KiB
C++
94 lines
2.6 KiB
C++
/** @file
|
|
|
|
$Id$
|
|
|
|
$Date$
|
|
$Author$
|
|
|
|
@copy © Marc Wäckerlin
|
|
@license LGPL, see file <a href="license.html">COPYING</a>
|
|
|
|
$Log$
|
|
Revision 1.2 2004/08/28 16:21:25 marc
|
|
mrw-c++-0.92 (mrw)
|
|
- new file: version.cpp
|
|
- new file header for all sources
|
|
- work around warning in mrw::auto<T>
|
|
- possibility to compile without log4cxx
|
|
- work around bugs in demangle.h and libiberty.h
|
|
- corrections in documentation
|
|
- added simple tracing mechanism
|
|
- more warnings
|
|
- small corrections in Auto<>::Free and a new test for it
|
|
- possibility to compile without stack trace
|
|
|
|
*/
|
|
#include <mrw/exception.hpp>
|
|
#include <log4cxx/basicconfigurator.h>
|
|
#include <cppunit/TestFixture.h>
|
|
#include <cppunit/ui/text/TestRunner.h>
|
|
#include <cppunit/extensions/HelperMacros.h>
|
|
#include <cppunit/extensions/TestFactoryRegistry.h>
|
|
|
|
namespace mrw {
|
|
class AutoExcLog4CxxTest: public CppUnit::TestFixture {
|
|
private:
|
|
bool enter_unexpectedThrow;
|
|
bool exit_unexpectedThrow;
|
|
bool enter_passUnexpected;
|
|
bool exit_passUnexpected;
|
|
bool enter_catchUnexpected;
|
|
bool exit_catchUnexpected;
|
|
public:
|
|
void setUp() {
|
|
enter_unexpectedThrow = false;
|
|
exit_unexpectedThrow = false;
|
|
enter_passUnexpected = false;
|
|
exit_passUnexpected = false;
|
|
enter_catchUnexpected = false;
|
|
exit_catchUnexpected = false;
|
|
}
|
|
void unexpectedThrow() throw(std::bad_exception) {
|
|
enter_unexpectedThrow = true;
|
|
throw mrw::exception();
|
|
exit_unexpectedThrow = true;
|
|
}
|
|
void passUnexpected() throw(std::bad_exception) {
|
|
enter_passUnexpected = true;
|
|
unexpectedThrow();
|
|
exit_passUnexpected = true;
|
|
}
|
|
void catchUnexpected() throw() {
|
|
enter_catchUnexpected = true;
|
|
bool caught(false);
|
|
try {
|
|
passUnexpected();
|
|
} catch (std::bad_exception&) {
|
|
caught = true;
|
|
}
|
|
CPPUNIT_ASSERT(caught);
|
|
exit_catchUnexpected = true;
|
|
}
|
|
void testcase() {
|
|
catchUnexpected();
|
|
CPPUNIT_ASSERT(enter_catchUnexpected &&
|
|
enter_passUnexpected &&
|
|
enter_unexpectedThrow &&
|
|
exit_catchUnexpected &&
|
|
!exit_passUnexpected &&
|
|
!exit_unexpectedThrow);
|
|
}
|
|
CPPUNIT_TEST_SUITE(AutoExcLog4CxxTest);
|
|
CPPUNIT_TEST(testcase);
|
|
CPPUNIT_TEST_SUITE_END();
|
|
};
|
|
CPPUNIT_TEST_SUITE_REGISTRATION(AutoExcLog4CxxTest);
|
|
}
|
|
|
|
int main() {
|
|
log4cxx::BasicConfigurator::configure();
|
|
CppUnit::TextUi::TestRunner runner;
|
|
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
|
|
return runner.run() ? 0 : 1;
|
|
}
|