xref: /aosp_15_r20/external/webrtc/rtc_base/sigslot_tester_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright 2014 The WebRTC Project Authors. All rights reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #include "rtc_base/sigslot_tester.h"
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #include <string>
14*d9f75844SAndroid Build Coastguard Worker 
15*d9f75844SAndroid Build Coastguard Worker #include "rtc_base/third_party/sigslot/sigslot.h"
16*d9f75844SAndroid Build Coastguard Worker #include "test/gtest.h"
17*d9f75844SAndroid Build Coastguard Worker 
18*d9f75844SAndroid Build Coastguard Worker namespace rtc {
19*d9f75844SAndroid Build Coastguard Worker 
TEST(SigslotTester,TestSignal1Arg)20*d9f75844SAndroid Build Coastguard Worker TEST(SigslotTester, TestSignal1Arg) {
21*d9f75844SAndroid Build Coastguard Worker   sigslot::signal1<int> source1;
22*d9f75844SAndroid Build Coastguard Worker   int capture1;
23*d9f75844SAndroid Build Coastguard Worker   SigslotTester1<int, int> slot1(&source1, &capture1);
24*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(0, slot1.callback_count());
25*d9f75844SAndroid Build Coastguard Worker 
26*d9f75844SAndroid Build Coastguard Worker   source1.emit(10);
27*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1, slot1.callback_count());
28*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(10, capture1);
29*d9f75844SAndroid Build Coastguard Worker 
30*d9f75844SAndroid Build Coastguard Worker   source1.emit(20);
31*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(2, slot1.callback_count());
32*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(20, capture1);
33*d9f75844SAndroid Build Coastguard Worker }
34*d9f75844SAndroid Build Coastguard Worker 
TEST(SigslotTester,TestSignal2Args)35*d9f75844SAndroid Build Coastguard Worker TEST(SigslotTester, TestSignal2Args) {
36*d9f75844SAndroid Build Coastguard Worker   sigslot::signal2<int, char> source2;
37*d9f75844SAndroid Build Coastguard Worker   int capture1;
38*d9f75844SAndroid Build Coastguard Worker   char capture2;
39*d9f75844SAndroid Build Coastguard Worker   SigslotTester2<int, char, int, char> slot2(&source2, &capture1, &capture2);
40*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(0, slot2.callback_count());
41*d9f75844SAndroid Build Coastguard Worker 
42*d9f75844SAndroid Build Coastguard Worker   source2.emit(10, 'x');
43*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1, slot2.callback_count());
44*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(10, capture1);
45*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ('x', capture2);
46*d9f75844SAndroid Build Coastguard Worker 
47*d9f75844SAndroid Build Coastguard Worker   source2.emit(20, 'y');
48*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(2, slot2.callback_count());
49*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(20, capture1);
50*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ('y', capture2);
51*d9f75844SAndroid Build Coastguard Worker }
52*d9f75844SAndroid Build Coastguard Worker 
53*d9f75844SAndroid Build Coastguard Worker // Since it applies for 1 and 2 args, we assume it will work for up to 5 args.
54*d9f75844SAndroid Build Coastguard Worker 
TEST(SigslotTester,TestSignalWithConstReferenceArgs)55*d9f75844SAndroid Build Coastguard Worker TEST(SigslotTester, TestSignalWithConstReferenceArgs) {
56*d9f75844SAndroid Build Coastguard Worker   sigslot::signal1<const std::string&> source1;
57*d9f75844SAndroid Build Coastguard Worker   std::string capture1;
58*d9f75844SAndroid Build Coastguard Worker   SigslotTester1<const std::string&, std::string> slot1(&source1, &capture1);
59*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(0, slot1.callback_count());
60*d9f75844SAndroid Build Coastguard Worker   source1.emit("hello");
61*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1, slot1.callback_count());
62*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("hello", capture1);
63*d9f75844SAndroid Build Coastguard Worker }
64*d9f75844SAndroid Build Coastguard Worker 
TEST(SigslotTester,TestSignalWithPointerToConstArgs)65*d9f75844SAndroid Build Coastguard Worker TEST(SigslotTester, TestSignalWithPointerToConstArgs) {
66*d9f75844SAndroid Build Coastguard Worker   sigslot::signal1<const std::string*> source1;
67*d9f75844SAndroid Build Coastguard Worker   const std::string* capture1;
68*d9f75844SAndroid Build Coastguard Worker   SigslotTester1<const std::string*, const std::string*> slot1(&source1,
69*d9f75844SAndroid Build Coastguard Worker                                                                &capture1);
70*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(0, slot1.callback_count());
71*d9f75844SAndroid Build Coastguard Worker   source1.emit(nullptr);
72*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1, slot1.callback_count());
73*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, capture1);
74*d9f75844SAndroid Build Coastguard Worker }
75*d9f75844SAndroid Build Coastguard Worker 
TEST(SigslotTester,TestSignalWithConstPointerArgs)76*d9f75844SAndroid Build Coastguard Worker TEST(SigslotTester, TestSignalWithConstPointerArgs) {
77*d9f75844SAndroid Build Coastguard Worker   sigslot::signal1<std::string* const> source1;
78*d9f75844SAndroid Build Coastguard Worker   std::string* capture1;
79*d9f75844SAndroid Build Coastguard Worker   SigslotTester1<std::string* const, std::string*> slot1(&source1, &capture1);
80*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(0, slot1.callback_count());
81*d9f75844SAndroid Build Coastguard Worker   source1.emit(nullptr);
82*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(1, slot1.callback_count());
83*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ(nullptr, capture1);
84*d9f75844SAndroid Build Coastguard Worker }
85*d9f75844SAndroid Build Coastguard Worker 
86*d9f75844SAndroid Build Coastguard Worker }  // namespace rtc
87