summaryrefslogtreecommitdiff
path: root/asl/testing/testing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'asl/testing/testing.cpp')
-rw-r--r--asl/testing/testing.cpp42
1 files changed, 28 insertions, 14 deletions
diff --git a/asl/testing/testing.cpp b/asl/testing/testing.cpp
index 4e62002..53e2bb0 100644
--- a/asl/testing/testing.cpp
+++ b/asl/testing/testing.cpp
@@ -4,37 +4,51 @@
#include "asl/testing/testing.hpp"
+#include "asl/base/assert.hpp"
+#include "asl/base/meta.hpp"
+#include "asl/base/utility.hpp"
#include "asl/io/print.hpp"
-static asl::testing::Test* g_head = nullptr;
-static asl::testing::Test* g_tail = nullptr;
+namespace
+{
+
+struct TestingState
+{
+ asl::testing::Test* head = nullptr;
+ asl::testing::Test* tail = nullptr;
+
+ bool current_test_fail = false;
+};
+
+} // namespace
+
+// NOLINTNEXTLINE(*-avoid-non-const-global-variables)
+static TestingState g_state{};
void asl::testing::register_test(Test* test)
{
- if (g_head == nullptr && g_tail == nullptr)
+ if (g_state.head == nullptr && g_state.tail == nullptr)
{
- g_head = test;
- g_tail = test;
+ g_state.head = test;
+ g_state.tail = test;
}
else
{
- g_tail->m_next = test;
- test->m_prev = asl::exchange(g_tail, test);
+ g_state.tail->m_next = test;
+ test->m_prev = asl::exchange(g_state.tail, test);
}
}
-static bool g_current_test_fail = false;
-
void asl::testing::report_failure(const char* msg, const asl::source_location& sl)
{
asl::eprint("--------------------------------------------------------------\n");
asl::eprint("Test assertion failed at {}, line {}:\n", sl.file, sl.line);
asl::eprint(" {}\n", msg);
asl::eprint("--------------------------------------------------------------\n");
- g_current_test_fail = true;
+ g_state.current_test_fail = true;
}
-static void report_assert_failure(const char* msg, const asl::source_location& sl, void*)
+static void report_assert_failure(const char* msg, const asl::source_location& sl, void* /* userdata */)
{
asl::eprint("------------------------------------------------------------\n");
asl::eprint("Assertion failure at {}, line {}:\n", sl.file, sl.line);
@@ -55,14 +69,14 @@ int main([[maybe_unused]] int argc, [[maybe_unused]] char* argv[])
asl::testing::Test* failed_head = nullptr;
- for (auto* it = g_head; it != nullptr; it = it->m_next)
+ for (auto* it = g_state.head; it != nullptr; it = it->m_next)
{
asl::eprint(GREEN("[ RUN ]") " {}\n", it->m_case_name);
- g_current_test_fail = false;
+ g_state.current_test_fail = false;
it->m_fn();
- if (!g_current_test_fail)
+ if (!g_state.current_test_fail)
{
asl::eprint(GREEN("[ OK ]") " {}\n", it->m_case_name);
pass += 1;