OLD | NEW |
1 // This file was GENERATED by command: | 1 // This file was GENERATED by command: |
2 // pump.py sigslottester.h.pump | 2 // pump.py sigslottester.h.pump |
3 // DO NOT EDIT BY HAND!!! | 3 // DO NOT EDIT BY HAND!!! |
4 | 4 |
5 /* | 5 /* |
6 * Copyright 2014 The WebRTC Project Authors. All rights reserved. | 6 * Copyright 2014 The WebRTC Project Authors. All rights reserved. |
7 * | 7 * |
8 * Use of this source code is governed by a BSD-style license | 8 * Use of this source code is governed by a BSD-style license |
9 * that can be found in the LICENSE file in the root of the source | 9 * that can be found in the LICENSE file in the root of the source |
10 * tree. An additional intellectual property rights grant can be found | 10 * tree. An additional intellectual property rights grant can be found |
11 * in the file PATENTS. All contributing project authors may | 11 * in the file PATENTS. All contributing project authors may |
12 * be found in the AUTHORS file in the root of the source tree. | 12 * be found in the AUTHORS file in the root of the source tree. |
13 */ | 13 */ |
14 | 14 |
15 #ifndef WEBRTC_BASE_SIGSLOTTESTER_H_ | 15 #ifndef WEBRTC_BASE_SIGSLOTTESTER_H_ |
16 #define WEBRTC_BASE_SIGSLOTTESTER_H_ | 16 #define WEBRTC_BASE_SIGSLOTTESTER_H_ |
17 | 17 |
18 // To generate sigslottester.h from sigslottester.h.pump, execute: | |
19 // /home/build/google3/third_party/gtest/scripts/pump.py sigslottester.h.pump | |
20 | 18 |
21 | 19 // This header is deprecated and is just left here temporarily during |
22 // SigslotTester(s) are utility classes to check if signals owned by an | 20 // refactoring. See https://bugs.webrtc.org/7634 for more details. |
23 // object are being invoked at the right time and with the right arguments. | 21 #include "webrtc/rtc_base/sigslottester.h" |
24 // They are meant to be used in tests. Tests must provide "capture" pointers | |
25 // (i.e. address of variables) where the arguments from the signal callback | |
26 // can be stored. | |
27 // | |
28 // Example: | |
29 // /* Some signal */ | |
30 // sigslot::signal1<const std::string&> foo; | |
31 // | |
32 // /* We want to monitor foo in some test. Note how signal argument is | |
33 // const std::string&, but capture-type is std::string. Capture type | |
34 // must be type that can be assigned to. */ | |
35 // std::string capture; | |
36 // SigslotTester1<const std::string&, std::string> slot(&foo, &capture); | |
37 // foo.emit("hello"); | |
38 // EXPECT_EQ(1, slot.callback_count()); | |
39 // EXPECT_EQ("hello", capture); | |
40 // /* See unit-tests for more examples */ | |
41 | |
42 #include "webrtc/base/constructormagic.h" | |
43 #include "webrtc/base/sigslot.h" | |
44 | |
45 namespace rtc { | |
46 | |
47 // Base version for testing signals that passes no arguments. | |
48 class SigslotTester0 : public sigslot::has_slots<> { | |
49 public: | |
50 explicit SigslotTester0(sigslot::signal0<>* signal) : callback_count_(0) { | |
51 signal->connect(this, &SigslotTester0::OnSignalCallback); | |
52 } | |
53 | |
54 int callback_count() const { return callback_count_; } | |
55 | |
56 private: | |
57 void OnSignalCallback() { callback_count_++; } | |
58 int callback_count_; | |
59 | |
60 RTC_DISALLOW_COPY_AND_ASSIGN(SigslotTester0); | |
61 }; | |
62 | |
63 // Versions below are for testing signals that pass arguments. For all the | |
64 // templates below: | |
65 // - A1-A5 is the type of the argument i in the callback. Signals may and often | |
66 // do use const-references here for efficiency. | |
67 // - C1-C5 is the type of the variable to capture argument i. These should be | |
68 // non-const value types suitable for use as lvalues. | |
69 | |
70 template <class A1, class C1> | |
71 class SigslotTester1 : public sigslot::has_slots<> { | |
72 public: | |
73 SigslotTester1(sigslot::signal1<A1>* signal, | |
74 C1* capture1) | |
75 : callback_count_(0), | |
76 capture1_(capture1) { | |
77 signal->connect(this, &SigslotTester1::OnSignalCallback); | |
78 } | |
79 | |
80 int callback_count() const { return callback_count_; } | |
81 | |
82 private: | |
83 void OnSignalCallback(A1 arg1) { | |
84 callback_count_++; | |
85 *capture1_ = arg1; | |
86 } | |
87 | |
88 int callback_count_; | |
89 C1* capture1_; | |
90 | |
91 RTC_DISALLOW_COPY_AND_ASSIGN(SigslotTester1); | |
92 }; | |
93 | |
94 template <class A1, class A2, class C1, class C2> | |
95 class SigslotTester2 : public sigslot::has_slots<> { | |
96 public: | |
97 SigslotTester2(sigslot::signal2<A1, A2>* signal, | |
98 C1* capture1, C2* capture2) | |
99 : callback_count_(0), | |
100 capture1_(capture1), capture2_(capture2) { | |
101 signal->connect(this, &SigslotTester2::OnSignalCallback); | |
102 } | |
103 | |
104 int callback_count() const { return callback_count_; } | |
105 | |
106 private: | |
107 void OnSignalCallback(A1 arg1, A2 arg2) { | |
108 callback_count_++; | |
109 *capture1_ = arg1; | |
110 *capture2_ = arg2; | |
111 } | |
112 | |
113 int callback_count_; | |
114 C1* capture1_; | |
115 C2* capture2_; | |
116 | |
117 RTC_DISALLOW_COPY_AND_ASSIGN(SigslotTester2); | |
118 }; | |
119 | |
120 template <class A1, class A2, class A3, class C1, class C2, class C3> | |
121 class SigslotTester3 : public sigslot::has_slots<> { | |
122 public: | |
123 SigslotTester3(sigslot::signal3<A1, A2, A3>* signal, | |
124 C1* capture1, C2* capture2, C3* capture3) | |
125 : callback_count_(0), | |
126 capture1_(capture1), capture2_(capture2), capture3_(capture3) { | |
127 signal->connect(this, &SigslotTester3::OnSignalCallback); | |
128 } | |
129 | |
130 int callback_count() const { return callback_count_; } | |
131 | |
132 private: | |
133 void OnSignalCallback(A1 arg1, A2 arg2, A3 arg3) { | |
134 callback_count_++; | |
135 *capture1_ = arg1; | |
136 *capture2_ = arg2; | |
137 *capture3_ = arg3; | |
138 } | |
139 | |
140 int callback_count_; | |
141 C1* capture1_; | |
142 C2* capture2_; | |
143 C3* capture3_; | |
144 | |
145 RTC_DISALLOW_COPY_AND_ASSIGN(SigslotTester3); | |
146 }; | |
147 | |
148 template <class A1, class A2, class A3, class A4, class C1, class C2, class C3, | |
149 class C4> | |
150 class SigslotTester4 : public sigslot::has_slots<> { | |
151 public: | |
152 SigslotTester4(sigslot::signal4<A1, A2, A3, A4>* signal, | |
153 C1* capture1, C2* capture2, C3* capture3, C4* capture4) | |
154 : callback_count_(0), | |
155 capture1_(capture1), capture2_(capture2), capture3_(capture3), | |
156 capture4_(capture4) { | |
157 signal->connect(this, &SigslotTester4::OnSignalCallback); | |
158 } | |
159 | |
160 int callback_count() const { return callback_count_; } | |
161 | |
162 private: | |
163 void OnSignalCallback(A1 arg1, A2 arg2, A3 arg3, A4 arg4) { | |
164 callback_count_++; | |
165 *capture1_ = arg1; | |
166 *capture2_ = arg2; | |
167 *capture3_ = arg3; | |
168 *capture4_ = arg4; | |
169 } | |
170 | |
171 int callback_count_; | |
172 C1* capture1_; | |
173 C2* capture2_; | |
174 C3* capture3_; | |
175 C4* capture4_; | |
176 | |
177 RTC_DISALLOW_COPY_AND_ASSIGN(SigslotTester4); | |
178 }; | |
179 | |
180 template <class A1, class A2, class A3, class A4, class A5, class C1, class C2, | |
181 class C3, class C4, class C5> | |
182 class SigslotTester5 : public sigslot::has_slots<> { | |
183 public: | |
184 SigslotTester5(sigslot::signal5<A1, A2, A3, A4, A5>* signal, | |
185 C1* capture1, C2* capture2, C3* capture3, C4* capture4, | |
186 C5* capture5) | |
187 : callback_count_(0), | |
188 capture1_(capture1), capture2_(capture2), capture3_(capture3), | |
189 capture4_(capture4), capture5_(capture5) { | |
190 signal->connect(this, &SigslotTester5::OnSignalCallback); | |
191 } | |
192 | |
193 int callback_count() const { return callback_count_; } | |
194 | |
195 private: | |
196 void OnSignalCallback(A1 arg1, A2 arg2, A3 arg3, A4 arg4, A5 arg5) { | |
197 callback_count_++; | |
198 *capture1_ = arg1; | |
199 *capture2_ = arg2; | |
200 *capture3_ = arg3; | |
201 *capture4_ = arg4; | |
202 *capture5_ = arg5; | |
203 } | |
204 | |
205 int callback_count_; | |
206 C1* capture1_; | |
207 C2* capture2_; | |
208 C3* capture3_; | |
209 C4* capture4_; | |
210 C5* capture5_; | |
211 | |
212 RTC_DISALLOW_COPY_AND_ASSIGN(SigslotTester5); | |
213 }; | |
214 } // namespace rtc | |
215 | 22 |
216 #endif // WEBRTC_BASE_SIGSLOTTESTER_H_ | 23 #endif // WEBRTC_BASE_SIGSLOTTESTER_H_ |
OLD | NEW |