Blame examples/ClockerPlugIn/ClockerXmlHook.cpp

Packit 8c9aa0
// //////////////////////////////////////////////////////////////////////////
Packit 8c9aa0
// Implementation file ClockerXmlHook.cpp for class ClockerXmlHook
Packit 8c9aa0
// (c)Copyright 2000, Baptiste Lepilleur.
Packit 8c9aa0
// Created: 2002/06/14
Packit 8c9aa0
// //////////////////////////////////////////////////////////////////////////
Packit 8c9aa0
Packit 8c9aa0
#include <cppunit/Test.h>
Packit 8c9aa0
#include <cppunit/tools/XmlDocument.h>
Packit 8c9aa0
#include <cppunit/tools/XmlElement.h>
Packit 8c9aa0
#include "ClockerModel.h"
Packit 8c9aa0
#include "ClockerXmlHook.h"
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
ClockerXmlHook::ClockerXmlHook( ClockerModel *model )
Packit 8c9aa0
    : m_model( model )
Packit 8c9aa0
{
Packit 8c9aa0
}
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
ClockerXmlHook::~ClockerXmlHook()
Packit 8c9aa0
{
Packit 8c9aa0
}
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
void 
Packit 8c9aa0
ClockerXmlHook::endDocument( CPPUNIT_NS::XmlDocument *document )
Packit 8c9aa0
{
Packit 8c9aa0
  CPPUNIT_NS::XmlElement *testTreeElement = new CPPUNIT_NS::XmlElement( "TimedTestTree" );
Packit 8c9aa0
  document->rootElement().addElement( testTreeElement );
Packit 8c9aa0
Packit 8c9aa0
  addTimedTest( testTreeElement, 0 );
Packit 8c9aa0
}
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
void 
Packit 8c9aa0
ClockerXmlHook::addTimedTest( CPPUNIT_NS::XmlElement *parentElement, 
Packit 8c9aa0
                              int testIndex )
Packit 8c9aa0
{
Packit 8c9aa0
  std::string elementName = m_model->isSuite( testIndex ) ? "TimedSuite" : "TimedTest";
Packit 8c9aa0
  CPPUNIT_NS::XmlElement *testElement = new CPPUNIT_NS::XmlElement( elementName );
Packit 8c9aa0
  parentElement->addElement( testElement );
Packit 8c9aa0
  testElement->addAttribute( "id", testIndex );
Packit 8c9aa0
Packit 8c9aa0
  const CPPUNIT_NS::TestPath &path = m_model->testPathFor( testIndex );
Packit 8c9aa0
  testElement->addElement( new CPPUNIT_NS::XmlElement( "Name", 
Packit 8c9aa0
                                                    path.getChildTest()->getName() ) );
Packit 8c9aa0
  testElement->addElement( new CPPUNIT_NS::XmlElement( "TestPath", path.toString() ) );
Packit 8c9aa0
  testElement->addElement( new CPPUNIT_NS::XmlElement( "Time", 
Packit 8c9aa0
                                 ClockerModel::timeStringFor( 
Packit 8c9aa0
                                    m_model->testTimeFor( testIndex ) ) ) );
Packit 8c9aa0
Packit 8c9aa0
  if ( m_model->isSuite( testIndex ) )
Packit 8c9aa0
  {
Packit 8c9aa0
    for ( int childIndex =0; childIndex < m_model->childCountFor( testIndex ); ++childIndex )
Packit 8c9aa0
      addTimedTest( testElement, m_model->childAtFor( testIndex, childIndex ) );
Packit 8c9aa0
  }
Packit 8c9aa0
}
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
void 
Packit 8c9aa0
ClockerXmlHook::failTestAdded( CPPUNIT_NS::XmlDocument *document,
Packit 8c9aa0
                               CPPUNIT_NS::XmlElement *testElement,
Packit 8c9aa0
                               CPPUNIT_NS::Test *test,
Packit 8c9aa0
                               CPPUNIT_NS::TestFailure *failure )
Packit 8c9aa0
{
Packit 8c9aa0
  successfulTestAdded( document, testElement, test );
Packit 8c9aa0
}
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
void 
Packit 8c9aa0
ClockerXmlHook::successfulTestAdded( CPPUNIT_NS::XmlDocument *document,
Packit 8c9aa0
                                     CPPUNIT_NS::XmlElement *testElement,
Packit 8c9aa0
                                     CPPUNIT_NS::Test *test )
Packit 8c9aa0
{
Packit 8c9aa0
  int testIndex = m_model->indexOf( test );
Packit 8c9aa0
  double time = (testIndex >= 0) ? m_model->testTimeFor( testIndex ) : 0.0;
Packit 8c9aa0
  const CPPUNIT_NS::TestPath &path = m_model->testPathFor( testIndex );
Packit 8c9aa0
  testElement->addElement( new CPPUNIT_NS::XmlElement( "TestPath", path.toString() ) );
Packit 8c9aa0
  testElement->addElement( new CPPUNIT_NS::XmlElement( "Time",
Packit 8c9aa0
                                   ClockerModel::timeStringFor( time ) ) );
Packit 8c9aa0
}
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
void 
Packit 8c9aa0
ClockerXmlHook::statisticsAdded( CPPUNIT_NS::XmlDocument *document,
Packit 8c9aa0
                                 CPPUNIT_NS::XmlElement *statisticsElement )
Packit 8c9aa0
{
Packit 8c9aa0
  statisticsElement->addElement( 
Packit 8c9aa0
      new CPPUNIT_NS::XmlElement( "TotalElapsedTime",
Packit 8c9aa0
           ClockerModel::timeStringFor( m_model->totalElapsedTime() ) ) );
Packit 8c9aa0
  statisticsElement->addElement( 
Packit 8c9aa0
      new CPPUNIT_NS::XmlElement( "AverageTestCaseTime",
Packit 8c9aa0
           ClockerModel::timeStringFor( m_model->averageTestCaseTime() ) ) );
Packit 8c9aa0
}