Chromium Code Reviews| Index: talk/media/webrtc/webrtcvoiceengine_unittest.cc |
| diff --git a/talk/media/webrtc/webrtcvoiceengine_unittest.cc b/talk/media/webrtc/webrtcvoiceengine_unittest.cc |
| index b123a8430b154e527134bce5af31ad70b7f81f3c..88576b9bbffb85590387eca047ef63e02d458c8f 100644 |
| --- a/talk/media/webrtc/webrtcvoiceengine_unittest.cc |
| +++ b/talk/media/webrtc/webrtcvoiceengine_unittest.cc |
| @@ -2424,16 +2424,15 @@ TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcAfterCreatingReceiveChannel) { |
| // Test that we can properly receive packets. |
| TEST_F(WebRtcVoiceEngineTestFake, Recv) { |
| EXPECT_TRUE(SetupEngine()); |
| + EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); |
| DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); |
| int channel_num = voe_.GetLastChannel(); |
| - EXPECT_TRUE(voe_.CheckPacket(channel_num, kPcmuFrame, |
| - sizeof(kPcmuFrame))); |
| + EXPECT_TRUE(voe_.CheckPacket(channel_num, kPcmuFrame, sizeof(kPcmuFrame))); |
| } |
| // Test that we can properly receive packets on multiple streams. |
| TEST_F(WebRtcVoiceEngineTestFake, RecvWithMultipleStreams) { |
| - EXPECT_TRUE(SetupEngineWithSendStream()); |
| - EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
| + EXPECT_TRUE(SetupEngine()); |
| EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); |
| int channel_num1 = voe_.GetLastChannel(); |
| EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); |
| @@ -2449,30 +2448,90 @@ TEST_F(WebRtcVoiceEngineTestFake, RecvWithMultipleStreams) { |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); |
| + |
| DeliverPacket(packets[0], sizeof(packets[0])); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); |
| + |
| DeliverPacket(packets[1], sizeof(packets[1])); |
| - EXPECT_TRUE(voe_.CheckPacket(channel_num1, packets[1], |
| - sizeof(packets[1]))); |
| + EXPECT_TRUE(voe_.CheckPacket(channel_num1, packets[1], sizeof(packets[1]))); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); |
| + |
| DeliverPacket(packets[2], sizeof(packets[2])); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); |
| - EXPECT_TRUE(voe_.CheckPacket(channel_num2, packets[2], |
| - sizeof(packets[2]))); |
| + EXPECT_TRUE(voe_.CheckPacket(channel_num2, packets[2], sizeof(packets[2]))); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num3)); |
| + |
| DeliverPacket(packets[3], sizeof(packets[3])); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num1)); |
| EXPECT_TRUE(voe_.CheckNoPacket(channel_num2)); |
| - EXPECT_TRUE(voe_.CheckPacket(channel_num3, packets[3], |
| - sizeof(packets[3]))); |
| + EXPECT_TRUE(voe_.CheckPacket(channel_num3, packets[3], sizeof(packets[3]))); |
| + |
| EXPECT_TRUE(channel_->RemoveRecvStream(3)); |
| EXPECT_TRUE(channel_->RemoveRecvStream(2)); |
| EXPECT_TRUE(channel_->RemoveRecvStream(1)); |
| } |
| +// Test that receiving on an unsignalled stream works (default channel will be |
| +// created). |
| +TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalled) { |
| + EXPECT_TRUE(SetupEngine()); |
| + DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); |
| + int channel_num = voe_.GetLastChannel(); |
| + EXPECT_TRUE(voe_.CheckPacket(channel_num, kPcmuFrame, sizeof(kPcmuFrame))); |
| +} |
| + |
| +// Test that receiving on an unsignalled stream works (default channel will be |
| +// created), and that packets will be forwarded to the default channel |
| +// regardless of their SSRCs. |
| +TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledWithSsrcSwitch) { |
| + EXPECT_TRUE(SetupEngine()); |
| + char packet[sizeof(kPcmuFrame)]; |
| + memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); |
| + |
| + // Note that the first unknown SSRC cannot 0, because we only support creating |
|
pthatcher1
2015/11/19 17:16:58
cannot 0 => cannot be 0
the sun
2015/11/19 20:33:22
Done, and below.
|
| + // receive streams for SSRC!=0. |
| + DeliverPacket(packet, sizeof(packet)); |
| + int channel_num = voe_.GetLastChannel(); |
| + EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); |
| + // Once we have the default channel, SSRC==0 will be ok. |
| + for (uint32_t ssrc = 0; ssrc < 10; ++ssrc) { |
| + rtc::SetBE32(&packet[8], ssrc); |
| + DeliverPacket(packet, sizeof(packet)); |
| + EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); |
| + } |
| +} |
| + |
| +// Test that a default channel is created even after a signalled stream has been |
| +// added, and that this stream will get any packets for unknown SSRCs. |
| +TEST_F(WebRtcVoiceEngineTestFake, RecvUnsignalledAfterSignalled) { |
| + EXPECT_TRUE(SetupEngine()); |
| + char packet[sizeof(kPcmuFrame)]; |
| + memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame)); |
| + |
| + // Add a known stream, send packet and verify we got it. |
| + EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); |
| + int signalled_channel_num = voe_.GetLastChannel(); |
| + DeliverPacket(packet, sizeof(packet)); |
| + EXPECT_TRUE(voe_.CheckPacket(signalled_channel_num, packet, sizeof(packet))); |
| + |
| + // Note that the first unknown SSRC cannot 0, because we only support creating |
| + // receive streams for SSRC!=0. |
| + rtc::SetBE32(&packet[8], 7011); |
| + DeliverPacket(packet, sizeof(packet)); |
| + int channel_num = voe_.GetLastChannel(); |
| + EXPECT_NE(channel_num, signalled_channel_num); |
| + EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); |
| + // Once we have the default channel, SSRC==0 will be ok. |
| + for (uint32_t ssrc = 0; ssrc < 20; ssrc += 2) { |
| + rtc::SetBE32(&packet[8], ssrc); |
| + DeliverPacket(packet, sizeof(packet)); |
| + EXPECT_TRUE(voe_.CheckPacket(channel_num, packet, sizeof(packet))); |
| + } |
| +} |
| + |
| // Test that we properly handle failures to add a receive stream. |
| TEST_F(WebRtcVoiceEngineTestFake, AddRecvStreamFail) { |
| EXPECT_TRUE(SetupEngine()); |