Branch Coverage

t/dispatcher.cc
Criterion Covered Total %
branch 410 1042 39.3


line true false branch
18 1 0 Dispatcher d;
19 1 0 d(1);
20 1 0 REQUIRE(true);
1 0 REQUIRE(true);
1 0 REQUIRE(true);
1 0 REQUIRE(true);
0 0 REQUIRE(true);
0 0 REQUIRE(true);
24 1 0 CallbackDispatcher d;
26 1 0 CallbackDispatcher::SimpleCallback f = [&](){called = true;};
27 1 0 d.add(f);
28 1 0 d();
29 1 0 REQUIRE(called);
1 0 REQUIRE(called);
1 0 REQUIRE(called);
1 0 REQUIRE(called);
0 0 REQUIRE(called);
0 0 REQUIRE(called);
34 1 0 Dispatcher d;
36 1 0 return 1 + e.next(a).value_or(0);
37 1 0 };
38 1 0 d.add_event_listener(cb);
39 1 0 d.add_event_listener([](Event& e, int a) -> int {
40 1 0 return a + e.next(a).value_or(0);
41 1 0 });
42 1 0 REQUIRE(d(2).value_or(0) == 3);
1 0 REQUIRE(d(2).value_or(0) == 3);
1 0 REQUIRE(d(2).value_or(0) == 3);
1 0 REQUIRE(d(2).value_or(0) == 3);
1 0 REQUIRE(d(2).value_or(0) == 3);
1 0 REQUIRE(d(2).value_or(0) == 3);
0 0 REQUIRE(d(2).value_or(0) == 3);
0 0 REQUIRE(d(2).value_or(0) == 3);
46 1 0 Dispatcher d;
47 1 0 d.add_event_listener([](Event& e, int a) -> int {
48 2 0 return 1 + e.next(a).value_or(0);
49 1 0 });
51 1 0 return a + e.next(a).value_or(0);
52 1 0 };
53 1 0 d.add_event_listener(c);
54 1 0 REQUIRE(d(2).value_or(0) == 3);
1 0 REQUIRE(d(2).value_or(0) == 3);
1 0 REQUIRE(d(2).value_or(0) == 3);
1 0 REQUIRE(d(2).value_or(0) == 3);
1 0 REQUIRE(d(2).value_or(0) == 3);
1 0 REQUIRE(d(2).value_or(0) == 3);
0 0 REQUIRE(d(2).value_or(0) == 3);
0 0 REQUIRE(d(2).value_or(0) == 3);
55 1 0 d.remove(c);
56 1 0 REQUIRE(d(2).value_or(0) == 1);
1 0 REQUIRE(d(2).value_or(0) == 1);
1 0 REQUIRE(d(2).value_or(0) == 1);
1 0 REQUIRE(d(2).value_or(0) == 1);
1 0 REQUIRE(d(2).value_or(0) == 1);
1 0 REQUIRE(d(2).value_or(0) == 1);
0 0 REQUIRE(d(2).value_or(0) == 1);
0 0 REQUIRE(d(2).value_or(0) == 1);
60 1 0 Dispatcher d;
61 1 0 d.add_event_listener([](Event&, int) -> int {
63 1 0 });
64 1 0 d.add_event_listener([&](Event& e, int a) -> int {
66 1 0 return 1 + e.next(a).value_or(0);
67 1 0 });
68 1 0 REQUIRE(d(2).value_or(0) == 1);
1 0 REQUIRE(d(2).value_or(0) == 1);
1 0 REQUIRE(d(2).value_or(0) == 1);
1 0 REQUIRE(d(2).value_or(0) == 1);
1 0 REQUIRE(d(2).value_or(0) == 1);
1 0 REQUIRE(d(2).value_or(0) == 1);
0 0 REQUIRE(d(2).value_or(0) == 1);
0 0 REQUIRE(d(2).value_or(0) == 1);
72 1 0 Dispatcher d;
75 1 0 Dispatcher::Callback cb = Tracer(14);
76 1 0 d.add_event_listener(cb);
77 1 0 REQUIRE(d(2).value_or(0) == 16);
1 0 REQUIRE(d(2).value_or(0) == 16);
1 0 REQUIRE(d(2).value_or(0) == 16);
1 0 REQUIRE(d(2).value_or(0) == 16);
1 0 REQUIRE(d(2).value_or(0) == 16);
1 0 REQUIRE(d(2).value_or(0) == 16);
0 0 REQUIRE(d(2).value_or(0) == 16);
0 0 REQUIRE(d(2).value_or(0) == 16);
78 1 0 d.remove(cb);
79 1 0 REQUIRE(d(2).value_or(0) == 0);
1 0 REQUIRE(d(2).value_or(0) == 0);
1 0 REQUIRE(d(2).value_or(0) == 0);
1 0 REQUIRE(d(2).value_or(0) == 0);
1 0 REQUIRE(d(2).value_or(0) == 0);
1 0 REQUIRE(d(2).value_or(0) == 0);
0 0 REQUIRE(d(2).value_or(0) == 0);
0 0 REQUIRE(d(2).value_or(0) == 0);
81 1 0 REQUIRE(d(2).value_or(0) == 0);
1 0 REQUIRE(d(2).value_or(0) == 0);
1 0 REQUIRE(d(2).value_or(0) == 0);
1 0 REQUIRE(d(2).value_or(0) == 0);
1 0 REQUIRE(d(2).value_or(0) == 0);
1 0 REQUIRE(d(2).value_or(0) == 0);
0 0 REQUIRE(d(2).value_or(0) == 0);
0 0 REQUIRE(d(2).value_or(0) == 0);
83 1 0 REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10);
1 0 REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10);
1 0 REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10);
1 0 REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10);
1 0 REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10);
0 0 REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10);
0 0 REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10);
84 1 0 REQUIRE(Tracer::copy_calls == 0);
1 0 REQUIRE(Tracer::copy_calls == 0);
1 0 REQUIRE(Tracer::copy_calls == 0);
1 0 REQUIRE(Tracer::copy_calls == 0);
1 0 REQUIRE(Tracer::copy_calls == 0);
0 0 REQUIRE(Tracer::copy_calls == 0);
0 0 REQUIRE(Tracer::copy_calls == 0);
85 1 0 REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10);
1 0 REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10);
1 0 REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10);
1 0 REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10);
1 0 REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10);
0 0 REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10);
0 0 REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10);
86 1 0 REQUIRE(Tracer::dtor_calls == 2);
1 0 REQUIRE(Tracer::dtor_calls == 2);
1 0 REQUIRE(Tracer::dtor_calls == 2);
1 0 REQUIRE(Tracer::dtor_calls == 2);
1 0 REQUIRE(Tracer::dtor_calls == 2);
0 0 REQUIRE(Tracer::dtor_calls == 2);
0 0 REQUIRE(Tracer::dtor_calls == 2);
90 1 0 Dispatcher d;
94 1 0 };
95 1 0 d.add(s);
96 1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
0 0 REQUIRE(d(2).value_or(42) == 42);
0 0 REQUIRE(d(2).value_or(42) == 42);
97 1 0 REQUIRE(called);
1 0 REQUIRE(called);
1 0 REQUIRE(called);
1 0 REQUIRE(called);
0 0 REQUIRE(called);
0 0 REQUIRE(called);
101 1 0 Dispatcher d;
105 1 0 };
106 1 0 d.add(s);
107 1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
0 0 REQUIRE(d(2).value_or(42) == 42);
0 0 REQUIRE(d(2).value_or(42) == 42);
108 1 0 REQUIRE(called);
1 0 REQUIRE(called);
1 0 REQUIRE(called);
1 0 REQUIRE(called);
0 0 REQUIRE(called);
0 0 REQUIRE(called);
109 1 0 d.remove(s);
111 1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
0 0 REQUIRE(d(2).value_or(42) == 42);
0 0 REQUIRE(d(2).value_or(42) == 42);
112 1 0 REQUIRE(!called);
1 0 REQUIRE(!called);
1 0 REQUIRE(!called);
1 0 REQUIRE(!called);
0 0 REQUIRE(!called);
0 0 REQUIRE(!called);
116 1 0 Dispatcher d;
120 1 0 };
121 1 0 d.add(s);
1 0 d.add(s);
122 1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
0 0 REQUIRE(d(2).value_or(42) == 42);
0 0 REQUIRE(d(2).value_or(42) == 42);
123 1 0 REQUIRE(called);
1 0 REQUIRE(called);
1 0 REQUIRE(called);
1 0 REQUIRE(called);
0 0 REQUIRE(called);
0 0 REQUIRE(called);
124 1 0 d.remove(s);
126 1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
1 0 REQUIRE(d(2).value_or(42) == 42);
0 0 REQUIRE(d(2).value_or(42) == 42);
0 0 REQUIRE(d(2).value_or(42) == 42);
127 1 0 REQUIRE(!called);
1 0 REQUIRE(!called);
1 0 REQUIRE(!called);
1 0 REQUIRE(!called);
0 0 REQUIRE(!called);
0 0 REQUIRE(!called);
131 1 0 Dispatcher d;
147 1 0 Dispatcher::SimpleCallback s = src;
148 1 0 d.add(s);
149 1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
150 1 0 CHECK(called);
1 0 CHECK(called);
1 0 CHECK(called);
1 0 CHECK(called);
0 0 CHECK(called);
0 0 CHECK(called);
151 1 0 d.remove(s);
153 1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
154 1 0 CHECK(!called);
1 0 CHECK(!called);
1 0 CHECK(!called);
1 0 CHECK(!called);
0 0 CHECK(!called);
0 0 CHECK(!called);
157 1 0 d.add(s);
158 1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
159 1 0 CHECK(called);
1 0 CHECK(called);
1 0 CHECK(called);
1 0 CHECK(called);
0 0 CHECK(called);
0 0 CHECK(called);
161 1 0 d.remove_object(S(src));
163 1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
164 1 0 CHECK(!called);
1 0 CHECK(!called);
1 0 CHECK(!called);
1 0 CHECK(!called);
0 0 CHECK(!called);
0 0 CHECK(!called);
168 2 0 Dispatcher d;
186 2 0 Dispatcher::Callback s = src;
187 2 0 d.add_event_listener(s);
189 2 0 CHECK(d(2).value_or(42) == 12);
2 0 CHECK(d(2).value_or(42) == 12);
2 0 CHECK(d(2).value_or(42) == 12);
2 0 CHECK(d(2).value_or(42) == 12);
2 0 CHECK(d(2).value_or(42) == 12);
2 0 CHECK(d(2).value_or(42) == 12);
0 0 CHECK(d(2).value_or(42) == 12);
0 0 CHECK(d(2).value_or(42) == 12);
190 2 0 CHECK(called);
2 0 CHECK(called);
2 0 CHECK(called);
2 0 CHECK(called);
0 0 CHECK(called);
0 0 CHECK(called);
193 2 0 SECTION("standatd remove") {
2 0 SECTION("standatd remove") {
2 0 SECTION("standatd remove") {
2 0 SECTION("standatd remove") {
1 1 SECTION("standatd remove") {
194 1 0 d.remove(s);
197 2 0 SECTION("fast remove") {
2 0 SECTION("fast remove") {
2 0 SECTION("fast remove") {
2 0 SECTION("fast remove") {
1 1 SECTION("fast remove") {
198 1 0 d.remove_object(S(src));
201 2 0 CHECK(d(2).value_or(42) == 42);
2 0 CHECK(d(2).value_or(42) == 42);
2 0 CHECK(d(2).value_or(42) == 42);
2 0 CHECK(d(2).value_or(42) == 42);
2 0 CHECK(d(2).value_or(42) == 42);
2 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
202 2 0 CHECK(!called);
2 0 CHECK(!called);
2 0 CHECK(!called);
2 0 CHECK(!called);
0 0 CHECK(!called);
0 0 CHECK(!called);
206 1 0 Dispatcher d;
213 1 0 Dispatcher::SimpleCallback s = l;
214 1 0 d.add(s);
215 1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
216 1 0 CHECK(called);
1 0 CHECK(called);
1 0 CHECK(called);
1 0 CHECK(called);
0 0 CHECK(called);
0 0 CHECK(called);
218 1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
219 1 0 CHECK(!called);
1 0 CHECK(!called);
1 0 CHECK(!called);
1 0 CHECK(!called);
0 0 CHECK(!called);
0 0 CHECK(!called);
225 1 0 Dispatcher d;
233 1 0 Dispatcher::Callback s = l;
234 1 0 d.add_event_listener(s);
235 1 0 CHECK(d(2).value_or(42) == 12);
1 0 CHECK(d(2).value_or(42) == 12);
1 0 CHECK(d(2).value_or(42) == 12);
1 0 CHECK(d(2).value_or(42) == 12);
1 0 CHECK(d(2).value_or(42) == 12);
1 0 CHECK(d(2).value_or(42) == 12);
0 0 CHECK(d(2).value_or(42) == 12);
0 0 CHECK(d(2).value_or(42) == 12);
236 1 0 CHECK(called);
1 0 CHECK(called);
1 0 CHECK(called);
1 0 CHECK(called);
0 0 CHECK(called);
0 0 CHECK(called);
238 1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
1 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
0 0 CHECK(d(2).value_or(42) == 42);
239 1 0 CHECK(!called);
1 0 CHECK(!called);
1 0 CHECK(!called);
1 0 CHECK(!called);
0 0 CHECK(!called);
0 0 CHECK(!called);
243 1 0 Dispatcher d;
244 1 0 d.add_event_listener([](Dispatcher::Event&, int a){return a*2;});
1 0 d.add_event_listener([](Dispatcher::Event&, int a){return a*2;});
245 1 0 function(int)> f = d;
246 1 0 REQUIRE(f(10).value_or(0) == 20);
1 0 REQUIRE(f(10).value_or(0) == 20);
1 0 REQUIRE(f(10).value_or(0) == 20);
1 0 REQUIRE(f(10).value_or(0) == 20);
1 0 REQUIRE(f(10).value_or(0) == 20);
1 0 REQUIRE(f(10).value_or(0) == 20);
0 0 REQUIRE(f(10).value_or(0) == 20);
0 0 REQUIRE(f(10).value_or(0) == 20);
252 1 0 Dispatcher d;
253 1 0 d.add([](string s) {CHECK(s == "value");});
1 0 d.add([](string s) {CHECK(s == "value");});
2 0 d.add([](string s) {CHECK(s == "value");});
2 0 d.add([](string s) {CHECK(s == "value");});
2 0 d.add([](string s) {CHECK(s == "value");});
2 0 d.add([](string s) {CHECK(s == "value");});
2 0 d.add([](string s) {CHECK(s == "value");});
0 0 d.add([](string s) {CHECK(s == "value");});
0 0 d.add([](string s) {CHECK(s == "value");});
254 1 0 d.add([](string s) {CHECK(s == "value");});
1 0 d.add([](string s) {CHECK(s == "value");});
2 0 d.add([](string s) {CHECK(s == "value");});
2 0 d.add([](string s) {CHECK(s == "value");});
2 0 d.add([](string s) {CHECK(s == "value");});
2 0 d.add([](string s) {CHECK(s == "value");});
2 0 d.add([](string s) {CHECK(s == "value");});
0 0 d.add([](string s) {CHECK(s == "value");});
0 0 d.add([](string s) {CHECK(s == "value");});
255 1 0 d(string("value"));
257 1 0 d(s);
262 1 0 Dispatcher d;
264 1 0 d.add([&]{ res.push_back(1); });
1 0 d.add([&]{ res.push_back(1); });
1 0 d.add([&]{ res.push_back(1); });
265 1 0 d.add([&]{ res.push_back(2); });
1 0 d.add([&]{ res.push_back(2); });
1 0 d.add([&]{ res.push_back(2); });
266 1 0 d.add_event_listener([&](Dispatcher::Event& e){ res.push_back(3); e.next(); });
1 0 d.add_event_listener([&](Dispatcher::Event& e){ res.push_back(3); e.next(); });
1 0 d.add_event_listener([&](Dispatcher::Event& e){ res.push_back(3); e.next(); });
267 1 0 d();
268 1 0 REQUIRE(res == std::vector({3,2,1}));
1 0 REQUIRE(res == std::vector({3,2,1}));
1 0 REQUIRE(res == std::vector({3,2,1}));
1 0 REQUIRE(res == std::vector({3,2,1}));
1 0 REQUIRE(res == std::vector({3,2,1}));
1 0 REQUIRE(res == std::vector({3,2,1}));
0 0 REQUIRE(res == std::vector({3,2,1}));
0 0 REQUIRE(res == std::vector({3,2,1}));
273 1 0 Dispatcher d;
275 1 0 d.add_event_listener([&](Dispatcher::Event& e){ res.push_back(1); e.next(); }, true);
1 0 d.add_event_listener([&](Dispatcher::Event& e){ res.push_back(1); e.next(); }, true);
1 0 d.add_event_listener([&](Dispatcher::Event& e){ res.push_back(1); e.next(); }, true);
276 1 0 d.add([&]{ res.push_back(2); }, true);
1 0 d.add([&]{ res.push_back(2); }, true);
1 0 d.add([&]{ res.push_back(2); }, true);
277 1 0 d.add_back([&]{ res.push_back(3); });
1 0 d.add_back([&]{ res.push_back(3); });
278 1 0 d();
279 1 0 REQUIRE(res == std::vector({1,2,3}));
1 0 REQUIRE(res == std::vector({1,2,3}));
1 0 REQUIRE(res == std::vector({1,2,3}));
1 0 REQUIRE(res == std::vector({1,2,3}));
1 0 REQUIRE(res == std::vector({1,2,3}));
1 0 REQUIRE(res == std::vector({1,2,3}));
0 0 REQUIRE(res == std::vector({1,2,3}));
0 0 REQUIRE(res == std::vector({1,2,3}));
284 2 0 CallbackDispatcher d;
286 2 0 SECTION("many listenees") {
2 0 SECTION("many listenees") {
2 0 SECTION("many listenees") {
2 0 SECTION("many listenees") {
1 1 SECTION("many listenees") {
288 1 0 d.add([](auto&&...){});
1 0 d.add([](auto&&...){});
289 1 0 d.add([](auto&&...){});
1 0 d.add([](auto&&...){});
290 1 0 d.add([](auto&&...){});
1 0 d.add([](auto&&...){});
292 2 0 SECTION("no listeners"){}
2 0 SECTION("no listeners"){}
2 0 SECTION("no listeners"){}
2 0 SECTION("no listeners"){}
294 2 0 d(Tracer());
295 2 0 CHECK(Tracer::ctor_total() == 1);
2 0 CHECK(Tracer::ctor_total() == 1);
2 0 CHECK(Tracer::ctor_total() == 1);
2 0 CHECK(Tracer::ctor_total() == 1);
2 0 CHECK(Tracer::ctor_total() == 1);
0 0 CHECK(Tracer::ctor_total() == 1);
0 0 CHECK(Tracer::ctor_total() == 1);
299 1 0 CallbackDispatcher d1;
300 1 0 CallbackDispatcher d2;
304 0 0 auto l3 = [](auto&&...args) { REQUIRE(sizeof...(args) == 1); };
0 0 auto l3 = [](auto&&...args) { REQUIRE(sizeof...(args) == 1); };
0 0 auto l3 = [](auto&&...args) { REQUIRE(sizeof...(args) == 1); };
0 0 auto l3 = [](auto&&...args) { REQUIRE(sizeof...(args) == 1); };
0 0 auto l3 = [](auto&&...args) { REQUIRE(sizeof...(args) == 1); };
0 0 auto l3 = [](auto&&...args) { REQUIRE(sizeof...(args) == 1); };
0 0 auto l3 = [](auto&&...args) { REQUIRE(sizeof...(args) == 1); };
306 1 0 d1.add(l1);
1 0 d1.add(l1);
307 1 0 d1.add(l2);
1 0 d1.add(l2);
308 1 0 d1.add(l3);
1 0 d1.add(l3);
309 1 0 d2.add(l1);
1 0 d2.add(l1);
310 1 0 d2.add(l2);
1 0 d2.add(l2);
311 1 0 d2.add(l3);
1 0 d2.add(l3);
315 0 0 auto l3a = [](auto&&...args) { REQUIRE(sizeof...(args) == 2); return 3; };
0 0 auto l3a = [](auto&&...args) { REQUIRE(sizeof...(args) == 2); return 3; };
0 0 auto l3a = [](auto&&...args) { REQUIRE(sizeof...(args) == 2); return 3; };
0 0 auto l3a = [](auto&&...args) { REQUIRE(sizeof...(args) == 2); return 3; };
0 0 auto l3a = [](auto&&...args) { REQUIRE(sizeof...(args) == 2); return 3; };
0 0 auto l3a = [](auto&&...args) { REQUIRE(sizeof...(args) == 2); return 3; };
0 0 auto l3a = [](auto&&...args) { REQUIRE(sizeof...(args) == 2); return 3; };
317 1 0 d2.add_event_listener(l1a);
1 0 d2.add_event_listener(l1a);
318 1 0 d2.add_event_listener(l2a);
1 0 d2.add_event_listener(l2a);
319 1 0 d2.add_event_listener(l3a);
1 0 d2.add_event_listener(l3a);
323 1 0 Dispatcher* d = new Dispatcher;
1 0 Dispatcher* d = new Dispatcher;
325 1 0 delete d;
326 1 0 };
327 1 0 d->add(cb);
332 1 0 };
333 1 0 d->add(check, true);
335 1 0 (*d)(10);
336 1 0 REQUIRE_FALSE(called);
1 0 REQUIRE_FALSE(called);
1 0 REQUIRE_FALSE(called);
1 0 REQUIRE_FALSE(called);
1 0 REQUIRE_FALSE(called);
0 0 REQUIRE_FALSE(called);
0 0 REQUIRE_FALSE(called);
337 18 0 }
18 0 }