//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc. //Distributed under the Boost Software License, Version 1.0. (See accompanying //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include #include #include #include #include #include #include #include struct test_exception: virtual boost::exception, virtual std::exception { }; int main() { using namespace boost; try { test_exception e; e << errinfo_api_function("failed_api_function") << errinfo_at_line(42) << errinfo_errno(0) << errinfo_file_handle(weak_ptr()) << errinfo_file_name("filename.txt") << errinfo_file_open_mode("rb"); #ifdef BOOST_NO_TYPEID BOOST_THROW_EXCEPTION(e); #else BOOST_THROW_EXCEPTION(e<(e) && *get_error_info(e)==std::string("failed_api_function")); BOOST_TEST(get_error_info(e) && *get_error_info(e)==42); BOOST_TEST(get_error_info(e) && *get_error_info(e)==0); BOOST_TEST(get_error_info(e) && get_error_info(e)->expired()); BOOST_TEST(get_error_info(e) && *get_error_info(e)=="filename.txt"); BOOST_TEST(get_error_info(e) && *get_error_info(e)=="rb"); #ifndef BOOST_NO_TYPEID BOOST_TEST(get_error_info(e) && *get_error_info(e)==typeid(int).name()); #endif } catch( ... ) { BOOST_TEST(false); } return boost::report_errors(); }