diff options
Diffstat (limited to 'net/base/host_resolver_unittest.cc')
-rw-r--r-- | net/base/host_resolver_unittest.cc | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/net/base/host_resolver_unittest.cc b/net/base/host_resolver_unittest.cc new file mode 100644 index 0000000..447d5c7 --- /dev/null +++ b/net/base/host_resolver_unittest.cc @@ -0,0 +1,41 @@ +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "net/base/host_resolver.h" +#include "net/base/address_list.h" +#include "testing/gtest/include/gtest/gtest.h" + +#ifdef OS_WIN +#include <ws2tcpip.h> +#include <wspiapi.h> +#endif +#ifdef OS_POSIX +#include <netdb.h> +#endif + +namespace { + +class HostResolverTest : public testing::Test { +}; + +TEST(HostResolverTest, NumericAddresses) { + // Stevens says dotted quads with AI_UNSPEC resolve to a single sockaddr_in. + + net::HostResolver host_resolver; + net::AddressList adrlist; + const int kPortnum = 5555; + int err = host_resolver.Resolve("127.0.0.1", kPortnum, &adrlist, NULL); + EXPECT_EQ(0, err); + + const struct addrinfo* ainfo = adrlist.head(); + EXPECT_EQ(NULL, ainfo->ai_next); + EXPECT_EQ(sizeof(struct sockaddr_in), ainfo->ai_addrlen); + + const struct sockaddr* sa = ainfo->ai_addr; + const struct sockaddr_in* sa_in = (const struct sockaddr_in*) sa; + EXPECT_EQ(htons(kPortnum), sa_in->sin_port); + EXPECT_EQ(htonl(0x7f000001), sa_in->sin_addr.s_addr); +} + +} // namespace |