summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/CppUnit/src/DefaultProtector.cpp')
-rw-r--r--3rdParty/CppUnit/src/DefaultProtector.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/3rdParty/CppUnit/src/DefaultProtector.cpp b/3rdParty/CppUnit/src/DefaultProtector.cpp
new file mode 100644
index 0000000..6fb306b
--- /dev/null
+++ b/3rdParty/CppUnit/src/DefaultProtector.cpp
@@ -0,0 +1,42 @@
+#include <cppunit/Exception.h>
+#include <cppunit/extensions/TypeInfoHelper.h>
+#include "DefaultProtector.h"
+
+
+CPPUNIT_NS_BEGIN
+
+
+bool
+DefaultProtector::protect( const Functor &functor,
+ const ProtectorContext &context )
+{
+ try
+ {
+ return functor();
+ }
+ catch ( Exception &failure )
+ {
+ reportFailure( context, failure );
+ }
+ catch ( std::exception &e )
+ {
+ std::string shortDescription( "uncaught exception of type " );
+#if CPPUNIT_USE_TYPEINFO_NAME
+ shortDescription += TypeInfoHelper::getClassName( typeid(e) );
+#else
+ shortDescription += "std::exception (or derived).";
+#endif
+ Message message( shortDescription, e.what() );
+ reportError( context, message );
+ }
+ catch ( ... )
+ {
+ reportError( context,
+ Message( "uncaught exception of unknown type") );
+ }
+
+ return false;
+}
+
+
+CPPUNIT_NS_END