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