diff options
-rw-r--r-- | uunit.h | 34 |
1 files changed, 28 insertions, 6 deletions
@@ -76,8 +76,7 @@ public: } catch(test_result& result) { - std::cout << "F"; - fflush(stdout); + status_cb(test.name, test.file, false); result.id = test_num; result.func = test.name; result.failure_type = "Assertion"; @@ -86,9 +85,8 @@ public: } catch(...) { + status_cb(test.name, test.file, false); test_result result; - std::cout << "F"; - fflush(stdout); result.id = test_num; result.func = test.name; result.file = test.file; @@ -109,8 +107,7 @@ public: failed_tests.push_back(result); continue; } - std::cout << "."; - fflush(stdout); + status_cb(test.name, test.file, true); test_result result{test.name}; result.id = test_num; successful_tests.push_back(result); @@ -159,6 +156,8 @@ public: return failed_tests.size() == 0 ? 0 : 1; } + static std::function<void(const char*, const char*, bool)> status_cb; + protected: template<typename O, typename F> void registerTest(O* obj, const F& fn, const char* name, const char* file) @@ -254,5 +253,28 @@ private: }; #ifdef uUNIT_MAIN + uUnit* uUnit::suite_list{nullptr}; + +namespace +{ +//! Default implementation of test result reporter function. +//! Overload this with your own implementation by assigning the uUnit::status_cb +//! function pointer to a function with the same signature. +void report_result(const char* name, const char* file, bool success) +{ + if(success) + { + std::cout << "."; + } + else + { + std::cout << "F"; + } + std::cout << std::flush; +} +} + +std::function<void(const char*, const char*, bool)> uUnit::status_cb{report_result}; + #endif |