double has been disabled, because I am no longer packaging the gdtoa library with Ledger (because double conversion really has nothing to do with what Ledger does). If you wish to use it, you can find gdtoa in cpp-rewrite-2006, under a sub-directory of the same name.
112 lines
2.8 KiB
C++
112 lines
2.8 KiB
C++
#include <cppunit/CompilerOutputter.h>
|
|
#include <cppunit/TestResult.h>
|
|
#include <cppunit/TestResultCollector.h>
|
|
#include <cppunit/TestRunner.h>
|
|
#include <cppunit/TextTestProgressListener.h>
|
|
#include <cppunit/BriefTestProgressListener.h>
|
|
#include <cppunit/XmlOutputter.h>
|
|
#include <cppunit/extensions/TestFactoryRegistry.h>
|
|
|
|
#include "UnitTests.h"
|
|
|
|
|
|
// Create the CppUnit registry
|
|
|
|
CPPUNIT_REGISTRY_ADD_TO_DEFAULT("Framework");
|
|
|
|
CPPUNIT_REGISTRY_ADD_TO_DEFAULT("numerics");
|
|
|
|
// Create a sample test, which acts both as a template, and a
|
|
// verification that the basic framework is functioning.
|
|
|
|
class UnitTests : public CPPUNIT_NS::TestCase
|
|
{
|
|
CPPUNIT_TEST_SUITE( UnitTests );
|
|
CPPUNIT_TEST( testInitialization );
|
|
CPPUNIT_TEST_SUITE_END();
|
|
|
|
public:
|
|
UnitTests() {}
|
|
virtual ~UnitTests() {}
|
|
|
|
virtual void setUp() {}
|
|
virtual void tearDown() {}
|
|
|
|
void testInitialization() {
|
|
assertEqual(std::string("Hello, world!"),
|
|
std::string("Hello, world!"));
|
|
}
|
|
|
|
private:
|
|
UnitTests( const UnitTests © );
|
|
void operator =( const UnitTests © );
|
|
};
|
|
|
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(UnitTests, "framework");
|
|
|
|
|
|
// Create the various runners and commence running the tests!
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
int index = 1;
|
|
|
|
if (argc > index && std::string(argv[index]) == "--verify") {
|
|
ledger::verify_enabled = true;
|
|
index++;
|
|
}
|
|
|
|
// Retreive test path from command line first argument. Default to
|
|
// "" which resolves to the top level suite.
|
|
std::string testPath = ((argc > index) ? std::string(argv[index]) :
|
|
std::string(""));
|
|
|
|
// Create the event manager and test controller
|
|
CPPUNIT_NS::TestResult controller;
|
|
|
|
// Add a listener that collects test results
|
|
CPPUNIT_NS::TestResultCollector result;
|
|
controller.addListener(&result);
|
|
|
|
// Add a listener that print dots as test run.
|
|
#if 1
|
|
CPPUNIT_NS::TextTestProgressListener progress;
|
|
#else
|
|
CPPUNIT_NS::BriefTestProgressListener progress;
|
|
#endif
|
|
controller.addListener(&progress);
|
|
|
|
// Add the top suite to the test runner
|
|
CPPUNIT_NS::TestRunner runner;
|
|
runner.addTest(CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest());
|
|
try {
|
|
IF_VERIFY()
|
|
initialize_memory_tracing();
|
|
|
|
runner.run(controller, testPath);
|
|
|
|
IF_VERIFY()
|
|
shutdown_memory_tracing();
|
|
|
|
// Print test in a compiler compatible format.
|
|
CPPUNIT_NS::CompilerOutputter outputter(&result, CPPUNIT_NS::stdCOut());
|
|
outputter.write();
|
|
|
|
#if 0
|
|
// Uncomment this for XML output
|
|
std::ofstream file("tests.xml");
|
|
CPPUNIT_NS::XmlOutputter xml(&result, file);
|
|
xml.setStyleSheet("report.xsl");
|
|
xml.write();
|
|
file.close();
|
|
#endif
|
|
}
|
|
catch (std::invalid_argument &e) { // Test path not resolved
|
|
CPPUNIT_NS::stdCOut() << "\n"
|
|
<< "ERROR: " << e.what()
|
|
<< "\n";
|
|
return 0;
|
|
}
|
|
|
|
return result.wasSuccessful() ? 0 : 1;
|
|
}
|