...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::unit_test::master_test_suite_t
// In header: <boost/test/tree/test_unit.hpp> class master_test_suite_t : public boost::unit_test::test_suite { public: // types typedef std::vector< test_unit_id > id_list; typedef std::vector< test_unit_fixture_ptr > fixture_list_t; typedef std::vector< decorator::base_ptr > decor_list_t; typedef boost::function< test_tools::assertion_result(test_unit_id)> precondition_t; enum { type = TUT_SUITE }; enum { type = TUT_ANY }; enum run_status { RS_DISABLED, RS_ENABLED, RS_INHERIT, RS_INVALID }; // private member functions master_test_suite_t(); master_test_suite_t(const master_test_suite_t &); master_test_suite_t & operator=(master_test_suite_t const &); // public member functions void add(test_unit *, counter_t = 0, unsigned = 0); void add(test_unit_generator const &, unsigned = 0); void add(test_unit_generator const &, decorator::collector_t &); void add(boost::shared_ptr< test_unit_generator >, decorator::collector_t &); void remove(test_unit_id); void generate(); void check_for_duplicate_test_cases(); test_unit_id get(const_string) const; std::size_t size() const; typedef BOOST_READONLY_PROPERTY(test_unit_id, (framework::state)); typedef BOOST_READONLY_PROPERTY(test_unit_id, (test_suite)); typedef BOOST_READONLY_PROPERTY(id_list, (test_unit)); typedef BOOST_READONLY_PROPERTY(std::vector< std::string >, (test_unit)); typedef BOOST_READONLY_PROPERTY(std::vector< precondition_t >, (test_unit)); void depends_on(test_unit *); void add_precondition(precondition_t const &); test_tools::assertion_result check_preconditions() const; void add_label(const_string); bool has_label(const_string) const; void increase_exp_fail(counter_t); bool is_enabled() const; std::string full_name() const; // public data members int argc; char ** argv; test_unit_type const p_type; // type for this test unit const_string const p_type_name; // "case"/"suite"/"module" const_string const p_file_name; std::size_t const p_line_num; id_t p_id; // unique id for this test unit parent_id_t p_parent_id; // parent test suite id label_list_t p_labels; // list of labels associated with this test unit id_list_t p_dependencies; // list of test units this one depends on precond_list_t p_preconditions; // user supplied preconditions for this test unit; readwrite_property< std::string > p_name; // name for this test unit readwrite_property< std::string > p_description; // description for this test unit readwrite_property< unsigned > p_timeout; // timeout for the test unit execution in seconds readwrite_property< counter_t > p_expected_failures; // number of expected failures in this test unit readwrite_property< run_status > p_default_status; // run status obtained by this unit during setup phase readwrite_property< run_status > p_run_status; // run status assigned to this unit before execution phase after applying all filters readwrite_property< counter_t > p_sibling_rank; // rank of this test unit amoung siblings of the same parent readwrite_property< decor_list_t > p_decorators; // automatically assigned decorators; execution is delayed till framework::finalize_setup_phase function readwrite_property< fixture_list_t > p_fixtures; // fixtures associated with this test unit };
master_test_suite_t
private member functionsmaster_test_suite_t();
master_test_suite_t(const master_test_suite_t &);
master_test_suite_t & operator=(master_test_suite_t const &);
master_test_suite_t
public member functionsvoid add(test_unit * tu, counter_t expected_failures = 0, unsigned timeout = 0);Adds a test unit to a test suite.
It is possible to specify the timeout and the expected failures.
void add(test_unit_generator const & gen, unsigned timeout = 0);This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
void add(test_unit_generator const & gen, decorator::collector_t & decorators);This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
void add(boost::shared_ptr< test_unit_generator > gen_ptr, decorator::collector_t & decorators);This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
void remove(test_unit_id id);Removes a test from the test suite.
void generate();Generates all the delayed test_units from the generators.
void check_for_duplicate_test_cases();Check for duplicates name in test cases.
Raises a setup_error if there are duplicates
test_unit_id get(const_string tu_name) const;
std::size_t size() const;
typedef BOOST_READONLY_PROPERTY(test_unit_id, (framework::state));
typedef BOOST_READONLY_PROPERTY(test_unit_id, (test_suite));
typedef BOOST_READONLY_PROPERTY(id_list, (test_unit));
typedef BOOST_READONLY_PROPERTY(std::vector< std::string >, (test_unit));
typedef BOOST_READONLY_PROPERTY(std::vector< precondition_t >, (test_unit));
void depends_on(test_unit * tu);
void add_precondition(precondition_t const &);
test_tools::assertion_result check_preconditions() const;
void add_label(const_string l);
bool has_label(const_string l) const;
void increase_exp_fail(counter_t num);
bool is_enabled() const;
std::string full_name() const;