diff --git a/test/compute_base_modifiers.cpp b/test/compute_base_modifiers.cpp index 31515f4..6e24f0d 100644 --- a/test/compute_base_modifiers.cpp +++ b/test/compute_base_modifiers.cpp @@ -48,6 +48,10 @@ struct Y: public X1, protected X2, private X3, public virtual V1, protected virt { }; +struct Z final: public X1, protected X2, private X3, public virtual V1, protected virtual V2, private virtual V3 +{ +}; + int main() { using namespace boost::describe::detail; @@ -81,6 +85,34 @@ int main() BOOST_TEST( (is_virtual_base_of::value) ); BOOST_TEST_EQ( (compute_base_modifiers()), mod_private | mod_virtual ); + BOOST_TEST( (is_public_base_of::value) ); + BOOST_TEST( (!is_virtual_base_of::value) ); + BOOST_TEST_EQ( (compute_base_modifiers()), mod_public ); + + BOOST_TEST( (!is_public_base_of::value) ); + BOOST_TEST( (!is_protected_base_of::value) ); + BOOST_TEST( (!is_virtual_base_of::value) ); + BOOST_TEST_EQ( (compute_base_modifiers()), mod_private ); + + BOOST_TEST( (!is_public_base_of::value) ); + BOOST_TEST( (!is_protected_base_of::value) ); + BOOST_TEST( (!is_virtual_base_of::value) ); + BOOST_TEST_EQ( (compute_base_modifiers()), mod_private ); + + BOOST_TEST( (is_public_base_of::value) ); + BOOST_TEST( (is_virtual_base_of::value) ); + BOOST_TEST_EQ( (compute_base_modifiers()), mod_public | mod_virtual ); + + BOOST_TEST( (!is_public_base_of::value) ); + BOOST_TEST( (!is_protected_base_of::value) ); + BOOST_TEST( (is_virtual_base_of::value) ); + BOOST_TEST_EQ( (compute_base_modifiers()), mod_private | mod_virtual ); + + BOOST_TEST( (!is_public_base_of::value) ); + BOOST_TEST( (!is_protected_base_of::value) ); + BOOST_TEST( (is_virtual_base_of::value) ); + BOOST_TEST_EQ( (compute_base_modifiers()), mod_private | mod_virtual ); + return boost::report_errors(); }