summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-06-01 08:48:42 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-06-01 09:24:28 (GMT)
commit2812bddd81f8a1b804c7460f4e14cd0aa393d129 (patch)
treed46294f35150c4f0f43deaf2d31fceaf945ae715 /3rdParty/CppUnit/src/TestRunner.cpp
downloadswift-contrib-2812bddd81f8a1b804c7460f4e14cd0aa393d129.zip
swift-contrib-2812bddd81f8a1b804c7460f4e14cd0aa393d129.tar.bz2
Import.
Diffstat (limited to '3rdParty/CppUnit/src/TestRunner.cpp')
-rw-r--r--3rdParty/CppUnit/src/TestRunner.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/3rdParty/CppUnit/src/TestRunner.cpp b/3rdParty/CppUnit/src/TestRunner.cpp
new file mode 100644
index 0000000..8d95a63
--- /dev/null
+++ b/3rdParty/CppUnit/src/TestRunner.cpp
@@ -0,0 +1,101 @@
+#include <cppunit/config/SourcePrefix.h>
+#include <cppunit/TestRunner.h>
+#include <cppunit/TestPath.h>
+#include <cppunit/TestResult.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+TestRunner::WrappingSuite::WrappingSuite( const std::string &name )
+ : TestSuite( name )
+{
+}
+
+
+int
+TestRunner::WrappingSuite::getChildTestCount() const
+{
+ if ( hasOnlyOneTest() )
+ return getUniqueChildTest()->getChildTestCount();
+ return TestSuite::getChildTestCount();
+}
+
+
+std::string
+TestRunner::WrappingSuite::getName() const
+{
+ if ( hasOnlyOneTest() )
+ return getUniqueChildTest()->getName();
+ return TestSuite::getName();
+}
+
+
+Test *
+TestRunner::WrappingSuite::doGetChildTestAt( int index ) const
+{
+ if ( hasOnlyOneTest() )
+ return getUniqueChildTest()->getChildTestAt( index );
+ return TestSuite::doGetChildTestAt( index );
+}
+
+
+void
+TestRunner::WrappingSuite::run( TestResult *result )
+{
+ if ( hasOnlyOneTest() )
+ getUniqueChildTest()->run( result );
+ else
+ TestSuite::run( result );
+}
+
+
+bool
+TestRunner::WrappingSuite::hasOnlyOneTest() const
+{
+ return TestSuite::getChildTestCount() == 1;
+}
+
+
+Test *
+TestRunner::WrappingSuite::getUniqueChildTest() const
+{
+ return TestSuite::doGetChildTestAt( 0 );
+}
+
+
+
+
+
+TestRunner::TestRunner()
+ : m_suite( new WrappingSuite() )
+{
+}
+
+
+TestRunner::~TestRunner()
+{
+ delete m_suite;
+}
+
+
+void
+TestRunner::addTest( Test *test )
+{
+ m_suite->addTest( test );
+}
+
+
+void
+TestRunner::run( TestResult &controller,
+ const std::string &testPath )
+{
+ TestPath path = m_suite->resolveTestPath( testPath );
+ Test *testToRun = path.getChildTest();
+
+ controller.runTest( testToRun );
+}
+
+
+CPPUNIT_NS_END
+