From e1f9d9ca1ef3c69da3b887b0af298be0aea4a5f9 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Wed, 23 Oct 2024 00:20:05 +0200 Subject: More work on testing framework --- asl/testing/testing.hpp | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) (limited to 'asl/testing/testing.hpp') diff --git a/asl/testing/testing.hpp b/asl/testing/testing.hpp index a489d61..db2a64a 100644 --- a/asl/testing/testing.hpp +++ b/asl/testing/testing.hpp @@ -1,15 +1,38 @@ #pragma once +#include + namespace asl::testing { +struct Test; + +void register_test(Test*); + +void report_failure(const char* msg, const char* file, int line); + using TestFunction = void(); -int register_test(const char* suite_name, const char* case_name, TestFunction* fn); + +struct Test +{ + const char* m_case_name; + TestFunction* m_fn; + Test* m_next{}; + Test* m_prev{}; + + constexpr explicit Test(const char* case_name, TestFunction* fn) + : m_case_name{case_name} + , m_fn{fn} + { + register_test(this); + } +}; } // namespace asl::testing -#define ASL_TEST(SUITE, CASE) \ - static void asl_test_fn_##SUITE##_##CASE(); \ - static const int asl_test_##SUITE##_##CASE = ::asl::testing::register_test( \ - #SUITE, #CASE, asl_test_fn_##SUITE##_##CASE); \ - void asl_test_fn_##SUITE##_##CASE() +#define ASL_TEST(CASE) \ + static void asl_test_fn_##CASE(); \ + static ::asl::testing::Test asl_test_##CASE( \ + #CASE, \ + asl_test_fn_##CASE); \ + void asl_test_fn_##CASE() -- cgit