• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 // Copyright (C) 2008-2018 Lorenzo Caminiti
3 // Distributed under the Boost Software License, Version 1.0 (see accompanying
4 // file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt).
5 // See: http://www.boost.org/doc/libs/release/libs/contract/doc/html/index.html
6 
7 // Test all derived and base classes without postconditions.
8 
9 #define BOOST_CONTRACT_TEST_NO_A_POST
10 #define BOOST_CONTRACT_TEST_NO_B_POST
11 #define BOOST_CONTRACT_TEST_NO_C_POST
12 #include "decl.hpp"
13 
14 #include <boost/detail/lightweight_test.hpp>
15 #include <sstream>
16 
main()17 int main() {
18     std::ostringstream ok; ok // Test nothing fails.
19         #ifndef BOOST_CONTRACT_NO_ENTRY_INVARIANTS
20             << "a::static_inv" << std::endl
21             << "a::inv" << std::endl
22         #endif
23         #ifndef BOOST_CONTRACT_NO_OLDS
24             << "a::dtor::old" << std::endl
25         #endif
26         << "a::dtor::body" << std::endl
27         #ifndef BOOST_CONTRACT_NO_EXIT_INVARIANTS
28             << "a::static_inv" << std::endl
29         #endif
30 
31         #ifndef BOOST_CONTRACT_NO_ENTRY_INVARIANTS
32             << "b::static_inv" << std::endl
33             << "b::inv" << std::endl
34         #endif
35         #ifndef BOOST_CONTRACT_NO_OLDS
36             << "b::dtor::old" << std::endl
37         #endif
38         << "b::dtor::body" << std::endl
39         #ifndef BOOST_CONTRACT_NO_EXIT_INVARIANTS
40             << "b::static_inv" << std::endl
41         #endif
42 
43         #ifndef BOOST_CONTRACT_NO_ENTRY_INVARIANTS
44             << "c::static_inv" << std::endl
45             << "c::inv" << std::endl
46         #endif
47         #ifndef BOOST_CONTRACT_NO_OLDS
48             << "c::dtor::old" << std::endl
49         #endif
50         << "c::dtor::body" << std::endl
51         #ifndef BOOST_CONTRACT_NO_EXIT_INVARIANTS
52             << "c::static_inv" << std::endl
53         #endif
54     ;
55 
56     a_post = true;
57     b_post = true;
58     c_post = true;
59     {
60         a aa;
61         out.str("");
62     }
63     BOOST_TEST(out.eq(ok.str()));
64 
65     a_post = false;
66     b_post = true;
67     c_post = true;
68     {
69         a aa;
70         out.str("");
71     }
72     BOOST_TEST(out.eq(ok.str()));
73 
74     a_post = true;
75     b_post = false;
76     c_post = true;
77     {
78         a aa;
79         out.str("");
80     }
81     BOOST_TEST(out.eq(ok.str()));
82 
83     a_post = true;
84     b_post = true;
85     c_post = false;
86     {
87         a aa;
88         out.str("");
89     }
90     BOOST_TEST(out.eq(ok.str()));
91 
92     a_post = false;
93     b_post = false;
94     c_post = false;
95     {
96         a aa;
97         out.str("");
98     }
99     BOOST_TEST(out.eq(ok.str()));
100 
101     return boost::report_errors();
102 }
103 
104