Blame src/cppunit/Test.cpp

Packit Service e31359
#include <cppunit/Portability.h>
Packit Service e31359
#include <cppunit/Test.h>
Packit Service e31359
#include <cppunit/TestPath.h>
Packit Service e31359
#include <stdexcept>
Packit Service e31359
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_BEGIN
Packit Service e31359
Packit Service e31359
Packit Service e31359
Test *
Packit Service e31359
Test::getChildTestAt( int index ) const
Packit Service e31359
{
Packit Service e31359
  checkIsValidIndex( index );
Packit Service e31359
  return doGetChildTestAt( index );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
Test *
Packit Service e31359
Test::findTest( const std::string &testName ) const
Packit Service e31359
{
Packit Service e31359
  TestPath path;
Packit Service e31359
  Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this );
Packit Service e31359
  mutableThis->findTestPath( testName, path );
Packit Service e31359
  if ( !path.isValid() )
Packit Service e31359
    throw std::invalid_argument( "No test named <" + testName + "> found in test <"
Packit Service e31359
                                 + getName() + ">." );
Packit Service e31359
  return path.getChildTest();
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
bool 
Packit Service e31359
Test::findTestPath( const std::string &testName,
Packit Service e31359
                    TestPath &testPath ) const
Packit Service e31359
{
Packit Service e31359
  Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this );
Packit Service e31359
  if ( getName() == testName )
Packit Service e31359
  {
Packit Service e31359
    testPath.add( mutableThis );
Packit Service e31359
    return true;
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  int childCount = getChildTestCount();
Packit Service e31359
  for ( int childIndex =0; childIndex < childCount; ++childIndex )
Packit Service e31359
  {
Packit Service e31359
    if ( getChildTestAt( childIndex )->findTestPath( testName, testPath ) )
Packit Service e31359
    {
Packit Service e31359
      testPath.insert( mutableThis, 0 );
Packit Service e31359
      return true;
Packit Service e31359
    }
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  return false;
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
bool 
Packit Service e31359
Test::findTestPath( const Test *test,
Packit Service e31359
                    TestPath &testPath ) const
Packit Service e31359
{
Packit Service e31359
  Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this );
Packit Service e31359
  if ( this == test )
Packit Service e31359
  {
Packit Service e31359
    testPath.add( mutableThis );
Packit Service e31359
    return true;
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  int childCount = getChildTestCount();
Packit Service e31359
  for ( int childIndex =0; childIndex < childCount; ++childIndex )
Packit Service e31359
  {
Packit Service e31359
    if ( getChildTestAt( childIndex )->findTestPath( test, testPath ) )
Packit Service e31359
    {
Packit Service e31359
      testPath.insert( mutableThis, 0 );
Packit Service e31359
      return true;
Packit Service e31359
    }
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  return false;
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
TestPath 
Packit Service e31359
Test::resolveTestPath( const std::string &testPath ) const
Packit Service e31359
{
Packit Service e31359
  Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this );
Packit Service e31359
  return TestPath( mutableThis, testPath );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
Test::checkIsValidIndex( int index ) const
Packit Service e31359
{
Packit Service e31359
  if ( index < 0  ||  index >= getChildTestCount() )
Packit Service e31359
    throw std::out_of_range( "Test::checkValidIndex(): invalid index" );
Packit Service e31359
}
Packit Service e31359
  
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_END