Chromium Code Reviews| Index: native_client_sdk/src/tests/nacl_io_test/socket_test.cc |
| diff --git a/native_client_sdk/src/tests/nacl_io_test/socket_test.cc b/native_client_sdk/src/tests/nacl_io_test/socket_test.cc |
| index 808a7ed99d78af13fcaec9f163662c7c50d1e624..883a5eceafbe509cd598bdea76b68d54ad8a7892 100644 |
| --- a/native_client_sdk/src/tests/nacl_io_test/socket_test.cc |
| +++ b/native_client_sdk/src/tests/nacl_io_test/socket_test.cc |
| @@ -395,6 +395,68 @@ TEST(SocketUtilityFunctions, Inet_ntop_failure) { |
| EXPECT_EQ(errno, ENOSPC); |
| } |
| +TEST(SocketUtilityFunctions, Inet_ptoa) { |
|
Sam Clegg
2014/01/25 00:30:07
Should this test have been called Inet_pton?
Sergey Ulanov
2014/01/25 02:22:03
yes, I'll rename it in a separate CL.
|
| + struct { |
| + int family; |
| + const char* input; |
| + const char* output; |
| + } tests[] = { |
| + { AF_INET, "127.127.12.0", NULL }, |
| + { AF_INET, "0.0.0.0", NULL }, |
| + |
| + { AF_INET6, "0:0:0:0:0:0:0:0", NULL }, |
| + { AF_INET6, "1234:5678:9abc:def0:1234:5678:9abc:def0", NULL }, |
| + { AF_INET6, "1:2:3:4:5:6:7:8", NULL }, |
| + { AF_INET6, "a:b:c:d:e:f:1:2", NULL }, |
| + { AF_INET6, "A:B:C:D:E:F:1:2", "a:b:c:d:e:f:1:2" }, |
| + { AF_INET6, "::", "0:0:0:0:0:0:0:0" }, |
| + { AF_INET6, "::12", "0:0:0:0:0:0:0:12" }, |
| + { AF_INET6, "::1:2:3", "0:0:0:0:0:1:2:3" }, |
| + { AF_INET6, "12::", "12:0:0:0:0:0:0:0" }, |
| + { AF_INET6, "1:2::", "1:2:0:0:0:0:0:0" }, |
| + { AF_INET6, "::12:0:0:0:0:0:0:0", "12:0:0:0:0:0:0:0" }, |
| + { AF_INET6, "1:2:3::4:5", "1:2:3:0:0:0:4:5" }, |
| + { AF_INET6, "::1.1.1.1", "0:0:0:0:0:0:101:101" }, |
| + { AF_INET6, "::ffff:1.1.1.1", "0:0:0:0:0:ffff:101:101" }, |
| + { AF_INET6, "ffff::1.1.1.1", "ffff:0:0:0:0:0:101:101" }, |
| + { AF_INET6, "::1.1.1.1", "0:0:0:0:0:0:101:101" }, |
| + }; |
| + |
| + for (size_t i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i) { |
| + uint8_t addr[16]; |
| + EXPECT_TRUE(inet_pton(tests[i].family, tests[i].input, addr)); |
| + const char* expected = tests[i].output ? tests[i].output : tests[i].input; |
| + char out_buffer[256]; |
| + EXPECT_TRUE( |
| + inet_ntop(tests[i].family, addr, out_buffer, sizeof(out_buffer))); |
| + EXPECT_EQ(std::string(expected), std::string(out_buffer)); |
| + } |
| +} |
| + |
| +TEST(SocketUtilityFunctions, Inet_ptoa_failure) { |
|
Sam Clegg
2014/01/25 00:30:07
Should this be "pton"?
Sergey Ulanov
2014/01/25 02:22:03
yes
|
| + uint8_t addr[16]; |
| + EXPECT_EQ(0, inet_pton(AF_INET, "127.127.12.24312", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET, "127.127.12.24 ", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET, "127.127.12.0.1", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET, "127.127.12. 0", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET, " 127.127.12.0", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET, "127.127.12.0.", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET, ".127.127.12.0", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET, "127.127.12.0x0", &addr)); |
| + |
| + EXPECT_EQ(0, inet_pton(AF_INET6, ":::", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET6, "0:::0", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET6, "0::0:0::1", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET6, "0:0:0:0:0:0:1: 2", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET6, " 0:0:0:0:0:0:1:2", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET6, "0:0:0:0:0:0:1:2 ", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET6, ":0:0:0:0:0:0:1:2", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET6, "0:0:0:0:0:0:1:2:4", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET6, "0:0:0:0:0:0:1:0.0.0.0", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET6, "::0.0.0.0:1", &addr)); |
| + EXPECT_EQ(0, inet_pton(AF_INET6, "::0.0.0.0.0", &addr)); |
| +} |
| + |
| TEST(SocketUtilityFunctions, Ntohs) { |
| uint8_t network_bytes[2] = { 0x22, 0x11 }; |
| uint16_t network_short; |