diff --git a/modules/beast_core/diagnostic/beast_UnitTest.cpp b/modules/beast_core/diagnostic/beast_UnitTest.cpp index 41903dc31..6cc4ebfae 100644 --- a/modules/beast_core/diagnostic/beast_UnitTest.cpp +++ b/modules/beast_core/diagnostic/beast_UnitTest.cpp @@ -105,6 +105,33 @@ void UnitTests::resultsUpdated() { } +void UnitTests::runTest (String const& name) +{ + results.clear(); + resultsUpdated(); + + Array& tests = UnitTest::getAllTests (); + + for (int i = 0; i < tests.size(); ++i) + { + UnitTest& test = *tests [i]; + + if (test.getName () == name) + { + try + { + test.performTest (this); + } + catch (...) + { + addFail ("An unhandled exception was thrown!"); + } + + break; + } + } +} + void UnitTests::runTests (const Array& tests) { results.clear(); diff --git a/modules/beast_core/diagnostic/beast_UnitTest.h b/modules/beast_core/diagnostic/beast_UnitTest.h index 237f1ba89..6945bf766 100644 --- a/modules/beast_core/diagnostic/beast_UnitTest.h +++ b/modules/beast_core/diagnostic/beast_UnitTest.h @@ -56,9 +56,10 @@ class UnitTests; } }; - // Explicit template instantiation is required to make the unit - // test get automatically added to the set of unit tests. - template class UnitTestType ; + // This makes the unit test available in the global list + // It doesn't have to be static. + // + static MyTest myTest; @endcode @@ -187,6 +188,10 @@ public: /** Destructor. */ virtual ~UnitTests(); + /** Run a particular test. + */ + void runTest (String const& name); + /** Runs a set of tests. The tests are performed in order, and the results are logged. To run all the