UnitTests
From OPeNDAP Documentation
⧼opendap2-jumptonavigation⧽
CppUnit basic layout
Running tests by name
Using command line switches to control output
Putting it all together
#include "config.h"
#include <cppunit/TextTestRunner.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/extensions/HelperMacros.h>
#include <GetOpt.h> // Part of libdap
//#define DODS_DEBUG
#include "D4Dimensions.h"
#include "XMLWriter.h"
#include "Error.h"
#include "debug.h"
#include "testFile.h"
#include "test_config.h"
using namespace CppUnit;
using namespace std;
using namespace libdap;
static bool debug = false;
#undef DBG
#define DBG(x) do { if (debug) (x); } while(false);
class D4DimensionsTest: public TestFixture {
private:
XMLWriter *xml;
D4Dimensions *d;
public:
D4DimensionsTest() {
}
~D4DimensionsTest() {
}
void setUp() {
d = new D4Dimensions;
xml = new XMLWriter;
}
void tearDown() {
delete xml;
delete d;
}
void test_print_copy_ctor() {
d->add_dim_nocopy(new D4Dimension("first", 10));
d->add_dim_nocopy(new D4Dimension("second", 100));
d->add_dim_nocopy(new D4Dimension("third"));
D4Dimensions lhs(*d);
lhs.print_dap4(*xml);
string doc = xml->get_doc();
string baseline = readTestBaseline(string(TEST_SRC_DIR) + "/D4-xml/D4Dimensions_3.xml");
DBG(cerr << "test_print_copy_ctor: doc: " << doc << endl);
DBG(cerr << "test_print_copy_ctor: baseline: " << baseline << endl);
CPPUNIT_ASSERT(doc == baseline);
}
CPPUNIT_TEST_SUITE( D4DimensionsTest );
CPPUNIT_TEST(test_print_empty);
// CPPUNIT_TEST_EXCEPTION( test_error, Error );
CPPUNIT_TEST_SUITE_END();
};
int main(int argc, char*argv[]) {
CppUnit::TextTestRunner runner;
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
GetOpt getopt(argc, argv, "d");
char option_char;
while ((option_char = getopt()) != EOF)
switch (option_char) {
case 'd':
debug = 1; // debug is a static global
break;
default:
break;
}
bool wasSuccessful = true;
string test = "";
int i = getopt.optind;
if (i == argc) {
// run them all
wasSuccessful = runner.run("");
}
else {
while (i < argc) {
test = string("D4DimensionsTest::") + argv[i++];
wasSuccessful = wasSuccessful && runner.run(test);
}
}
return wasSuccessful ? 0 : 1;
}