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

Side by Side Diff: components/cast_channel/cast_socket_service_unittest.cc

Issue 2925053005: [cast_channel] Implement CastSocketService::OpenSocket() (Closed)
Patch Set: rebase Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/cast_channel/cast_socket_service.h" 5 #include "components/cast_channel/cast_socket_service.h"
6 #include "base/test/mock_callback.h"
6 #include "components/cast_channel/cast_test_util.h" 7 #include "components/cast_channel/cast_test_util.h"
7 #include "content/public/test/test_browser_thread_bundle.h" 8 #include "content/public/test/test_browser_thread_bundle.h"
8 9
10 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
10 12
11 using testing::_; 13 using testing::_;
14 using testing::DoAll;
15 using testing::Invoke;
16 using testing::Return;
17 using testing::ReturnRef;
12 using testing::SaveArg; 18 using testing::SaveArg;
19 using testing::WithArgs;
13 20
14 namespace cast_channel { 21 namespace cast_channel {
15 22
16 class CastSocketServiceTest : public testing::Test { 23 class CastSocketServiceTest : public testing::Test {
17 public: 24 public:
18 CastSocketServiceTest() 25 CastSocketServiceTest()
19 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), 26 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
20 cast_socket_service_(new CastSocketService()) {} 27 cast_socket_service_(new CastSocketService()) {}
21 28
29 int AddSocket(std::unique_ptr<CastSocket> socket) {
30 return cast_socket_service_->AddSocket(std::move(socket));
31 }
32
33 void TearDown() override { cast_socket_service_ = nullptr; }
34
22 protected: 35 protected:
23 content::TestBrowserThreadBundle thread_bundle_; 36 content::TestBrowserThreadBundle thread_bundle_;
24 scoped_refptr<CastSocketService> cast_socket_service_; 37 scoped_refptr<CastSocketService> cast_socket_service_;
38 base::MockCallback<CastSocket::OnOpenCallback> mock_on_open_callback_;
39 MockCastSocketObserver mock_observer_;
25 }; 40 };
26 41
27 TEST_F(CastSocketServiceTest, TestAddSocket) { 42 TEST_F(CastSocketServiceTest, TestAddSocket) {
28 int channel_id_1 = 0;
29 auto socket1 = base::MakeUnique<MockCastSocket>(); 43 auto socket1 = base::MakeUnique<MockCastSocket>();
30 EXPECT_CALL(*socket1, set_id(_)).WillOnce(SaveArg<0>(&channel_id_1)); 44 int channel_id_1 = AddSocket(std::move(socket1));
31
32 int channel_id = cast_socket_service_->AddSocket(std::move(socket1));
33 EXPECT_EQ(channel_id_1, channel_id);
34 EXPECT_NE(0, channel_id_1); 45 EXPECT_NE(0, channel_id_1);
35 46
36 int channel_id_2 = 0;
37 auto socket2 = base::MakeUnique<MockCastSocket>(); 47 auto socket2 = base::MakeUnique<MockCastSocket>();
38 EXPECT_CALL(*socket2, set_id(_)).WillOnce(SaveArg<0>(&channel_id_2));
39
40 auto* socket_ptr = socket2.get(); 48 auto* socket_ptr = socket2.get();
41 channel_id = cast_socket_service_->AddSocket(std::move(socket2)); 49 int channel_id_2 = AddSocket(std::move(socket2));
42 EXPECT_EQ(channel_id_2, channel_id);
43 EXPECT_NE(channel_id_1, channel_id_2); 50 EXPECT_NE(channel_id_1, channel_id_2);
44 51
45 auto removed_socket = cast_socket_service_->RemoveSocket(channel_id); 52 auto removed_socket = cast_socket_service_->RemoveSocket(channel_id_2);
46 EXPECT_EQ(socket_ptr, removed_socket.get()); 53 EXPECT_EQ(socket_ptr, removed_socket.get());
47 54
48 int channel_id_3 = 0;
49 auto socket3 = base::MakeUnique<MockCastSocket>(); 55 auto socket3 = base::MakeUnique<MockCastSocket>();
50 EXPECT_CALL(*socket3, set_id(_)).WillOnce(SaveArg<0>(&channel_id_3)); 56 int channel_id_3 = AddSocket(std::move(socket3));
51
52 channel_id = cast_socket_service_->AddSocket(std::move(socket3));
53 EXPECT_EQ(channel_id_3, channel_id);
54 EXPECT_NE(channel_id_1, channel_id_3); 57 EXPECT_NE(channel_id_1, channel_id_3);
55 EXPECT_NE(channel_id_2, channel_id_3); 58 EXPECT_NE(channel_id_2, channel_id_3);
56 } 59 }
57 60
58 TEST_F(CastSocketServiceTest, TestRemoveAndGetSocket) { 61 TEST_F(CastSocketServiceTest, TestRemoveAndGetSocket) {
59 int channel_id = 1; 62 int channel_id = 1;
60 auto* socket_ptr = cast_socket_service_->GetSocket(channel_id); 63 auto* socket_ptr = cast_socket_service_->GetSocket(channel_id);
61 EXPECT_FALSE(socket_ptr); 64 EXPECT_FALSE(socket_ptr);
62 auto socket = cast_socket_service_->RemoveSocket(channel_id); 65 auto socket = cast_socket_service_->RemoveSocket(channel_id);
63 EXPECT_FALSE(socket); 66 EXPECT_FALSE(socket);
64 67
65 auto mock_socket = base::MakeUnique<MockCastSocket>(); 68 auto mock_socket = base::MakeUnique<MockCastSocket>();
66 EXPECT_CALL(*mock_socket, set_id(_));
67 69
68 auto* mock_socket_ptr = mock_socket.get(); 70 auto* mock_socket_ptr = mock_socket.get();
69 channel_id = cast_socket_service_->AddSocket(std::move(mock_socket)); 71 channel_id = AddSocket(std::move(mock_socket));
70 EXPECT_EQ(mock_socket_ptr, cast_socket_service_->GetSocket(channel_id)); 72 EXPECT_EQ(mock_socket_ptr, cast_socket_service_->GetSocket(channel_id));
73
71 socket = cast_socket_service_->RemoveSocket(channel_id); 74 socket = cast_socket_service_->RemoveSocket(channel_id);
72 EXPECT_TRUE(socket); 75 EXPECT_TRUE(socket);
73 } 76 }
74 77
78 TEST_F(CastSocketServiceTest, TestOpenChannel) {
79 auto* mock_socket = new MockCastSocket();
80 auto ip_endpoint = CreateIPEndPointForTest();
81 mock_socket->SetIPEndpoint(ip_endpoint);
82 cast_socket_service_->SetSocketForTest(base::WrapUnique(mock_socket));
83
84 EXPECT_CALL(*mock_socket, Connect(_))
85 .WillOnce(
86 WithArgs<0>(Invoke([&](const CastSocket::OnOpenCallback& callback) {
87 callback.Run(mock_socket->id(), ChannelError::NONE);
88 })));
89 EXPECT_CALL(mock_on_open_callback_, Run(_, ChannelError::NONE));
90 EXPECT_CALL(*mock_socket, AddObserver(_));
91
92 cast_socket_service_->OpenSocket(ip_endpoint, nullptr /* net_log */,
93 mock_on_open_callback_.Get(),
94 &mock_observer_);
95 }
96
75 } // namespace cast_channel 97 } // namespace cast_channel
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698