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

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

Issue 125713002: Implement UdpTransport for Cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merged 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
« no previous file with comments | « media/cast/transport/transport/udp_transport.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/cast/transport/transport/udp_transport_unittest.cc
diff --git a/media/cast/transport/transport/udp_transport_unittest.cc b/media/cast/transport/transport/udp_transport_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..565dd7f11e42b5f7bb461659f1c92554ca4401bc
--- /dev/null
+++ b/media/cast/transport/transport/udp_transport_unittest.cc
@@ -0,0 +1,94 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// 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/udp_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:
+ friend class base::RefCountedThreadSafe<PacketReceiver>;
+ virtual ~MockPacketReceiver() {}
+
+ 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
« no previous file with comments | « media/cast/transport/transport/udp_transport.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698