|
Packit |
8c9aa0 |
// //////////////////////////////////////////////////////////////////////////
|
|
Packit |
8c9aa0 |
// Implementation file ClockerModel.cpp for class ClockerModel
|
|
Packit |
8c9aa0 |
// (c)Copyright 2000, Baptiste Lepilleur.
|
|
Packit |
8c9aa0 |
// Created: 2002/06/14
|
|
Packit |
8c9aa0 |
// //////////////////////////////////////////////////////////////////////////
|
|
Packit |
8c9aa0 |
#include "ClockerModel.h"
|
|
Packit |
8c9aa0 |
#include <cppunit/config/SourcePrefix.h>
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
ClockerModel::ClockerModel()
|
|
Packit |
8c9aa0 |
: m_testCaseCount( 0 )
|
|
Packit |
8c9aa0 |
, m_totalTestCaseTime( 0 )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
ClockerModel::~ClockerModel()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
ClockerModel::setExpectedTestCount( int count )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_tests.reserve( count );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
ClockerModel::enterTest( CPPUNIT_NS::Test *test,
|
|
Packit |
8c9aa0 |
bool isSuite )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_currentPath.add( test );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
int testIndex = m_tests.size();
|
|
Packit |
8c9aa0 |
if ( !m_testIndexes.empty() )
|
|
Packit |
8c9aa0 |
m_tests[ m_testIndexes.top() ].m_childIndexes.push_back( testIndex );
|
|
Packit |
8c9aa0 |
m_testIndexes.push( testIndex );
|
|
Packit |
8c9aa0 |
m_testToIndexes.insert( TestToIndexes::value_type( test, testIndex ) );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
TestInfo info;
|
|
Packit |
8c9aa0 |
info.m_timer.start();
|
|
Packit |
8c9aa0 |
info.m_path = m_currentPath;
|
|
Packit |
8c9aa0 |
info.m_isSuite = isSuite;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
m_tests.push_back( info );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
if ( !isSuite )
|
|
Packit |
8c9aa0 |
++m_testCaseCount;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
ClockerModel::exitTest( CPPUNIT_NS::Test *test,
|
|
Packit |
8c9aa0 |
bool isSuite )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
m_tests[ m_testIndexes.top() ].m_timer.finish();
|
|
Packit |
8c9aa0 |
if ( !isSuite )
|
|
Packit |
8c9aa0 |
m_totalTestCaseTime += m_tests.back().m_timer.elapsedTime();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
m_currentPath.up();
|
|
Packit |
8c9aa0 |
m_testIndexes.pop();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
double
|
|
Packit |
8c9aa0 |
ClockerModel::totalElapsedTime() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return m_tests[0].m_timer.elapsedTime();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
double
|
|
Packit |
8c9aa0 |
ClockerModel::averageTestCaseTime() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
double average = 0;
|
|
Packit |
8c9aa0 |
if ( m_testCaseCount > 0 )
|
|
Packit |
8c9aa0 |
average = m_totalTestCaseTime / m_testCaseCount;
|
|
Packit |
8c9aa0 |
return average;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
double
|
|
Packit |
8c9aa0 |
ClockerModel::testTimeFor( int testIndex ) const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return m_tests[ testIndex ].m_timer.elapsedTime();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
std::string
|
|
Packit |
8c9aa0 |
ClockerModel::timeStringFor( double time )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
char buffer[320];
|
|
Packit |
8c9aa0 |
const char *format;
|
|
Packit |
8c9aa0 |
if ( time < 1 )
|
|
Packit |
8c9aa0 |
format = "%2.3f";
|
|
Packit |
8c9aa0 |
else if ( time < 10 )
|
|
Packit |
8c9aa0 |
format = "%3.2f";
|
|
Packit |
8c9aa0 |
else if (time < 100 )
|
|
Packit |
8c9aa0 |
format = "%4.1f";
|
|
Packit |
8c9aa0 |
else
|
|
Packit |
8c9aa0 |
format = "%6f";
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
::sprintf( buffer, format, time );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
return buffer;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
bool
|
|
Packit |
8c9aa0 |
ClockerModel::isSuite( int testIndex ) const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return m_tests[ testIndex ].m_isSuite;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
const CPPUNIT_NS::TestPath &
|
|
Packit |
8c9aa0 |
ClockerModel::testPathFor( int testIndex ) const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return m_tests[ testIndex ].m_path;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
int
|
|
Packit |
8c9aa0 |
ClockerModel::indexOf( CPPUNIT_NS::Test *test ) const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
TestToIndexes::const_iterator itFound = m_testToIndexes.find( test );
|
|
Packit |
8c9aa0 |
if ( itFound != m_testToIndexes.end() )
|
|
Packit |
8c9aa0 |
return itFound->second;
|
|
Packit |
8c9aa0 |
return -1;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
int
|
|
Packit |
8c9aa0 |
ClockerModel::childCountFor( int testIndex ) const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return m_tests[ testIndex ].m_childIndexes.size();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
int
|
|
Packit |
8c9aa0 |
ClockerModel::childAtFor( int testIndex,
|
|
Packit |
8c9aa0 |
int chidIndex ) const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return m_tests[ testIndex ].m_childIndexes[ chidIndex ];
|
|
Packit |
8c9aa0 |
}
|