1 /*
2  *  Copyright 2004 The WebRTC Project Authors. All rights reserved.
3  *
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
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include <memory>
12 #include <string>
13 
14 #include "webrtc/base/asynctcpsocket.h"
15 #include "webrtc/base/gunit.h"
16 #include "webrtc/base/physicalsocketserver.h"
17 #include "webrtc/base/virtualsocketserver.h"
18 
19 namespace rtc {
20 
21 class AsyncTCPSocketTest
22     : public testing::Test,
23       public sigslot::has_slots<> {
24  public:
AsyncTCPSocketTest()25   AsyncTCPSocketTest()
26       : pss_(new rtc::PhysicalSocketServer),
27         vss_(new rtc::VirtualSocketServer(pss_.get())),
28         socket_(vss_->CreateAsyncSocket(SOCK_STREAM)),
29         tcp_socket_(new AsyncTCPSocket(socket_, true)),
30         ready_to_send_(false) {
31     tcp_socket_->SignalReadyToSend.connect(this,
32                                            &AsyncTCPSocketTest::OnReadyToSend);
33   }
34 
OnReadyToSend(rtc::AsyncPacketSocket * socket)35   void OnReadyToSend(rtc::AsyncPacketSocket* socket) {
36     ready_to_send_ = true;
37   }
38 
39  protected:
40   std::unique_ptr<PhysicalSocketServer> pss_;
41   std::unique_ptr<VirtualSocketServer> vss_;
42   AsyncSocket* socket_;
43   std::unique_ptr<AsyncTCPSocket> tcp_socket_;
44   bool ready_to_send_;
45 };
46 
TEST_F(AsyncTCPSocketTest,OnWriteEvent)47 TEST_F(AsyncTCPSocketTest, OnWriteEvent) {
48   EXPECT_FALSE(ready_to_send_);
49   socket_->SignalWriteEvent(socket_);
50   EXPECT_TRUE(ready_to_send_);
51 }
52 
53 }  // namespace rtc
54