GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tests/gatecore_cpp_test/test_delegate.cpp
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 244 244 100.0%
Functions: 44 44 100.0%
Branches: 314 847 37.1%

Line Branch Exec Source
1 #include "gate/tests.hpp"
2 #include "gate/delegates.hpp"
3 #include "gate/exceptions.hpp"
4
5 using namespace gate;
6
7 struct Target
8 {
9 int member_id;
10 int params[16];
11
12 15 Target()
13 15 {
14 15 this->reset();
15 15 }
16
17 15 void reset()
18 {
19 15 this->member_id = -1;
20
2/2
✓ Branch 0 taken 240 times.
✓ Branch 1 taken 15 times.
255 for (unsigned n = 0; n < 16; ++n)
21 {
22 240 this->params[n] = 0;
23 }
24 15 }
25
26 2 void member0()
27 {
28 2 this->member_id = 0;
29 2 }
30 2 void member1(int p1)
31 {
32 2 this->member_id = 1;
33 2 this->params[0] = p1;
34 2 }
35 2 void member2(int p1, int p2)
36 {
37 2 this->member_id = 2;
38 2 this->params[0] = p1;
39 2 this->params[1] = p2;
40 2 }
41 2 void member3(int p1, int p2, int p3)
42 {
43 2 this->member_id = 3;
44 2 this->params[0] = p1;
45 2 this->params[1] = p2;
46 2 this->params[2] = p3;
47 2 }
48 2 void member4(int p1, int p2, int p3, int p4)
49 {
50 2 this->member_id = 4;
51 2 this->params[0] = p1;
52 2 this->params[1] = p2;
53 2 this->params[2] = p3;
54 2 this->params[3] = p4;
55 2 }
56 2 void member5(int p1, int p2, int p3, int p4, int p5)
57 {
58 2 this->member_id = 5;
59 2 this->params[0] = p1;
60 2 this->params[1] = p2;
61 2 this->params[2] = p3;
62 2 this->params[3] = p4;
63 2 this->params[4] = p5;
64 2 }
65 2 void member6(int p1, int p2, int p3, int p4, int p5, int p6)
66 {
67 2 this->member_id = 6;
68 2 this->params[0] = p1;
69 2 this->params[1] = p2;
70 2 this->params[2] = p3;
71 2 this->params[3] = p4;
72 2 this->params[4] = p5;
73 2 this->params[5] = p6;
74 2 }
75
76 static void func0()
77 {
78 }
79
80 1 static void func1(int* pout)
81 {
82 1 *pout = 0;
83 1 }
84
85 1 static void func2(int* pout, int a)
86 {
87
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 Delegate1<int*> dele(&func1);
88
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 dele(pout);
89 1 *pout += a;
90 1 }
91
92 1 static void func3(int* pout, int a, int b)
93 {
94
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 Delegate2<int*, int> dele(&func2);
95
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 dele(pout, a);
96 1 *pout += b;
97 1 }
98
99 1 static void func4(int* pout, int a, int b, int c)
100 {
101
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 Delegate3<int*, int, int> dele(&func3);
102
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 dele(pout, a, b);
103 1 *pout += c;
104 1 }
105
106 1 static void func5(int* pout, int a, int b, int c, int d)
107 {
108
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 Delegate4<int*, int, int, int> dele(&func4);
109
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 dele(pout, a, b, c);
110 1 *pout += d;
111 1 }
112
113 1 static void func6(int* pout, int a, int b, int c, int d, int e)
114 {
115
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 Delegate5<int*, int, int, int, int> dele(&func5);
116
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 dele(pout, a, b, c, d);
117 1 *pout += e;
118 1 }
119
120 };
121
122
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(DelegateFunctions)
123 {
124 2 int out = -1;
125
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate6<int*, int, int, int, int, int> dele(&Target::func6);
126
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dele(&out, 1, 2, 3, 4, 5);
127
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(out, (1 + 2 + 3 + 4 + 5));
128 2 }
129
130
131
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(DelegateObjects)
132 {
133 {
134
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
135
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate0 d0(&t, &Target::member0);
136
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 d0();
137
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.member_id, 0);
138 }
139
140 {
141
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
142
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate1<int> d1(&t, &Target::member1);
143
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 d1(12);
144
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.member_id, 1);
145
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[0], 12);
146 }
147
148 {
149
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
150
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate2<int, int> d2(&t, &Target::member2);
151
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 d2(12, 34);
152
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.member_id, 2);
153
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[0], 12);
154
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[1], 34);
155 }
156
157 {
158
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
159
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate3<int, int, int> d3(&t, &Target::member3);
160
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 d3(12, 34, 56);
161
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.member_id, 3);
162
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[0], 12);
163
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[1], 34);
164
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[2], 56);
165 }
166
167 {
168
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
169
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate4<int, int, int, int> d4(&t, &Target::member4);
170
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 d4(12, 34, 56, 78);
171
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.member_id, 4);
172
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[0], 12);
173
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[1], 34);
174
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[2], 56);
175
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[3], 78);
176 }
177
178 {
179
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
180
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate5<int, int, int, int, int> d5(&t, &Target::member5);
181
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 d5(12, 34, 56, 78, 90);
182
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.member_id, 5);
183
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[0], 12);
184
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[1], 34);
185
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[2], 56);
186
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[3], 78);
187
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[4], 90);
188 }
189
190 {
191
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
192
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate6<int, int, int, int, int, int> d6(&t, &Target::member6);
193
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 d6(12, 34, 56, 78, 90, 123);
194
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.member_id, 6);
195
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[0], 12);
196
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[1], 34);
197
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[2], 56);
198
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[3], 78);
199
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[4], 90);
200
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(t.params[5], 123);
201 }
202
203 2 }
204
205
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(Delegate)
206 {
207
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
208
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate0 d0(&t, &Target::member0);
209
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate1<int> d1(&t, &Target::member1);
210 2 Delegate0 d0c = d0;
211
212
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate0 d0empty;
213
214
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(!d0empty);
215
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(!!d0);
216
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(!!d1);
217
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(d0 != d1);
218
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK(d0 == d0c);
219 2 }
220
221
222 3 static void func_param_types(real64_t* ptr, gate::uint8_t a, gate::int16_t b, gate::uint32_t c, gate::int64_t d, gate::real32_t const* e)
223 {
224 3 gate::real64_t r = 0.0;
225 3 r += gate::real64_t(a);
226 3 r += gate::real64_t(b);
227 3 r += gate::real64_t(c);
228 3 r += gate::real64_t(d);
229 3 r += gate::real64_t(*e);
230 3 *ptr = r;
231 3 }
232
233
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(DelegateTypes)
234 {
235
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate6<gate::real64_t*, gate::uint8_t, gate::int16_t, gate::uint32_t, gate::int64_t, real32_t const*> dele(&func_param_types);
236 2 real64_t val = -1.0;
237 2 real32_t const f = 50.0f;
238
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dele(&val, 12, -7, 100, -5, &f);
239 2 const real64_t expected = 0.0
240 + gate::real64_t(gate::uint8_t(12))
241 + gate::real64_t(gate::int16_t(-7))
242 + gate::real64_t(gate::uint32_t(100))
243 + gate::real64_t(gate::int64_t(-5))
244 + gate::real64_t(f)
245 ;
246
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(val, expected);
247 2 }
248
249 2 void throwing_func0() { throw 0; }
250 2 void throwing_func1(int) { GATEXX_RAISE_EXCEPTION(results::LogicalError, "Logical error", 1); }
251 2 void throwing_func2(int, int) { GATEXX_RAISE_EXCEPTION(results::LogicalError, "Logical error", 2); }
252 2 void throwing_func3(int, int, int) { GATEXX_RAISE_EXCEPTION(results::LogicalError, "Logical error", 3); }
253 2 void throwing_func4(int, int, int, int) { GATEXX_RAISE_EXCEPTION(results::LogicalError, "Logical error", 4); }
254 2 void throwing_func5(int, int, int, int, int) { GATEXX_RAISE_EXCEPTION(results::LogicalError, "Logical error", 5); }
255 2 void throwing_func6(int, int, int, int, int, int) { GATEXX_RAISE_EXCEPTION(results::LogicalError, "Logical error", 6); }
256
257
258
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(DelegateException)
259 {
260 {
261
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate0 dele(&throwing_func0);
262
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
2 GATEXX_TEST_CHECK(dele.tryInvoke().hasError());
263
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
4 GATEXX_TEST_CHECK_THROW(dele());
264 }
265 {
266
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate1<int> dele(&throwing_func1);
267
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
2 GATEXX_TEST_CHECK(dele.tryInvoke(1).hasError());
268
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
4 GATEXX_TEST_CHECK_THROW(dele(1));
269 }
270 {
271
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate2<int, int> dele(&throwing_func2);
272
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
2 GATEXX_TEST_CHECK(dele.tryInvoke(1, 2).hasError());
273
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
4 GATEXX_TEST_CHECK_THROW(dele(1, 2));
274 }
275 {
276
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate3<int, int, int> dele(&throwing_func3);
277
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
2 GATEXX_TEST_CHECK(dele.tryInvoke(1, 2, 3).hasError());
278
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
4 GATEXX_TEST_CHECK_THROW(dele(1, 2, 3));
279 }
280 {
281
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate4<int, int, int, int> dele(&throwing_func4);
282
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
2 GATEXX_TEST_CHECK(dele.tryInvoke(1, 2, 3, 4).hasError());
283
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
4 GATEXX_TEST_CHECK_THROW(dele(1, 2, 3, 4));
284 }
285 {
286
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate5<int, int, int, int, int> dele(&throwing_func5);
287
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
2 GATEXX_TEST_CHECK(dele.tryInvoke(1, 2, 3, 4, 5).hasError());
288
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
4 GATEXX_TEST_CHECK_THROW(dele(1, 2, 3, 4, 5));
289 }
290 {
291
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate6<int, int, int, int, int, int> dele(&throwing_func6);
292
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
2 GATEXX_TEST_CHECK(dele.tryInvoke(1, 2, 3, 4, 5, 6).hasError());
293
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
4 GATEXX_TEST_CHECK_THROW(dele(1, 2, 3, 4, 5, 6));
294 }
295 2 }
296
297
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(MulitcastDelegates)
298 {
299 {
300
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
301
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate0 dele(&t, &Target::member0);
302 4 MulticastDelegate0 md;
303
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md += dele;
304
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md();
305 }
306 {
307
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
308
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate1<int> dele(&t, &Target::member1);
309 4 MulticastDelegate1<int> md;
310
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md += dele;
311
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md(1);
312 }
313 {
314
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
315
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate2<int, int> dele(&t, &Target::member2);
316 4 MulticastDelegate2<int, int> md;
317
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md += dele;
318
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md(1, 2);
319 }
320 {
321
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
322
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate3<int, int, int> dele(&t, &Target::member3);
323 4 MulticastDelegate3<int, int, int> md;
324
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md += dele;
325
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md(1, 2, 3);
326 }
327 {
328
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
329
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate4<int, int, int, int> dele(&t, &Target::member4);
330 4 MulticastDelegate4<int, int, int, int> md;
331
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md += dele;
332
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md(1, 2, 3, 4);
333 }
334 {
335
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
336
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate5<int, int, int, int, int> dele(&t, &Target::member5);
337 4 MulticastDelegate5<int, int, int, int, int> md;
338
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md += dele;
339
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md(1, 2, 3, 4, 5);
340 }
341 {
342
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Target t;
343
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate6<int, int, int, int, int, int> dele(&t, &Target::member6);
344 4 MulticastDelegate6<int, int, int, int, int, int> md;
345
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md += dele;
346
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md(1, 2, 3, 4, 5, 6);
347 }
348 2 }
349
350
351
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(MulitcastDelegateTypes)
352 {
353
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Delegate6<gate::real64_t*, gate::uint8_t, gate::int16_t, gate::uint32_t, gate::int64_t, real32_t const*> dele(&func_param_types);
354 2 real64_t val = -1.0;
355 2 real32_t const f = 50.0f;
356
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dele(&val, 12, -7, 100, -5, &f);
357
358 4 MulticastDelegate6<gate::real64_t*, gate::uint8_t, gate::int16_t, gate::uint32_t, gate::int64_t, real32_t const*> md;
359
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md += dele;
360
361
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md(&val, 12, -7, 100, -5, &f);
362
363 2 const real64_t expected = 0.0
364 + gate::real64_t(gate::uint8_t(12))
365 + gate::real64_t(gate::int16_t(-7))
366 + gate::real64_t(gate::uint32_t(100))
367 + gate::real64_t(gate::int64_t(-5))
368 + gate::real64_t(f)
369 ;
370
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(val, expected);
371
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 md -= dele;
372 2 }
373