[gdb] Change register_test to use std::function arg
authorTom de Vries <tdevries@suse.de>
Mon, 20 Sep 2021 22:41:26 +0000 (00:41 +0200)
committerTom de Vries <tdevries@suse.de>
Mon, 20 Sep 2021 22:41:26 +0000 (00:41 +0200)
Change register_test to use std::function arg, such that we can do:
...
  register_test (test_name, [=] () { SELF_CHECK (...); });
...

Tested on x86_64-linux.

gdb/unittests/intrusive_list-selftests.c
gdbsupport/selftest.cc
gdbsupport/selftest.h

index 8b2b2d1391eff84afcb812cc8228d0be65905668..1b38ac39edf9fe523f3b79f610e6394e552b4d8f 100644 (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 ();
 }
 
index d0511abe654697f03b387af4d361fafef9227ea8..55f530ad98e7f796e1edb58990bfe4e0dad742e7 100644 (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.  */
index 13441b05a21d6f2eb31052997672466540bb6c16..b75e01e197fcb561e68c75263019ea22b968770b 100644 (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.