diff options
Diffstat (limited to 'gdb/unittests/observable-selftests.c')
-rw-r--r-- | gdb/unittests/observable-selftests.c | 91 |
1 files changed, 60 insertions, 31 deletions
diff --git a/gdb/unittests/observable-selftests.c b/gdb/unittests/observable-selftests.c index 680b09e..8b8f482 100644 --- a/gdb/unittests/observable-selftests.c +++ b/gdb/unittests/observable-selftests.c @@ -21,8 +21,10 @@ #include "gdbsupport/selftest.h" #include "gdbsupport/observable.h" -namespace selftests { -namespace observers { +namespace selftests +{ +namespace observers +{ static gdb::observers::observable<int> test_notification ("test_notification"); @@ -66,22 +68,46 @@ static void observer_dependency_test_callback (size_t index); /* Data for observers to use for dependency tests, using some sample dependencies between the observers. */ static std::vector<dependency_observer_data> test_observers = { - {&observer_token0, "test0", {}, {}, - [] (int) { observer_dependency_test_callback (0); }}, - {&observer_token1, "test1", {0}, {0}, - [] (int) { observer_dependency_test_callback (1); }}, - {&observer_token2, "test2", {1}, {0, 1}, - [] (int) { observer_dependency_test_callback (2); }}, - {&observer_token3, "test3", {1}, {0, 1}, - [] (int) { observer_dependency_test_callback (3); }}, - {&observer_token4, "test4", {2, 3, 5}, {0, 1, 2, 3, 5}, - [] (int) { observer_dependency_test_callback (4); }}, - {&observer_token5, "test5", {0}, {0}, - [] (int) { observer_dependency_test_callback (5); }}, - {nullptr, "test6", {4}, {0, 1, 2, 3, 4, 5}, - [] (int) { observer_dependency_test_callback (6); }}, - {nullptr, "test7", {0}, {0}, - [] (int) { observer_dependency_test_callback (7); }}, + { &observer_token0, + "test0", + {}, + {}, + [] (int) { observer_dependency_test_callback (0); } }, + { &observer_token1, + "test1", + { 0 }, + { 0 }, + [] (int) { observer_dependency_test_callback (1); } }, + { &observer_token2, + "test2", + { 1 }, + { 0, 1 }, + [] (int) { observer_dependency_test_callback (2); } }, + { &observer_token3, + "test3", + { 1 }, + { 0, 1 }, + [] (int) { observer_dependency_test_callback (3); } }, + { &observer_token4, + "test4", + { 2, 3, 5 }, + { 0, 1, 2, 3, 5 }, + [] (int) { observer_dependency_test_callback (4); } }, + { &observer_token5, + "test5", + { 0 }, + { 0 }, + [] (int) { observer_dependency_test_callback (5); } }, + { nullptr, + "test6", + { 4 }, + { 0, 1, 2, 3, 4, 5 }, + [] (int) { observer_dependency_test_callback (6); } }, + { nullptr, + "test7", + { 0 }, + { 0 }, + [] (int) { observer_dependency_test_callback (7); } }, }; static void @@ -137,8 +163,8 @@ observer_dependency_test_callback (size_t index) static void run_dependency_test (std::vector<int> insertion_order) { - gdb::observers::observable<int> dependency_test_notification - ("dependency_test_notification"); + gdb::observers::observable<int> dependency_test_notification ( + "dependency_test_notification"); /* Reset counters. */ dependency_test_counters = std::vector<int> (test_observers.size (), 0); @@ -154,8 +180,8 @@ run_dependency_test (std::vector<int> insertion_order) dependency_tokens.emplace_back (test_observers[index].token); if (o.token != nullptr) - dependency_test_notification.attach - (o.callback, *o.token, o.name, dependency_tokens); + dependency_test_notification.attach (o.callback, *o.token, o.name, + dependency_tokens); else dependency_test_notification.attach (o.callback, o.name, dependency_tokens); @@ -169,9 +195,9 @@ static void test_dependency () { /* Run dependency tests with different insertion orders. */ - run_dependency_test ({0, 1, 2, 3, 4, 5, 6, 7}); - run_dependency_test ({7, 6, 5, 4, 3, 2, 1, 0}); - run_dependency_test ({0, 3, 2, 1, 7, 6, 4, 5}); + run_dependency_test ({ 0, 1, 2, 3, 4, 5, 6, 7 }); + run_dependency_test ({ 7, 6, 5, 4, 3, 2, 1, 0 }); + run_dependency_test ({ 0, 3, 2, 1, 7, 6, 4, 5 }); } static void @@ -181,10 +207,11 @@ run_tests () attached. */ notify_check_counters (0, 0, 0); - const gdb::observers::token token1 {}, token2 {} , token3 {}; + const gdb::observers::token token1 {}, token2 {}, token3 {}; /* Now, attach one observer, and send a notification. */ - test_notification.attach (&test_second_notification_function, token2, "test"); + test_notification.attach (&test_second_notification_function, token2, + "test"); notify_check_counters (0, 1, 0); /* Remove the observer, and send a notification. */ @@ -196,7 +223,8 @@ run_tests () notify_check_counters (1, 0, 0); /* With 2 observers. */ - test_notification.attach (&test_second_notification_function, token2, "test"); + test_notification.attach (&test_second_notification_function, token2, + "test"); notify_check_counters (1, 1, 0); /* With 3 observers. */ @@ -218,7 +246,8 @@ run_tests () /* Go back to 3 observers, and remove them in a different order... */ test_notification.attach (&test_first_notification_function, token1, "test"); - test_notification.attach (&test_second_notification_function, token2, "test"); + test_notification.attach (&test_second_notification_function, token2, + "test"); test_notification.attach (&test_third_notification_function, token3, "test"); notify_check_counters (1, 1, 1); @@ -239,11 +268,11 @@ run_tests () } /* namespace selftests */ void _initialize_observer_selftest (); + void _initialize_observer_selftest () { - selftests::register_test ("gdb::observers", - selftests::observers::run_tests); + selftests::register_test ("gdb::observers", selftests::observers::run_tests); selftests::register_test ("gdb::observers dependency", selftests::observers::test_dependency); } |