brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · dc5f552 Raw
84 lines · cpp
1//===-- SocketAddressTest.cpp ---------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "lldb/Host/SocketAddress.h"10#include "TestingSupport/SubsystemRAII.h"11#include "lldb/Host/Socket.h"12#include "llvm/Testing/Support/Error.h"13 14#include "gtest/gtest.h"15 16using namespace lldb_private;17 18namespace {19class SocketAddressTest : public testing::Test {20public:21  SubsystemRAII<Socket> subsystems;22};23} // namespace24 25TEST_F(SocketAddressTest, Set) {26  SocketAddress sa;27  ASSERT_TRUE(sa.SetToLocalhost(AF_INET, 1138));28  ASSERT_STREQ("127.0.0.1", sa.GetIPAddress().c_str());29  ASSERT_EQ(1138, sa.GetPort());30 31  ASSERT_TRUE(sa.SetToAnyAddress(AF_INET, 0));32  ASSERT_STREQ("0.0.0.0", sa.GetIPAddress().c_str());33  ASSERT_EQ(0, sa.GetPort());34 35  ASSERT_TRUE(sa.SetToLocalhost(AF_INET6, 1139));36  ASSERT_TRUE(sa.GetIPAddress() == "::1" ||37              sa.GetIPAddress() == "0:0:0:0:0:0:0:1")38      << "Address was: " << sa.GetIPAddress();39  ASSERT_EQ(1139, sa.GetPort());40}41 42TEST_F(SocketAddressTest, GetAddressInfo) {43  auto addr = SocketAddress::GetAddressInfo("127.0.0.1", nullptr, AF_UNSPEC,44                                            SOCK_STREAM, IPPROTO_TCP);45  ASSERT_EQ(1u, addr.size());46  EXPECT_EQ(AF_INET, addr[0].GetFamily());47  EXPECT_EQ("127.0.0.1", addr[0].GetIPAddress());48}49 50#ifdef _WIN3251 52// we need to test our inet_ntop implementation for Windows XP53const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);54 55TEST_F(SocketAddressTest, inet_ntop) {56  const uint8_t address4[4] = {255, 0, 1, 100};57  const uint8_t address6[16] = {0, 1, 2,  3,  4,  5,  6,   7,58                                8, 9, 10, 11, 12, 13, 255, 0};59 60  char buffer[INET6_ADDRSTRLEN];61  memset(buffer, 'x', sizeof(buffer));62  EXPECT_STREQ("1:203:405:607:809:a0b:c0d:ff00",63               inet_ntop(AF_INET6, address6, buffer, sizeof(buffer)));64  memset(buffer, 'x', sizeof(buffer));65  EXPECT_STREQ("1:203:405:607:809:a0b:c0d:ff00",66               inet_ntop(AF_INET6, address6, buffer, 31));67  memset(buffer, 'x', sizeof(buffer));68  EXPECT_STREQ(nullptr, inet_ntop(AF_INET6, address6, buffer, 0));69  memset(buffer, 'x', sizeof(buffer));70  EXPECT_STREQ(nullptr, inet_ntop(AF_INET6, address6, buffer, 30));71 72  memset(buffer, 'x', sizeof(buffer));73  EXPECT_STREQ("255.0.1.100",74               inet_ntop(AF_INET, address4, buffer, sizeof(buffer)));75  memset(buffer, 'x', sizeof(buffer));76  EXPECT_STREQ("255.0.1.100", inet_ntop(AF_INET, address4, buffer, 12));77  memset(buffer, 'x', sizeof(buffer));78  EXPECT_STREQ(nullptr, inet_ntop(AF_INET, address4, buffer, 0));79  memset(buffer, 'x', sizeof(buffer));80  EXPECT_STREQ(nullptr, inet_ntop(AF_INET, address4, buffer, 11));81}82 83#endif84