tut_reporter.h
Go to the documentation of this file.
#ifndef TUT_REPORTER
#define TUT_REPORTER
#include <wibble/tests/tut.h>
namespace
{
std::ostream& operator << (std::ostream& os,const tut::test_result& tr)
{
switch(tr.result)
{
case tut::test_result::ok:
os << '.';
break;
case tut::test_result::fail:
os << '[' << tr.test << "=F]";
break;
case tut::test_result::ex_ctor:
os << '[' << tr.test << "=C]";
break;
case tut::test_result::ex:
os << '[' << tr.test << "=X]";
break;
case tut::test_result::warn:
os << '[' << tr.test << "=W]";
break;
case tut::test_result::term:
os << '[' << tr.test << "=T]";
break;
}
return os;
}
}
namespace tut
{
class reporter : public tut::callback
{
std::string current_group;
typedef std::vector<tut::test_result> not_passed_list;
not_passed_list not_passed;
std::ostream& os;
public:
int ok_count;
int exceptions_count;
int failures_count;
int terminations_count;
int warnings_count;
reporter() : os(std::cout)
{
init();
}
reporter(std::ostream& out) : os(out)
{
init();
}
void run_started()
{
init();
}
void test_completed(const tut::test_result& tr)
{
if( tr.group != current_group )
{
os << std::endl << tr.group << ": " << std::flush;
current_group = tr.group;
}
os << tr << std::flush;
if( tr.result == tut::test_result::ok ) ok_count++;
else if( tr.result == tut::test_result::ex ) exceptions_count++;
else if( tr.result == tut::test_result::ex_ctor ) exceptions_count++;
else if( tr.result == tut::test_result::fail ) failures_count++;
else if( tr.result == tut::test_result::warn ) warnings_count++;
else terminations_count++;
if( tr.result != tut::test_result::ok )
{
not_passed.push_back(tr);
}
}
void run_completed()
{
os << std::endl;
if( not_passed.size() > 0 )
{
not_passed_list::const_iterator i = not_passed.begin();
while( i != not_passed.end() )
{
tut::test_result tr = *i;
os << std::endl;
os << "---> " << "group: " << tr.group << ", test: test<" << tr.test << ">" << std::endl;
os << " problem: ";
switch(tr.result)
{
case test_result::fail:
os << "assertion failed" << std::endl;
break;
case test_result::ex:
case test_result::ex_ctor:
os << "unexpected exception" << std::endl;
if( tr.exception_typeid != "" )
{
os << " exception typeid: "
<< tr.exception_typeid << std::endl;
}
break;
case test_result::term:
os << "would be terminated" << std::endl;
break;
case test_result::warn:
os << "test passed, but cleanup code (destructor) raised an exception" << std::endl;
break;
default: break;
}
if( tr.message != "" )
{
if( tr.result == test_result::fail )
{
os << " failed assertion: \"" << tr.message << "\"" << std::endl;
}
else
{
os << " message: \"" << tr.message << "\"" << std::endl;
}
}
++i;
}
}
os << std::endl;
os << "tests summary:";
if( terminations_count > 0 ) os << " terminations:" << terminations_count;
if( exceptions_count > 0 ) os << " exceptions:" << exceptions_count;
if( failures_count > 0 ) os << " failures:" << failures_count;
if( warnings_count > 0 ) os << " warnings:" << warnings_count;
os << " ok:" << ok_count;
os << std::endl;
}
bool all_ok() const
{
return not_passed.size() == 0;
}
private:
void init()
{
ok_count = 0;
exceptions_count = 0;
failures_count = 0;
terminations_count = 0;
warnings_count = 0;
not_passed.clear();
}
};
};
#endif
tut::reporter
Default TUT callback handler.
Definition: tut_reporter.h:53
tut::reporter::reporter
reporter(std::ostream &out)
Definition: tut_reporter.h:71
tut::reporter::warnings_count
int warnings_count
Definition: tut_reporter.h:64
tut::reporter::ok_count
int ok_count
Definition: tut_reporter.h:60
tut::reporter::terminations_count
int terminations_count
Definition: tut_reporter.h:63
tut::reporter::failures_count
int failures_count
Definition: tut_reporter.h:62
tut::reporter::reporter
reporter()
Definition: tut_reporter.h:66
tut::reporter::test_completed
void test_completed(const tut::test_result &tr)
Called when a test finished.
Definition: tut_reporter.h:81
tut::reporter::run_completed
void run_completed()
Called when all tests in run completed.
Definition: tut_reporter.h:103
tut::reporter::all_ok
bool all_ok() const
Definition: tut_reporter.h:169
tut::reporter::run_started
void run_started()
Called when new test run started.
Definition: tut_reporter.h:76
tut::reporter::exceptions_count
int exceptions_count
Definition: tut_reporter.h:61
tut
Template Unit Tests Framework for C++.
Definition: tut-main.cpp:7
wibble::log::operator<<
std::ostream & operator<<(std::ostream &s, Level lev)
Definition: stream.cpp:47
tut::callback
Test runner callback interface.
Definition: tut.h:185
tut::test_result
Return type of runned test/test group.
Definition: tut.h:106
tut::test_result::exception_typeid
std::string exception_typeid
Definition: tut.h:131
tut::test_result::result
result_type result
Definition: tut.h:125
tut::test_result::group
std::string group
Test group name.
Definition: tut.h:110
tut::test_result::message
std::string message
Exception message for failed test.
Definition: tut.h:130
tut::test_result::term
@ term
Definition: tut.h:124
tut::test_result::fail
@ fail
Definition: tut.h:124
tut::test_result::ex_ctor
@ ex_ctor
Definition: tut.h:124
tut::test_result::ok
@ ok
Definition: tut.h:124
tut::test_result::warn
@ warn
Definition: tut.h:124
tut::test_result::ex
@ ex
Definition: tut.h:124
tut::test_result::test
int test
Test number in group.
Definition: tut.h:115
tut.h