Added implementation of DumpBitmap. Changed reference to MachineInfo in
[jitcs.git] / tests / test_unittest.cpp
bloba2c7224011e1f35a4abf7e25bdc8ab7fa50cb9b5
1 #include "unittest.h"
2 #include <stdio.h>
4 using namespace jitcs;
6 UnitTest::UnitTest()
7 : _numberOfSuccessfulTests(0)
8 , _numberOfFailedTests(0)
9 , _nameOfCurrentTest() {
12 void UnitTest::check(const char* subtestName, bool success) {
13 if (success) {
14 _numberOfSuccessfulTests++;
15 return;
17 _numberOfFailedTests++;
18 if (_nameOfCurrentTest.size() == 0)
19 printf("FAILED unnamed test/%s\n", subtestName);
20 else
21 printf("FAILED: test %s/%s\n", _nameOfCurrentTest.c_str(), subtestName);
23 void UnitTest::run(std::string const &testName, void (*testFnc)(UnitTest &)) {
24 printf("test started: %s\n", testName.c_str());
25 _nameOfCurrentTest = testName;
26 try {
27 testFnc(*this);
28 } catch (const char* msg) {
29 _numberOfFailedTests++;
30 printf("FAILED: test %s crashed: %s\n", _nameOfCurrentTest.c_str(), msg);
31 } catch (...) {
32 _numberOfFailedTests++;
33 printf("FAILED: test %s crashed\n", _nameOfCurrentTest.c_str());
35 printf("test ended: %s\n", testName.c_str());
37 // --------------------------------
38 UnitTestRegistry* UnitTestRegistry::get() {
39 static UnitTestRegistry* instance = nullptr;
40 // TODO: this isn't thread-safe. do we care?
41 if (instance == nullptr) {
42 instance = new UnitTestRegistry;
44 return instance;
47 UnitTestRegistry::UnitTestRegistry() {
50 void UnitTestRegistry::registerTest(std::string const &testName, void (*testFnc)(UnitTest &)) {
51 // TODO: this isn't thread-safe. do we care?
52 _tests.push_back(std::make_pair(testName, testFnc));
54 void UnitTestRegistry::runTests(UnitTest & t) {
55 printf("tests start\n");
56 for (listType::iterator i = _tests.begin(), e = _tests.end(); i != e; ++i) {
57 try {
58 t.run(i->first, i->second);
59 } catch (...) {
62 printf("tests finished\n");
64 UnitTestRun::UnitTestRun(std::string const &testName, void (*testFnc)(UnitTest &)) {
65 UnitTestRegistry::get()->registerTest(testName, testFnc);