C++ Utilities  4.17.0
Useful C++ classes and routines such as argument parser, IO and conversion utilities
cppunit.h
Go to the documentation of this file.
1 #ifndef TESTUTILS_CPPUNIT_H
2 #define TESTUTILS_CPPUNIT_H
3 
4 #include "./testutils.h"
5 
6 #include <cppunit/TestPath.h>
7 #include <cppunit/extensions/TestFactoryRegistry.h>
8 #include <cppunit/ui/text/TestRunner.h>
9 
10 #include <iostream>
11 
12 using namespace std;
13 using namespace TestUtilities;
14 using namespace CPPUNIT_NS;
15 
19 int main(int argc, char **argv)
20 {
21  TestApplication testApp(argc, argv);
22  if (!testApp) {
23  return -1;
24  }
25 
26  // run tests
27  TextUi::TestRunner runner;
28  TestFactoryRegistry &registry = TestFactoryRegistry::getRegistry();
29  if (!testApp.unitsSpecified() || testApp.units().empty()) {
30  // no units specified -> test all
31  runner.addTest(registry.makeTest());
32  } else {
33  // pick specified units from overall test
34  Test *overallTest = registry.makeTest();
35  for (const char *unit : testApp.units()) {
36  try {
37  runner.addTest(overallTest->findTest(unit));
38  } catch (const invalid_argument &) {
39  cerr << "The specified test unit \"" << unit << "\" is not available and will be ignored." << endl;
40  }
41  }
42  }
43  return !runner.run(string(), false);
44 }
45 
46 #endif // TESTUTILS_CPPUNIT_H
bool unitsSpecified() const
Returns whether particular units have been specified.
Definition: testutils.h:89
The TestApplication class simplifies writing test applications that require opening test files.
Definition: testutils.h:23
Contains classes and functions utilizing creating of test applications.
Definition: testutils.h:13
int main(int argc, char **argv)
Performs unit tests using cppunit.
Definition: cppunit.h:19
const std::vector< const char * > & units() const
Returns the specified test units.
Definition: testutils.h:98