OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2011 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #include "webrtc/base/gunit.h" | 11 #include "webrtc/base/gunit.h" |
12 #include "webrtc/media/base/testutils.h" | 12 #include "webrtc/media/base/testutils.h" |
13 #include "webrtc/pc/rtcpmuxfilter.h" | 13 #include "webrtc/pc/rtcpmuxfilter.h" |
14 | 14 |
15 TEST(RtcpMuxFilterTest, DemuxRtcpSender) { | |
16 cricket::RtcpMuxFilter filter; | |
17 const char data[] = { 0, 73, 0, 0 }; | |
18 const int len = 4; | |
19 | |
20 // Init state - refuse to demux | |
21 EXPECT_FALSE(filter.DemuxRtcp(data, len)); | |
22 // After sent offer, demux should be enabled | |
23 filter.SetOffer(true, cricket::CS_LOCAL); | |
24 EXPECT_TRUE(filter.DemuxRtcp(data, len)); | |
25 // Remote accepted, demux should be enabled | |
26 filter.SetAnswer(true, cricket::CS_REMOTE); | |
27 EXPECT_TRUE(filter.DemuxRtcp(data, len)); | |
28 } | |
29 | |
30 TEST(RtcpMuxFilterTest, DemuxRtcpReceiver) { | |
31 cricket::RtcpMuxFilter filter; | |
32 const char data[] = { 0, 73, 0, 0 }; | |
33 const int len = 4; | |
34 | |
35 // Init state - refuse to demux | |
36 EXPECT_FALSE(filter.DemuxRtcp(data, len)); | |
37 // After received offer, demux should not be enabled | |
38 filter.SetOffer(true, cricket::CS_REMOTE); | |
39 EXPECT_FALSE(filter.DemuxRtcp(data, len)); | |
40 // We accept, demux is now enabled | |
41 filter.SetAnswer(true, cricket::CS_LOCAL); | |
42 EXPECT_TRUE(filter.DemuxRtcp(data, len)); | |
43 } | |
44 | |
45 TEST(RtcpMuxFilterTest, DemuxRtcpSenderProvisionalAnswer) { | |
46 cricket::RtcpMuxFilter filter; | |
47 const char data[] = { 0, 73, 0, 0 }; | |
48 const int len = 4; | |
49 | |
50 filter.SetOffer(true, cricket::CS_REMOTE); | |
51 // Received provisional answer without mux enabled. | |
52 filter.SetProvisionalAnswer(false, cricket::CS_LOCAL); | |
53 EXPECT_FALSE(filter.DemuxRtcp(data, len)); | |
54 // Received provisional answer with mux enabled. | |
55 filter.SetProvisionalAnswer(true, cricket::CS_LOCAL); | |
56 EXPECT_TRUE(filter.DemuxRtcp(data, len)); | |
57 // Remote accepted, demux should be enabled. | |
58 filter.SetAnswer(true, cricket::CS_LOCAL); | |
59 EXPECT_TRUE(filter.DemuxRtcp(data, len)); | |
60 } | |
61 | |
62 TEST(RtcpMuxFilterTest, DemuxRtcpReceiverProvisionalAnswer) { | |
63 cricket::RtcpMuxFilter filter; | |
64 const char data[] = { 0, 73, 0, 0 }; | |
65 const int len = 4; | |
66 | |
67 filter.SetOffer(true, cricket::CS_LOCAL); | |
68 // Received provisional answer without mux enabled. | |
69 filter.SetProvisionalAnswer(false, cricket::CS_REMOTE); | |
70 // After sent offer, demux should be enabled until we have received a | |
71 // final answer. | |
72 EXPECT_TRUE(filter.DemuxRtcp(data, len)); | |
73 // Received provisional answer with mux enabled. | |
74 filter.SetProvisionalAnswer(true, cricket::CS_REMOTE); | |
75 EXPECT_TRUE(filter.DemuxRtcp(data, len)); | |
76 // Remote accepted, demux should be enabled. | |
77 filter.SetAnswer(true, cricket::CS_REMOTE); | |
78 EXPECT_TRUE(filter.DemuxRtcp(data, len)); | |
79 } | |
80 | |
81 TEST(RtcpMuxFilterTest, IsActiveSender) { | 15 TEST(RtcpMuxFilterTest, IsActiveSender) { |
82 cricket::RtcpMuxFilter filter; | 16 cricket::RtcpMuxFilter filter; |
83 // Init state - not active | 17 // Init state - not active |
84 EXPECT_FALSE(filter.IsActive()); | 18 EXPECT_FALSE(filter.IsActive()); |
85 EXPECT_FALSE(filter.IsProvisionallyActive()); | 19 EXPECT_FALSE(filter.IsProvisionallyActive()); |
86 EXPECT_FALSE(filter.IsFullyActive()); | 20 EXPECT_FALSE(filter.IsFullyActive()); |
87 // After sent offer, demux should not be active. | 21 // After sent offer, demux should not be active. |
88 filter.SetOffer(true, cricket::CS_LOCAL); | 22 filter.SetOffer(true, cricket::CS_LOCAL); |
89 EXPECT_FALSE(filter.IsActive()); | 23 EXPECT_FALSE(filter.IsActive()); |
90 EXPECT_FALSE(filter.IsProvisionallyActive()); | 24 EXPECT_FALSE(filter.IsProvisionallyActive()); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 EXPECT_FALSE(filter.IsActive()); | 149 EXPECT_FALSE(filter.IsActive()); |
216 | 150 |
217 EXPECT_TRUE(filter.SetOffer(false, cricket::CS_REMOTE)); | 151 EXPECT_TRUE(filter.SetOffer(false, cricket::CS_REMOTE)); |
218 EXPECT_TRUE(filter.SetAnswer(false, cricket::CS_LOCAL)); | 152 EXPECT_TRUE(filter.SetAnswer(false, cricket::CS_LOCAL)); |
219 EXPECT_FALSE(filter.IsActive()); | 153 EXPECT_FALSE(filter.IsActive()); |
220 } | 154 } |
221 | 155 |
222 // Test that we can SetActive and then can't deactivate. | 156 // Test that we can SetActive and then can't deactivate. |
223 TEST(RtcpMuxFilterTest, SetActiveCantDeactivate) { | 157 TEST(RtcpMuxFilterTest, SetActiveCantDeactivate) { |
224 cricket::RtcpMuxFilter filter; | 158 cricket::RtcpMuxFilter filter; |
225 const char data[] = { 0, 73, 0, 0 }; | |
226 const int len = 4; | |
227 | 159 |
228 filter.SetActive(); | 160 filter.SetActive(); |
229 EXPECT_TRUE(filter.IsActive()); | 161 EXPECT_TRUE(filter.IsActive()); |
230 EXPECT_TRUE(filter.DemuxRtcp(data, len)); | |
231 | 162 |
232 EXPECT_FALSE(filter.SetOffer(false, cricket::CS_LOCAL)); | 163 EXPECT_FALSE(filter.SetOffer(false, cricket::CS_LOCAL)); |
233 EXPECT_TRUE(filter.IsActive()); | 164 EXPECT_TRUE(filter.IsActive()); |
234 EXPECT_TRUE(filter.SetOffer(true, cricket::CS_LOCAL)); | 165 EXPECT_TRUE(filter.SetOffer(true, cricket::CS_LOCAL)); |
235 EXPECT_TRUE(filter.IsActive()); | 166 EXPECT_TRUE(filter.IsActive()); |
236 | 167 |
237 EXPECT_FALSE(filter.SetProvisionalAnswer(false, cricket::CS_REMOTE)); | 168 EXPECT_FALSE(filter.SetProvisionalAnswer(false, cricket::CS_REMOTE)); |
238 EXPECT_TRUE(filter.IsActive()); | 169 EXPECT_TRUE(filter.IsActive()); |
239 EXPECT_TRUE(filter.SetProvisionalAnswer(true, cricket::CS_REMOTE)); | 170 EXPECT_TRUE(filter.SetProvisionalAnswer(true, cricket::CS_REMOTE)); |
240 EXPECT_TRUE(filter.IsActive()); | 171 EXPECT_TRUE(filter.IsActive()); |
(...skipping 11 matching lines...) Expand all Loading... |
252 EXPECT_FALSE(filter.SetProvisionalAnswer(false, cricket::CS_LOCAL)); | 183 EXPECT_FALSE(filter.SetProvisionalAnswer(false, cricket::CS_LOCAL)); |
253 EXPECT_TRUE(filter.IsActive()); | 184 EXPECT_TRUE(filter.IsActive()); |
254 EXPECT_TRUE(filter.SetProvisionalAnswer(true, cricket::CS_LOCAL)); | 185 EXPECT_TRUE(filter.SetProvisionalAnswer(true, cricket::CS_LOCAL)); |
255 EXPECT_TRUE(filter.IsActive()); | 186 EXPECT_TRUE(filter.IsActive()); |
256 | 187 |
257 EXPECT_FALSE(filter.SetAnswer(false, cricket::CS_LOCAL)); | 188 EXPECT_FALSE(filter.SetAnswer(false, cricket::CS_LOCAL)); |
258 EXPECT_TRUE(filter.IsActive()); | 189 EXPECT_TRUE(filter.IsActive()); |
259 EXPECT_TRUE(filter.SetAnswer(true, cricket::CS_LOCAL)); | 190 EXPECT_TRUE(filter.SetAnswer(true, cricket::CS_LOCAL)); |
260 EXPECT_TRUE(filter.IsActive()); | 191 EXPECT_TRUE(filter.IsActive()); |
261 } | 192 } |
OLD | NEW |