#include #define BOOST_TEST_MAIN #include CONTRACT_CLASS(class (Base)) { CONTRACT_CLASS_INVARIANT(void) CONTRACT_CONSTRUCTOR( public explicit (Base)(int i) precondition(i >= 0) ) { } }; CONTRACT_CLASS(class (Derived) extends(public Base)) { CONTRACT_CLASS_INVARIANT(void) CONTRACT_CONSTRUCTOR( public explicit (Derived)() initialize(Base(-1)) ) { } }; void throwing_handler(const contract::from& context) { throw; } BOOST_AUTO_TEST_CASE(test_base_precondition) { contract::set_precondition_broken(&throwing_handler); BOOST_CHECK_THROW(Derived(), contract::broken); }