1 //Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
2 
3 //Distributed under the Boost Software License, Version 1.0. (See accompanying
4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5 
6 #include <boost/config.hpp>
7 
8 #if defined( BOOST_NO_EXCEPTIONS )
9 #   error This program requires exception handling.
10 #endif
11 
12 #include "helper1.hpp"
13 #include <boost/exception/get_error_info.hpp>
14 #include <boost/exception/info.hpp>
15 #include <boost/exception/diagnostic_information.hpp>
16 #include <boost/detail/lightweight_test.hpp>
17 
18 namespace
19     {
20     typedef boost::error_info<struct tag_test_int,int> test_int;
21 
22     void
throw_wrapper()23     throw_wrapper()
24         {
25         try
26             {
27             boost::exception_test::throw_length_error();
28             }
29         catch(
30         boost::exception & x )
31             {
32             x << test_int(42);
33             throw;
34             }
35         catch(
36         ... )
37             {
38             BOOST_TEST(false);
39             }
40         }
41     }
42 
43 int
main()44 main()
45     {
46     try
47         {
48         throw_wrapper();
49         BOOST_TEST(false);
50         }
51     catch(
52     std::exception & x )
53         {
54 #ifdef BOOST_NO_RTTI
55         try
56             {
57             throw;
58             }
59         catch(
60         boost::exception & x )
61             {
62 #endif
63             BOOST_TEST( boost::get_error_info<test_int>(x) );
64             if( int const * p=boost::get_error_info<test_int>(x) )
65                 BOOST_TEST( 42==*p );
66 #ifdef BOOST_NO_RTTI
67             }
68         catch(
69         ... )
70             {
71             BOOST_TEST(false);
72             }
73 #endif
74         BOOST_TEST( std::string(x.what())==std::string("exception test length error") );
75         }
76     catch(
77     ... )
78         {
79         BOOST_TEST(false);
80         }
81     return boost::report_errors();
82     }
83