Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(958)

Unified Diff: media/cast/transport/transport/transport_unittest.cc

Issue 125713002: Implement UdpTransport for Cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/cast/transport/transport/transport_unittest.cc
diff --git a/media/cast/transport/transport/transport_unittest.cc b/media/cast/transport/transport/transport_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..dab050a50f21fbe01fabbb9605460a9e6860acb9
--- /dev/null
+++ b/media/cast/transport/transport/transport_unittest.cc
@@ -0,0 +1,91 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
mikhal1 2014/01/07 20:50:06 2014. Happy new year!
Alpha Left Google 2014/01/08 00:37:11 Done.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "media/cast/transport/transport/transport.h"
+
+#include <algorithm>
+#include <string>
+#include <vector>
+
+#include "base/bind.h"
+#include "base/callback.h"
+#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
+#include "media/cast/cast_config.h"
+#include "net/base/net_util.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace media {
+namespace cast {
+namespace transport {
+
+class MockPacketReceiver : public PacketReceiver {
+ public:
+ MockPacketReceiver(const base::Closure& callback)
+ : packet_callback_(callback) {
+ }
+
+ virtual void ReceivedPacket(const uint8* packet, size_t length,
+ const base::Closure callback) OVERRIDE {
+ packet_ = std::string(length, '\0');
+ std::copy(packet, packet + length, packet_.begin());
+ callback.Run();
+ packet_callback_.Run();
+ }
+
+ std::string packet() const { return packet_; }
+
+ private:
+ std::string packet_;
+ base::Closure packet_callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockPacketReceiver);
+};
+
+void SendPacket(UdpTransport* transport, Packet packet) {
+ transport->SendPacket(packet);
+}
+
+TEST(UdpTransport, SendAndReceive) {
+ base::MessageLoopForIO message_loop;
+
+ net::IPAddressNumber local_addr_number;
+ net::IPAddressNumber empty_addr_number;
+ net::ParseIPLiteralToNumber("127.0.0.1", &local_addr_number);
+ net::ParseIPLiteralToNumber("0.0.0.0", &empty_addr_number);
+
+ UdpTransport send_transport(message_loop.message_loop_proxy(),
+ net::IPEndPoint(local_addr_number, 2344),
+ net::IPEndPoint(local_addr_number, 2345));
+ UdpTransport recv_transport(message_loop.message_loop_proxy(),
+ net::IPEndPoint(local_addr_number, 2345),
+ net::IPEndPoint(empty_addr_number, 0));
+
+ Packet packet;
+ packet.push_back('t');
+ packet.push_back('e');
+ packet.push_back('s');
+ packet.push_back('t');
+
+ base::RunLoop run_loop;
+ scoped_refptr<MockPacketReceiver> receiver1 = new MockPacketReceiver(
+ run_loop.QuitClosure());
+ scoped_refptr<MockPacketReceiver> receiver2 = new MockPacketReceiver(
+ base::Bind(&SendPacket, &recv_transport, packet));
+ send_transport.StartReceiving(receiver1);
+ recv_transport.StartReceiving(receiver2);
+
+ send_transport.SendPacket(packet);
+ run_loop.Run();
+ EXPECT_TRUE(std::equal(packet.begin(),
+ packet.end(),
+ receiver1->packet().begin()));
+ EXPECT_TRUE(std::equal(packet.begin(),
+ packet.end(),
+ receiver2->packet().begin()));
+}
+
+} // namespace transport
+} // namespace cast
+} // namespace media
« media/cast/transport/transport/transport.cc ('K') | « media/cast/transport/transport/transport.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698