Blame examples/ClockerPlugIn/ClockerModel.cpp

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