1 #ifndef TESTUTILS_CPPUNIT_H
2 #define TESTUTILS_CPPUNIT_H
6 #include "../application/commandlineutils.h"
8 #include <cppunit/TestPath.h>
9 #include <cppunit/extensions/TestFactoryRegistry.h>
10 #include <cppunit/ui/text/TestRunner.h>
16 using namespace CPPUNIT_NS;
23 for (
int index = 0, count = test->getChildTestCount(); index != count; ++index) {
24 const auto childTest = test->getChildTestAt(index);
25 cerr <<
'\n' << indentation <<
" - " << childTest->getName();
33 int main(
int argc,
char **argv)
41 TestFactoryRegistry ®istry = TestFactoryRegistry::getRegistry();
43 cerr <<
"Available tests:";
50 TextUi::TestRunner runner;
53 runner.addTest(registry.makeTest());
56 Test *overallTest = registry.makeTest();
57 vector<const char *> unavailableUnits;
58 for (
const char *unit : testApp.
units()) {
60 runner.addTest(overallTest->findTest(unit));
61 }
catch (
const invalid_argument &) {
62 unavailableUnits.emplace_back(unit);
65 if (!unavailableUnits.empty()) {
66 cerr <<
"The following tests specified via --unit are not available:";
67 for (
const char *unitName : unavailableUnits) {
68 cerr <<
"\n - " << unitName;
70 cerr <<
"\nAvailable tests:";
76 const auto ok = runner.run(
string(),
false);
77 cerr << (ok ?
"Tests successful\n" :
"Tests failed\n");
81 #endif // TESTUTILS_CPPUNIT_H