mirror of
https://github.com/boostorg/test.git
synced 2026-02-17 14:12:08 +00:00
124 lines
4.0 KiB
C++
124 lines
4.0 KiB
C++
// (C) Copyright Gennadiy Rozental 2001-2002.
|
|
// Permission to copy, use, modify, sell and distribute this software
|
|
// is granted provided this copyright notice appears in all copies.
|
|
// This software is provided "as is" without express or implied warranty,
|
|
// and with no claim as to its suitability for any purpose.
|
|
|
|
// See http://www.boost.org for updates, documentation, and revision history.
|
|
//
|
|
// File : $RCSfile$
|
|
//
|
|
// Version : $Id$
|
|
//
|
|
// Description : main function implementation for Unit Test Framework
|
|
// ***************************************************************************
|
|
|
|
#include <boost/test/unit_test.hpp> // for unit_test framework
|
|
#include <boost/test/unit_test_result.hpp>
|
|
#include <boost/test/unit_test_log.hpp>
|
|
#include <boost/test/detail/unit_test_parameters.hpp>
|
|
|
|
// BOOST
|
|
#include <boost/scoped_ptr.hpp>
|
|
|
|
// STL
|
|
#include <string>
|
|
#include <iostream> // for cout, cerr
|
|
|
|
using namespace boost::unit_test_framework;
|
|
|
|
extern test_suite* init_unit_test_suite( int argc, char* argv[] ); // prototype for user's test suite init function
|
|
|
|
// ************************************************************************** //
|
|
// ************** unit test main ************** //
|
|
// ************************************************************************** //
|
|
|
|
int
|
|
main( int argc, char* argv[] )
|
|
{
|
|
std::string loglevel;
|
|
bool no_result_code;
|
|
bool print_build_info;
|
|
result_report_level report_level;
|
|
|
|
// 1. set the log level
|
|
unit_test_log::instance().set_log_threshold_level_by_name(
|
|
retrieve_framework_parameter( LOGLEVEL, &argc, argv ).data() );
|
|
|
|
// 2. set the result code and build info flags
|
|
no_result_code = retrieve_framework_parameter( NO_RESULT_CODE, &argc, argv ) == "no";
|
|
print_build_info = retrieve_framework_parameter( BUILD_INFO, &argc, argv ) == "yes";
|
|
|
|
// 3. set the report type
|
|
std::string report_type_to_set = retrieve_framework_parameter( RESULT_REPORT, &argc, argv );
|
|
|
|
if( report_type_to_set == report_level_names[CONFIRMATION_REPORT] ) {
|
|
report_level = CONFIRMATION_REPORT;
|
|
}
|
|
else if( report_type_to_set == report_level_names[SHORT_REPORT] ) {
|
|
report_level = SHORT_REPORT;
|
|
}
|
|
else if( report_type_to_set == report_level_names[DETAILED_REPORT] ) {
|
|
report_level = DETAILED_REPORT;
|
|
}
|
|
else if( report_type_to_set == report_level_names[NO_REPORT] ) {
|
|
report_level = NO_REPORT;
|
|
}
|
|
else if( report_type_to_set == "" ) {
|
|
report_level = CONFIRMATION_REPORT;
|
|
}
|
|
else {
|
|
std::cerr << "*** Unrecognized report level" << std::endl;
|
|
return -999;
|
|
}
|
|
|
|
// init master unit test suite
|
|
test_suite* test = init_unit_test_suite( argc, argv );
|
|
if( test == NULL ) {
|
|
std::cerr << "*** Fail to initialize test suite" << std::endl;
|
|
return -999;
|
|
}
|
|
|
|
// start testing
|
|
unit_test_log::instance().start( test->size(), print_build_info );
|
|
test->run();
|
|
|
|
// odd case: we have 1 test case in 1 test suite
|
|
if( test->size() == 1 )
|
|
unit_test_log::instance() << report_progress();
|
|
|
|
// report result
|
|
switch( report_level ) {
|
|
case CONFIRMATION_REPORT:
|
|
unit_test_result::instance().confirmation_report( std::cout );
|
|
break;
|
|
case SHORT_REPORT:
|
|
unit_test_result::instance().short_report( std::cout );
|
|
break;
|
|
case DETAILED_REPORT:
|
|
unit_test_result::instance().detailed_report( std::cout );
|
|
break;
|
|
case NO_REPORT:
|
|
default:
|
|
break;
|
|
}
|
|
|
|
delete test;
|
|
|
|
// return code
|
|
return no_result_code ? boost::exit_success : unit_test_result::instance().result_code();
|
|
}
|
|
|
|
// ***************************************************************************
|
|
// Revision History :
|
|
//
|
|
// $Log$
|
|
// Revision 1.6 2002/08/20 08:24:13 rogeeff
|
|
// cvs keywords added
|
|
//
|
|
// 5 Oct 01 Initial version (Gennadiy Rozental)
|
|
|
|
// ***************************************************************************
|
|
|
|
// EOF
|