Blame src/cppunit/Test.cpp

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