diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2010-10-30 23:02:32 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2010-10-30 23:02:32 +0000 |
commit | b3cded65e92ba4d9b5e5a33fb95c4d551bda9c1b (patch) | |
tree | 69d40fbef2c0c4ee32fe97b7a28b510f2e3c2dbc /gold/testsuite/test.cc | |
parent | 7a815afd9b5121ee0f65dc1e1de1c0de6de97679 (diff) |
Notes
Diffstat (limited to 'gold/testsuite/test.cc')
-rw-r--r-- | gold/testsuite/test.cc | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/gold/testsuite/test.cc b/gold/testsuite/test.cc new file mode 100644 index 0000000000000..37a4ada9ab062 --- /dev/null +++ b/gold/testsuite/test.cc @@ -0,0 +1,78 @@ +// test.cc -- simplistic test framework for gold. + +#include "gold.h" + +#include <cstdio> + +#include "test.h" + +namespace gold_testsuite +{ + +// Test_framework methods. + +// The current test being run. + +Test_report* Test_framework::current_report; + +// Run a test. + +void +Test_framework::run(const char *name, bool (*pfn)(Test_report*)) +{ + this->testname_ = name; + this->current_fail_ = false; + + Test_report tr(this); + Test_framework::current_report = &tr; + + if ((*pfn)(&tr) && !this->current_fail_) + { + printf("PASS: %s\n", name); + ++this->passes_; + } + else + { + printf("FAIL: %s\n", name); + ++this->failures_; + } + + Test_framework::current_report = NULL; + this->testname_ = NULL; +} + +// Let a test report an error. + +void +Test_framework::error(const char* message) +{ + printf("ERROR: %s: %s\n", this->testname_, message); + this->fail(); +} + +// Register_test methods. + +// Linked list of all registered tests. + +Register_test* Register_test::all_tests; + +// Register a test. + +Register_test::Register_test(const char* name, bool (*pfn)(Test_report*)) + : name_(name), pfn_(pfn), next_(Register_test::all_tests) +{ + Register_test::all_tests = this; +} + +// Run all registered tests. + +void +Register_test::run_tests(Test_framework* tf) +{ + for (Register_test* p = Register_test::all_tests; + p != NULL; + p = p->next_) + tf->run(p->name_, p->pfn_); +} + +} // End namespace gold_testsuite. |