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 "rtc_base/async_udp_socket.h"
12 
13 #include <memory>
14 #include <string>
15 
16 #include "rtc_base/gunit.h"
17 #include "rtc_base/physical_socket_server.h"
18 #include "rtc_base/virtual_socket_server.h"
19 
20 namespace rtc {
21 
22 class AsyncUdpSocketTest : public ::testing::Test, public sigslot::has_slots<> {
23  public:
AsyncUdpSocketTest()24   AsyncUdpSocketTest()
25       : pss_(new rtc::PhysicalSocketServer),
26         vss_(new rtc::VirtualSocketServer(pss_.get())),
27         socket_(vss_->CreateAsyncSocket(SOCK_DGRAM)),
28         udp_socket_(new AsyncUDPSocket(socket_)),
29         ready_to_send_(false) {
30     udp_socket_->SignalReadyToSend.connect(this,
31                                            &AsyncUdpSocketTest::OnReadyToSend);
32   }
33 
OnReadyToSend(rtc::AsyncPacketSocket * socket)34   void OnReadyToSend(rtc::AsyncPacketSocket* socket) { ready_to_send_ = true; }
35 
36  protected:
37   std::unique_ptr<PhysicalSocketServer> pss_;
38   std::unique_ptr<VirtualSocketServer> vss_;
39   AsyncSocket* socket_;
40   std::unique_ptr<AsyncUDPSocket> udp_socket_;
41   bool ready_to_send_;
42 };
43 
TEST_F(AsyncUdpSocketTest,OnWriteEvent)44 TEST_F(AsyncUdpSocketTest, OnWriteEvent) {
45   EXPECT_FALSE(ready_to_send_);
46   socket_->SignalWriteEvent(socket_);
47   EXPECT_TRUE(ready_to_send_);
48 }
49 
50 }  // namespace rtc
51