diff options
Diffstat (limited to 'test/unit/exception_test.cpp')
-rw-r--r-- | test/unit/exception_test.cpp | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/test/unit/exception_test.cpp b/test/unit/exception_test.cpp deleted file mode 100644 index 1879945..0000000 --- a/test/unit/exception_test.cpp +++ /dev/null @@ -1,193 +0,0 @@ -#include <exception> -#include <stdexcept> -#include <string> - -#include "cppunit/cppunit_proxy.h" - -#if defined (STLPORT) && defined (_STLP_USE_NAMESPACES) -/* - * This test case purpose is to check that the exception handling - * functions are correctly imported to the STLport namespace only - * if they have a right behavior. - * Otherwise they are not imported to report the problem as a compile - * time error. - */ - -// -// TestCase class -// -class ExceptionTest : public CPPUNIT_NS::TestCase -{ - CPPUNIT_TEST_SUITE(ExceptionTest); -#if defined (STLPORT) && !defined (_STLP_USE_EXCEPTIONS) - CPPUNIT_IGNORE; -#endif - CPPUNIT_TEST(what); -#if defined (STLPORT) && defined (_STLP_NO_UNEXPECTED_EXCEPT_SUPPORT) - CPPUNIT_IGNORE; -#endif - CPPUNIT_TEST(unexpected_except); -#if defined (STLPORT) && defined (_STLP_USE_EXCEPTIONS) - CPPUNIT_STOP_IGNORE; -#endif -#if defined (STLPORT) && defined (_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT) - CPPUNIT_IGNORE; -#endif - CPPUNIT_TEST(uncaught_except); -#if defined (STLPORT) && defined (_STLP_USE_EXCEPTIONS) - CPPUNIT_STOP_IGNORE; -#endif - CPPUNIT_TEST(exception_emission); - CPPUNIT_TEST_SUITE_END(); - -protected: - void what(); - void unexpected_except(); - void uncaught_except(); - void exception_emission(); -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(ExceptionTest); - -#if !defined (STLPORT) || !defined (_STLP_NO_UNEXPECTED_EXCEPT_SUPPORT) -bool g_unexpected_called = false; -void unexpected_hdl() { - g_unexpected_called = true; - throw std::bad_exception(); -} - -struct special_except {}; -void throw_func() { - throw special_except(); -} - -void throw_except_func() throw(std::exception) { - throw_func(); -} -#endif - -void ExceptionTest::what() -{ - try { - throw std::runtime_error( std::string( "message" ) ); - } - catch ( std::runtime_error& err ) { - CPPUNIT_CHECK( strcmp( err.what(), "message" ) == 0 ); - } -} - -void ExceptionTest::unexpected_except() -{ -#if !defined (STLPORT) || !defined (_STLP_NO_UNEXPECTED_EXCEPT_SUPPORT) - std::unexpected_handler hdl = &unexpected_hdl; - std::set_unexpected(hdl); - - try { - throw_except_func(); - } - catch (std::bad_exception const&) { - CPPUNIT_ASSERT( true ); - } - catch (special_except) { - CPPUNIT_ASSERT( false ); - } - CPPUNIT_ASSERT( g_unexpected_called ); -#endif -} - -#if !defined (STLPORT) || !defined (_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT) -struct UncaughtClassTest -{ - UncaughtClassTest(int &res) : _res(res) - {} - - ~UncaughtClassTest() { - _res = std::uncaught_exception()?1:0; - } - - int &_res; -}; -#endif - -void ExceptionTest::uncaught_except() -{ -#if !defined (STLPORT) || !defined (_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT) - int uncaught_result = -1; - { - UncaughtClassTest test_inst(uncaught_result); - CPPUNIT_ASSERT( uncaught_result == -1 ); - } - CPPUNIT_ASSERT( uncaught_result == 0 ); - - { - try { - uncaught_result = -1; - UncaughtClassTest test_inst(uncaught_result); - throw "exception"; - } - catch (...) { - } - } - CPPUNIT_ASSERT( uncaught_result == 1 ); -#endif -} - -void ExceptionTest::exception_emission() -{ -#if !defined (STLPORT) || defined (_STLP_USE_EXCEPTIONS) - std::string foo = "foo"; - try { - throw std::runtime_error(foo); - } - catch (std::runtime_error const& e) { - CPPUNIT_ASSERT( foo == e.what() ); - std::runtime_error clone(""); - clone = e; - CPPUNIT_ASSERT(foo == clone.what() ); - } - catch (...) { - CPPUNIT_ASSERT( false ); - } - - try { - throw std::runtime_error(foo); - } - catch (std::runtime_error e) { - CPPUNIT_ASSERT( foo == e.what() ); - std::runtime_error clone(""); - clone = e; - CPPUNIT_ASSERT(foo == clone.what() ); - } - catch (...) { - CPPUNIT_ASSERT( false ); - } - - std::string msg(512, 'a'); - try { - throw std::runtime_error(msg); - } - catch (std::runtime_error const& e) { - CPPUNIT_ASSERT(msg == e.what() ); - std::runtime_error clone(""); - clone = e; - CPPUNIT_ASSERT(msg == clone.what() ); - } - catch (...) { - CPPUNIT_ASSERT( false ); - } - - try { - throw std::runtime_error(msg); - } - catch (std::runtime_error e) { - CPPUNIT_ASSERT(msg == e.what() ); - std::runtime_error clone(""); - clone = e; - CPPUNIT_ASSERT(msg == clone.what() ); - } - catch (...) { - CPPUNIT_ASSERT( false ); - } -#endif -} -#endif |