diff options
Diffstat (limited to 'src/boost/libs/exception/test/no_exceptions_test.cpp')
-rw-r--r-- | src/boost/libs/exception/test/no_exceptions_test.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/boost/libs/exception/test/no_exceptions_test.cpp b/src/boost/libs/exception/test/no_exceptions_test.cpp new file mode 100644 index 00000000..2e8665a7 --- /dev/null +++ b/src/boost/libs/exception/test/no_exceptions_test.cpp @@ -0,0 +1,52 @@ +//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) + +#define BOOST_NO_EXCEPTIONS +#include <boost/config.hpp> +#include <boost/throw_exception.hpp> +#include <boost/exception/info.hpp> +#include <boost/exception/diagnostic_information.hpp> +#include <boost/core/lightweight_test.hpp> +#include <stdlib.h> + +struct +my_exception: + boost::exception, + std::exception + { + char const * + what() const BOOST_NOEXCEPT_OR_NOTHROW + { + return "my_exception"; + } + }; + +typedef boost::error_info<struct my_tag,int> my_int; + +bool called=false; + +namespace +boost + { + void + throw_exception( std::exception const & x ) + { + called=true; + std::string s=boost::diagnostic_information(x); + std::cout << s; +#ifndef BOOST_NO_RTTI + BOOST_TEST(s.find("my_tag")!=std::string::npos); +#endif + exit(boost::report_errors()); + } + } + +int +main() + { + BOOST_THROW_EXCEPTION( my_exception() << my_int(42) ); + BOOST_TEST(called); + return boost::report_errors(); + } |