1f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org/*
2f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  Copyright 2009 The WebRTC Project Authors. All rights reserved.
3f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *
4f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  Use of this source code is governed by a BSD-style license
5f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  that can be found in the LICENSE file in the root of the source
6f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  tree. An additional intellectual property rights grant can be found
7f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  in the file PATENTS.  All contributing project authors may
8f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org */
10f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/gunit.h"
11f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/socket_unittest.h"
12f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/thread.h"
13f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/win32socketserver.h"
14f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
15f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgnamespace rtc {
16f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
17f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Test that Win32SocketServer::Wait works as expected.
18f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(Win32SocketServerTest, TestWait) {
19f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  Win32SocketServer server(NULL);
200c4e06b4c6107a1b94f764e279e4fb4161e905b0Peter Boström  uint32_t start = Time();
21f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  server.Wait(1000, true);
22f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  EXPECT_GE(TimeSince(start), 1000);
23f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
24f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
25f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Test that Win32Socket::Pump does not touch general Windows messages.
26f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(Win32SocketServerTest, TestPump) {
27f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  Win32SocketServer server(NULL);
28f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketServerScope scope(&server);
29f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  EXPECT_EQ(TRUE, PostMessage(NULL, WM_USER, 999, 0));
30f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  server.Pump();
31f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  MSG msg;
32f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  EXPECT_EQ(TRUE, PeekMessage(&msg, NULL, WM_USER, 0, PM_REMOVE));
33f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  EXPECT_EQ(WM_USER, msg.message);
34f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  EXPECT_EQ(999, msg.wParam);
35f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
36f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
37f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Test that Win32Socket passes all the generic Socket tests.
38f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass Win32SocketTest : public SocketTest {
39f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org protected:
40f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  Win32SocketTest() : server_(NULL), scope_(&server_) {}
41f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  Win32SocketServer server_;
42f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketServerScope scope_;
43f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org};
44f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
45f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectIPv4) {
46f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectIPv4();
47f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
48f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
49f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectIPv6) {
50f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectIPv6();
51f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
52f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
53f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithDnsLookupIPv4) {
54f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectWithDnsLookupIPv4();
55f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
56f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
57f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithDnsLookupIPv6) {
58f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectWithDnsLookupIPv6();
59f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
60f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
61f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectFailIPv4) {
62f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectFailIPv4();
63f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
64f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
65f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectFailIPv6) {
66f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectFailIPv6();
67f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
68f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
69f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithDnsLookupFailIPv4) {
70f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectWithDnsLookupFailIPv4();
71f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
72f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
73f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithDnsLookupFailIPv6) {
74f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectWithDnsLookupFailIPv6();
75f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
76f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
77f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithClosedSocketIPv4) {
78f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectWithClosedSocketIPv4();
79f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
80f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
81f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithClosedSocketIPv6) {
82f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectWithClosedSocketIPv6();
83f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
84f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
85f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWhileNotClosedIPv4) {
86f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectWhileNotClosedIPv4();
87f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
88f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
89f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWhileNotClosedIPv6) {
90f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestConnectWhileNotClosedIPv6();
91f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
92f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
93f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestServerCloseDuringConnectIPv4) {
94f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestServerCloseDuringConnectIPv4();
95f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
96f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
97f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestServerCloseDuringConnectIPv6) {
98f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestServerCloseDuringConnectIPv6();
99f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
100f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
101f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestClientCloseDuringConnectIPv4) {
102f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestClientCloseDuringConnectIPv4();
103f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
104f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
105f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestClientCloseDuringConnectIPv6) {
106f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestClientCloseDuringConnectIPv6();
107f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
108f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
109f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestServerCloseIPv4) {
110f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestServerCloseIPv4();
111f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
112f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
113f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestServerCloseIPv6) {
114f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestServerCloseIPv6();
115f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
116f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
117f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestCloseInClosedCallbackIPv4) {
118f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestCloseInClosedCallbackIPv4();
119f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
120f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
121f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestCloseInClosedCallbackIPv6) {
122f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestCloseInClosedCallbackIPv6();
123f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
124f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
125f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestSocketServerWaitIPv4) {
126f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestSocketServerWaitIPv4();
127f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
128f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
129f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestSocketServerWaitIPv6) {
130f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestSocketServerWaitIPv6();
131f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
132f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
133f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestTcpIPv4) {
134f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestTcpIPv4();
135f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
136f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
137f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestTcpIPv6) {
138f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestTcpIPv6();
139f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
140f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
141f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestUdpIPv4) {
142f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestUdpIPv4();
143f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
144f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
145f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestUdpIPv6) {
146f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestUdpIPv6();
147f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
148f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
149f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestGetSetOptionsIPv4) {
150f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestGetSetOptionsIPv4();
151f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
152f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
153f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestGetSetOptionsIPv6) {
154f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org  SocketTest::TestGetSetOptionsIPv6();
155f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}
156f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org
157f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}  // namespace rtc
158