[gdb] Change register_test to use std::function arg

Change register_test to use std::function arg, such that we can do:
...
  register_test (test_name, [=] () { SELF_CHECK (...); });
...

Tested on x86_64-linux.
This commit is contained in:
Tom de Vries
2021-09-21 00:41:26 +02:00
parent 6f265beb28
commit c45a683f8f
3 changed files with 25 additions and 22 deletions

View File

@@ -754,7 +754,7 @@ struct intrusive_list_test
template <typename ListType>
static void
test_intrusive_list ()
test_intrusive_list_1 ()
{
intrusive_list_test<ListType> tests;
@@ -804,8 +804,8 @@ test_node_is_linked ()
static void
test_intrusive_list ()
{
test_intrusive_list<item_with_base_list> ();
test_intrusive_list<item_with_member_list> ();
test_intrusive_list_1<item_with_base_list> ();
test_intrusive_list_1<item_with_member_list> ();
test_node_is_linked ();
}

View File

@@ -21,6 +21,7 @@
#include "common-debug.h"
#include "selftest.h"
#include <map>
#include <functional>
namespace selftests
{
@@ -30,22 +31,6 @@ namespace selftests
static std::map<std::string, std::unique_ptr<selftest>> tests;
/* A selftest that calls the test function without arguments. */
struct simple_selftest : public selftest
{
simple_selftest (self_test_function *function_)
: function (function_)
{}
void operator() () const override
{
function ();
}
self_test_function *function;
};
/* See selftest.h. */
void
@@ -57,12 +42,30 @@ register_test (const std::string &name, selftest *test)
tests[name] = std::unique_ptr<selftest> (test);
}
/* A selftest that calls the test function without arguments. */
struct lambda_selftest : public selftest
{
lambda_selftest (std::function<void(void)> function_)
{
function = function_;
}
void operator() () const override
{
function ();
}
std::function<void(void)> function;
};
/* See selftest.h. */
void
register_test (const std::string &name, self_test_function *function)
register_test (const std::string &name,
std::function<void(void)> function)
{
register_test (name, new simple_selftest (function));
register_test (name, new lambda_selftest (function));
}
/* See selftest.h. */

View File

@@ -44,7 +44,7 @@ extern void register_test (const std::string &name, selftest *test);
/* Register a new self-test. */
extern void register_test (const std::string &name,
self_test_function *function);
std::function<void(void)> function);
/* Run all the self tests. This print a message describing the number
of test and the number of failures.