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