64 lines
1.6 KiB
C++
64 lines
1.6 KiB
C++
#include <unordered_set>
|
|
#include <string>
|
|
#include <cstdio>
|
|
#include <iostream>
|
|
|
|
extern "C" {
|
|
#include "guf_init.h"
|
|
}
|
|
|
|
#include "test_dbuf.hpp"
|
|
#include "test_dict.hpp"
|
|
#include "test_utf8.hpp"
|
|
|
|
std::unordered_set<std::unique_ptr<Test>> g_tests {};
|
|
|
|
void init_tests()
|
|
{
|
|
std::unique_ptr<Test> test = std::make_unique<DbufIntTest>("DbufIntTest");
|
|
GUF_ASSERT_RELEASE(test.get());
|
|
g_tests.insert(std::move(test));
|
|
|
|
test = std::make_unique<DbufCstringTest>("DbufCstringTest");
|
|
GUF_ASSERT_RELEASE(test.get());
|
|
g_tests.insert(std::move(test));
|
|
|
|
test = std::make_unique<DictSvToIntTest>("DictSvToIntTest");
|
|
GUF_ASSERT_RELEASE(test.get());
|
|
g_tests.insert(std::move(test));
|
|
|
|
test = std::make_unique<UTF8Test>("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;
|
|
} |