#pragma once #define TEST(suite, test) \ void _TEST_##suite##_##test(); \ [[accumulate]] int TEST_RunAll_accumulated(int f) { \ if (!TEST_Run(#suite "_" #test)) ++f; \ return = f; \ } \ void _TEST_##suite##_##test() #define TEST_Check(cond) MACRO_BEGIN { if (!(cond)) TEST_Fail(#cond); } MACRO_END void TEST_OK(); void TEST_Fail(string cond); bool TEST_RunAll(); bool TEST_Run(string test);