diff options
author | Bent Bisballe Nyeng <bbn@mjolner.dk> | 2020-10-26 15:56:44 +0100 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2020-10-26 17:31:45 +0100 |
commit | 2b347407b1157086b58ae9d897e14b77fbdce5b4 (patch) | |
tree | 6656daea986f6d35dec365793ab8915769e387b6 | |
parent | 3771bac729d07a2117be6aa29f8c824a8e3d60bc (diff) |
Add test status callback function that can be overridden by a user-implementation if needed.
-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 |