#include #include #include #include extern "C" { #include "guf_init.h" } #include "test_dbuf.hpp" #include "test_dict.hpp" #include "test_utf8.hpp" std::unordered_set> g_tests {}; void init_tests() { std::unique_ptr test = std::make_unique("DbufIntTest"); GUF_ASSERT_RELEASE(test.get()); g_tests.insert(std::move(test)); test = std::make_unique("DbufCstringTest"); GUF_ASSERT_RELEASE(test.get()); g_tests.insert(std::move(test)); test = std::make_unique("DictSvToIntTest"); GUF_ASSERT_RELEASE(test.get()); g_tests.insert(std::move(test)); test = std::make_unique("UTF8Test"); GUF_ASSERT_RELEASE(test.get()); g_tests.insert(std::move(test)); } int main() { init_tests(); std::cout << "Running " << g_tests.size() << " tests...\n"; size_t num_passed = 0; for (auto &test : g_tests) { Test *tst = test.get(); GUF_ASSERT_RELEASE(tst); tst->before_run(); tst->run(); tst->after_run(); std::cout << "- " << *tst << "\n"; if (tst->passed) { ++num_passed; } } const bool passed_all = (num_passed == g_tests.size()); GUF_ASSERT_RELEASE(num_passed <= g_tests.size()); if (passed_all) { std::cout << "-> SUCCESS: Passed all (" << num_passed << "/" << g_tests.size() << ") tests.\n"; } else { std::cout << "-> FAILURE: Failed " << (g_tests.size() - num_passed) << "/" << g_tests.size() << " tests.\n"; } return passed_all ? EXIT_SUCCESS : EXIT_FAILURE; }