TestRunner.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #include <cppunit/config/SourcePrefix.h>
  2. #include <cppunit/TestRunner.h>
  3. #include <cppunit/TestPath.h>
  4. #include <cppunit/TestResult.h>
  5. CPPUNIT_NS_BEGIN
  6. TestRunner::WrappingSuite::WrappingSuite( const std::string &name )
  7. : TestSuite( name )
  8. {
  9. }
  10. int
  11. TestRunner::WrappingSuite::getChildTestCount() const
  12. {
  13. if ( hasOnlyOneTest() )
  14. return getUniqueChildTest()->getChildTestCount();
  15. return TestSuite::getChildTestCount();
  16. }
  17. std::string
  18. TestRunner::WrappingSuite::getName() const
  19. {
  20. if ( hasOnlyOneTest() )
  21. return getUniqueChildTest()->getName();
  22. return TestSuite::getName();
  23. }
  24. Test *
  25. TestRunner::WrappingSuite::doGetChildTestAt( int index ) const
  26. {
  27. if ( hasOnlyOneTest() )
  28. return getUniqueChildTest()->getChildTestAt( index );
  29. return TestSuite::doGetChildTestAt( index );
  30. }
  31. void
  32. TestRunner::WrappingSuite::run( TestResult *result )
  33. {
  34. if ( hasOnlyOneTest() )
  35. getUniqueChildTest()->run( result );
  36. else
  37. TestSuite::run( result );
  38. }
  39. bool
  40. TestRunner::WrappingSuite::hasOnlyOneTest() const
  41. {
  42. return TestSuite::getChildTestCount() == 1;
  43. }
  44. Test *
  45. TestRunner::WrappingSuite::getUniqueChildTest() const
  46. {
  47. return TestSuite::doGetChildTestAt( 0 );
  48. }
  49. TestRunner::TestRunner()
  50. : m_suite( new WrappingSuite() )
  51. {
  52. }
  53. TestRunner::~TestRunner()
  54. {
  55. delete m_suite;
  56. }
  57. void
  58. TestRunner::addTest( Test *test )
  59. {
  60. m_suite->addTest( test );
  61. }
  62. void
  63. TestRunner::run( TestResult &controller,
  64. const std::string &testPath )
  65. {
  66. TestPath path = m_suite->resolveTestPath( testPath );
  67. Test *testToRun = path.getChildTest();
  68. controller.runTest( testToRun );
  69. }
  70. CPPUNIT_NS_END