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

Side by Side Diff: ppapi/tests/test_net_address_private.cc

Issue 8590006: Pepper: Implement PPB_NetAddress_Private Describe() for IPv6 addresses on Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ppapi/tests/test_net_address_private.h" 5 #include "ppapi/tests/test_net_address_private.h"
6 6
7 #include "ppapi/cpp/private/net_address_private.h" 7 #include "ppapi/cpp/private/net_address_private.h"
8 #include "ppapi/c/private/ppb_net_address_private.h" 8 #include "ppapi/c/private/ppb_net_address_private.h"
9 #include "ppapi/tests/testing_instance.h" 9 #include "ppapi/tests/testing_instance.h"
10 10
(...skipping 16 matching lines...) Expand all
27 #include <arpa/inet.h> 27 #include <arpa/inet.h>
28 #include <netdb.h> 28 #include <netdb.h>
29 #include <netinet/in.h> 29 #include <netinet/in.h>
30 #include <sys/socket.h> 30 #include <sys/socket.h>
31 #endif 31 #endif
32 32
33 using pp::NetAddressPrivate; 33 using pp::NetAddressPrivate;
34 34
35 namespace { 35 namespace {
36 36
37 // |host| should be an IP address represented as text, e.g., "192.168.0.1".
37 PP_NetAddress_Private MakeIPv4NetAddress(const char* host, int port) { 38 PP_NetAddress_Private MakeIPv4NetAddress(const char* host, int port) {
38 PP_NetAddress_Private addr = PP_NetAddress_Private(); 39 PP_NetAddress_Private addr = PP_NetAddress_Private();
39 addr.size = sizeof(sockaddr_in); 40 addr.size = sizeof(sockaddr_in);
40 sockaddr_in* a = reinterpret_cast<sockaddr_in*>(addr.data); 41 sockaddr_in* a = reinterpret_cast<sockaddr_in*>(addr.data);
41 a->sin_family = AF_INET; 42 a->sin_family = AF_INET;
42 a->sin_port = htons(port); 43 a->sin_port = htons(port);
43 a->sin_addr.s_addr = inet_addr(host); 44 a->sin_addr.s_addr = inet_addr(host);
44 return addr; 45 return addr;
45 } 46 }
46 47
47 // TODO(viettrungluu): Also add IPv6 tests. 48 // |host| should be an array of eight 16-bit numbers.
49 PP_NetAddress_Private MakeIPv6NetAddress(const uint16_t host[], uint16_t port,
50 uint32_t scope_id) {
51 PP_NetAddress_Private addr = PP_NetAddress_Private();
52 addr.size = sizeof(sockaddr_in6);
53 sockaddr_in6* a = reinterpret_cast<sockaddr_in6*>(addr.data);
54 a->sin6_family = AF_INET6;
55 a->sin6_port = htons(port);
56 a->sin6_flowinfo = 0;
dmichael (off chromium) 2011/11/17 04:41:46 Would it maybe be safer to use a sockaddr_in6 on t
viettrungluu 2011/11/17 20:22:56 That's a good point, though in that case I should
57 for (int i = 0; i < 8; i++)
58 a->sin6_addr.s6_addr16[i] = htons(host[i]);
59 a->sin6_scope_id = scope_id;
60 return addr;
61 }
48 62
49 } // namespace 63 } // namespace
50 64
51 REGISTER_TEST_CASE(NetAddressPrivate); 65 REGISTER_TEST_CASE(NetAddressPrivate);
52 66
53 TestNetAddressPrivate::TestNetAddressPrivate(TestingInstance* instance) 67 TestNetAddressPrivate::TestNetAddressPrivate(TestingInstance* instance)
54 : TestCase(instance) { 68 : TestCase(instance) {
55 } 69 }
56 70
57 bool TestNetAddressPrivate::Init() { 71 bool TestNetAddressPrivate::Init() {
58 return NetAddressPrivate::IsAvailable(); 72 return NetAddressPrivate::IsAvailable();
59 } 73 }
60 74
61 void TestNetAddressPrivate::RunTest() { 75 void TestNetAddressPrivate::RunTest() {
62 RUN_TEST(AreEqual); 76 RUN_TEST(AreEqual);
63 RUN_TEST(AreHostsEqual); 77 RUN_TEST(AreHostsEqual);
64 RUN_TEST(Describe); 78 RUN_TEST(Describe);
65 RUN_TEST(ReplacePort); 79 RUN_TEST(ReplacePort);
66 RUN_TEST(GetAnyAddress); 80 RUN_TEST(GetAnyAddress);
81
82 RUN_TEST(DescribeIPv6);
67 } 83 }
68 84
69 std::string TestNetAddressPrivate::TestAreEqual() { 85 std::string TestNetAddressPrivate::TestAreEqual() {
70 // No comparisons should ever be done with invalid addresses. 86 // No comparisons should ever be done with invalid addresses.
71 PP_NetAddress_Private invalid = PP_NetAddress_Private(); 87 PP_NetAddress_Private invalid = PP_NetAddress_Private();
72 ASSERT_FALSE(NetAddressPrivate::AreEqual(invalid, invalid)); 88 ASSERT_FALSE(NetAddressPrivate::AreEqual(invalid, invalid));
73 89
74 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress("127.0.0.1", 80); 90 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress("127.0.0.1", 80);
75 ASSERT_TRUE(NetAddressPrivate::AreEqual(localhost_80, localhost_80)); 91 ASSERT_TRUE(NetAddressPrivate::AreEqual(localhost_80, localhost_80));
76 ASSERT_FALSE(NetAddressPrivate::AreEqual(localhost_80, invalid)); 92 ASSERT_FALSE(NetAddressPrivate::AreEqual(localhost_80, invalid));
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 PP_NetAddress_Private result = PP_NetAddress_Private(); 164 PP_NetAddress_Private result = PP_NetAddress_Private();
149 165
150 NetAddressPrivate::GetAnyAddress(false, &result); 166 NetAddressPrivate::GetAnyAddress(false, &result);
151 ASSERT_TRUE(NetAddressPrivate::AreEqual(result, result)); 167 ASSERT_TRUE(NetAddressPrivate::AreEqual(result, result));
152 168
153 NetAddressPrivate::GetAnyAddress(true, &result); 169 NetAddressPrivate::GetAnyAddress(true, &result);
154 ASSERT_TRUE(NetAddressPrivate::AreEqual(result, result)); 170 ASSERT_TRUE(NetAddressPrivate::AreEqual(result, result));
155 171
156 PASS(); 172 PASS();
157 } 173 }
174
175 // TODO(viettrungluu): More IPv6 tests needed.
176
177 std::string TestNetAddressPrivate::TestDescribeIPv6() {
178 static const uint16_t a1[8] = { 0x1234, 0xabcd, 0, 0x0001, 0, 0, 0, 0xcdef };
179 PP_NetAddress_Private addr1 = MakeIPv6NetAddress(a1, 1234, 789);
180 ASSERT_EQ("1234:abcd:0:1::cdef%789",
181 NetAddressPrivate::Describe(addr1, false));
182 ASSERT_EQ("[1234:abcd:0:1::cdef%789]:1234",
183 NetAddressPrivate::Describe(addr1, true));
184
185 static const uint16_t a2[8] = { 0x12, 0xabcd, 0, 0x0001, 0, 0, 0, 0xcdef };
186 PP_NetAddress_Private addr2 = MakeIPv6NetAddress(a2, 12, 0);
187 ASSERT_EQ("12:abcd:0:1::cdef",
188 NetAddressPrivate::Describe(addr2, false));
189 ASSERT_EQ("[12:abcd:0:1::cdef]:12",
190 NetAddressPrivate::Describe(addr2, true));
191
192 static const uint16_t a3[8] = { 0, 0, 0, 0x0123, 0, 0, 0, 0 };
193 PP_NetAddress_Private addr3 = MakeIPv6NetAddress(a3, 123, 0);
194 ASSERT_EQ("0:0:0:123::",
195 NetAddressPrivate::Describe(addr3, false));
196 ASSERT_EQ("[0:0:0:123::]:123",
197 NetAddressPrivate::Describe(addr3, true));
198
199 static const uint16_t a4[8] = { 0x1234, 0xabcd, 0, 0, 0xff, 0, 0, 0xcdef };
200 PP_NetAddress_Private addr4 = MakeIPv6NetAddress(a4, 123, 0);
201 ASSERT_EQ("1234:abcd::ff:0:0:cdef",
202 NetAddressPrivate::Describe(addr4, false));
203 ASSERT_EQ("[1234:abcd::ff:0:0:cdef]:123",
204 NetAddressPrivate::Describe(addr4, true));
205
206 static const uint16_t a5[8] = { 0, 0xa, 1, 2, 3, 0, 5, 0 };
207 PP_NetAddress_Private addr5 = MakeIPv6NetAddress(a5, 123, 0);
208 ASSERT_EQ("0:a:1:2:3:0:5:0",
209 NetAddressPrivate::Describe(addr5, false));
210 ASSERT_EQ("[0:a:1:2:3:0:5:0]:123",
211 NetAddressPrivate::Describe(addr5, true));
212
213 static const uint16_t a6[8] = { 0, 0xa, 1, 2, 3, 0, 0, 0 };
214 PP_NetAddress_Private addr6 = MakeIPv6NetAddress(a6, 123, 0);
215 ASSERT_EQ("0:a:1:2:3::",
216 NetAddressPrivate::Describe(addr6, false));
217 ASSERT_EQ("[0:a:1:2:3::]:123",
218 NetAddressPrivate::Describe(addr6, true));
219
220 static const uint16_t a7[8] = { 0, 0, 0, 2, 3, 0, 0, 0 };
221 PP_NetAddress_Private addr7 = MakeIPv6NetAddress(a7, 123, 0);
222 ASSERT_EQ("::2:3:0:0:0",
223 NetAddressPrivate::Describe(addr7, false));
224 ASSERT_EQ("[::2:3:0:0:0]:123",
225 NetAddressPrivate::Describe(addr7, true));
226
227 PASS();
228 }
OLDNEW
« ppapi/tests/test_net_address_private.h ('K') | « ppapi/tests/test_net_address_private.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698