Blame examples/ClockerPlugIn/ClockerModel.cpp

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
}