|
Packit |
8c9aa0 |
// //////////////////////////////////////////////////////////////////////////
|
|
Packit |
8c9aa0 |
// Implementation file DumperListener.cpp for class DumperListener
|
|
Packit |
8c9aa0 |
// (c)Copyright 2000, Baptiste Lepilleur.
|
|
Packit |
8c9aa0 |
// Created: 2002/04/19
|
|
Packit |
8c9aa0 |
// //////////////////////////////////////////////////////////////////////////
|
|
Packit |
8c9aa0 |
#include <cppunit/Test.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/portability/Stream.h>
|
|
Packit |
8c9aa0 |
#include "DumperListener.h"
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
DumperListener::DumperListener( bool flatten )
|
|
Packit |
8c9aa0 |
: m_flatten( flatten )
|
|
Packit |
8c9aa0 |
, m_suiteCount( 0 )
|
|
Packit |
8c9aa0 |
, m_testCount( 0 )
|
|
Packit |
8c9aa0 |
, m_suiteWithTestCount( 0 )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
DumperListener::~DumperListener()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
DumperListener::startTest( CPPUNIT_NS::Test *test )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
printPath( test, false );
|
|
Packit |
8c9aa0 |
++m_testCount;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
DumperListener::endTest( CPPUNIT_NS::Test *test )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_path.up();
|
|
Packit |
8c9aa0 |
if ( !m_suiteHasTest.empty() )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_suiteHasTest.pop();
|
|
Packit |
8c9aa0 |
m_suiteHasTest.push( true );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
DumperListener::startSuite( CPPUNIT_NS::Test *suite )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
printPath( suite, true );
|
|
Packit |
8c9aa0 |
++m_suiteCount;
|
|
Packit |
8c9aa0 |
m_suiteHasTest.push( false );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
DumperListener::endSuite( CPPUNIT_NS::Test *suite )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_path.up();
|
|
Packit |
8c9aa0 |
if ( m_suiteHasTest.top() )
|
|
Packit |
8c9aa0 |
++m_suiteWithTestCount;
|
|
Packit |
8c9aa0 |
m_suiteHasTest.pop();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
DumperListener::endTestRun( CPPUNIT_NS::Test *test,
|
|
Packit |
8c9aa0 |
CPPUNIT_NS::TestResult *eventManager )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
double average = 0;
|
|
Packit |
8c9aa0 |
if ( m_suiteWithTestCount > 0 )
|
|
Packit |
8c9aa0 |
average = double(m_testCount) / m_suiteWithTestCount;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS::stdCOut()
|
|
Packit |
8c9aa0 |
<< "Statistics: " << m_testCount << " test cases, "
|
|
Packit |
8c9aa0 |
<< m_suiteCount << " suites, "
|
|
Packit |
8c9aa0 |
<< average << " test cases / suite with test cases"
|
|
Packit |
8c9aa0 |
<< "\n";
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
DumperListener::printPath( CPPUNIT_NS::Test *test,
|
|
Packit |
8c9aa0 |
bool isSuite )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_path.add( test );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
if ( m_flatten )
|
|
Packit |
8c9aa0 |
printFlattenedPath( isSuite );
|
|
Packit |
8c9aa0 |
else
|
|
Packit |
8c9aa0 |
printIndentedPathChild();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
DumperListener::printFlattenedPath( bool isSuite )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
std::string path = m_path.toString();
|
|
Packit |
8c9aa0 |
if ( isSuite )
|
|
Packit |
8c9aa0 |
path += "/";
|
|
Packit |
8c9aa0 |
CPPUNIT_NS::stdCOut() << path << "\n";
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
DumperListener::printIndentedPathChild()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
std::string indent = makeIndentString( m_path.getTestCount() -1 );
|
|
Packit |
8c9aa0 |
CPPUNIT_NS::stdCOut() << indent << m_path.getChildTest()->getName() << "\n";
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
std::string
|
|
Packit |
8c9aa0 |
DumperListener::makeIndentString( int indentLevel )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
std::string indent;
|
|
Packit |
8c9aa0 |
for ( int parentIndent =0; parentIndent < indentLevel-1; ++parentIndent )
|
|
Packit |
8c9aa0 |
indent += "| ";
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
if ( indentLevel > 0 )
|
|
Packit |
8c9aa0 |
indent += "+--";
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
return indent;
|
|
Packit |
8c9aa0 |
}
|