1f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org/* 2f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * Copyright 2004 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 11f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#if defined(WEBRTC_POSIX) 12f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include <netinet/in.h> // for sockaddr_in 13f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#endif 14f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 15f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/gunit.h" 16f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/socketaddress.h" 17f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/ipaddress.h" 18f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 19f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgnamespace rtc { 20f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 21f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgconst in6_addr kTestV6Addr = { { {0x20, 0x01, 0x0d, 0xb8, 22f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 0x10, 0x20, 0x30, 0x40, 23f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 0x50, 0x60, 0x70, 0x80, 24f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 0x90, 0xA0, 0xB0, 0xC0} } }; 25f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgconst in6_addr kMappedV4Addr = { { {0x00, 0x00, 0x00, 0x00, 26f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 0x00, 0x00, 0x00, 0x00, 27f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 0x00, 0x00, 0xFF, 0xFF, 28f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 0x01, 0x02, 0x03, 0x04} } }; 29f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgconst std::string kTestV6AddrString = "2001:db8:1020:3040:5060:7080:90a0:b0c0"; 30ac921d7365e83b1e271e05a2654ef705de5c60b7henrikgconst std::string kTestV6AddrAnonymizedString = "2001:db8:1020:x:x:x:x:x"; 31f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgconst std::string kTestV6AddrFullString = 32f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org "[2001:db8:1020:3040:5060:7080:90a0:b0c0]:5678"; 33ac921d7365e83b1e271e05a2654ef705de5c60b7henrikgconst std::string kTestV6AddrFullAnonymizedString = 34ac921d7365e83b1e271e05a2654ef705de5c60b7henrikg "[2001:db8:1020:x:x:x:x:x]:5678"; 35f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 36f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestDefaultCtor) { 37f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr; 38f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 39f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(), addr.ipaddr()); 40f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(0, addr.port()); 41f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("", addr.hostname()); 42f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 43f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 44f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestIPPortCtor) { 45f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr(IPAddress(0x01020304), 5678); 46f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 47f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0x01020304U), addr.ipaddr()); 48f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 49f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("", addr.hostname()); 50f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4:5678", addr.ToString()); 51f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 52f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 53f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestIPv4StringPortCtor) { 54f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr("1.2.3.4", 5678); 55f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 56f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0x01020304U), addr.ipaddr()); 57f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 58f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4", addr.hostname()); 59f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4:5678", addr.ToString()); 60f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 61f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 62f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestIPv6StringPortCtor) { 63f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr2(kTestV6AddrString, 1234); 64f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org IPAddress tocheck(kTestV6Addr); 65f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 66f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr2.IsUnresolvedIP()); 67f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(tocheck, addr2.ipaddr()); 68f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(1234, addr2.port()); 69f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(kTestV6AddrString, addr2.hostname()); 70f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("[" + kTestV6AddrString + "]:1234", addr2.ToString()); 71f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 72f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 73f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestSpecialStringPortCtor) { 74f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org // inet_addr doesn't handle this address properly. 75f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr("255.255.255.255", 5678); 76f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 77f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0xFFFFFFFFU), addr.ipaddr()); 78f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 79f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("255.255.255.255", addr.hostname()); 80f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("255.255.255.255:5678", addr.ToString()); 81f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 82f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 83f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestHostnamePortCtor) { 84f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr("a.b.com", 5678); 85f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(addr.IsUnresolvedIP()); 86f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(), addr.ipaddr()); 87f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 88f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("a.b.com", addr.hostname()); 89f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("a.b.com:5678", addr.ToString()); 90f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 91f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 92f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestCopyCtor) { 93f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress from("1.2.3.4", 5678); 94f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr(from); 95f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 96f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0x01020304U), addr.ipaddr()); 97f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 98f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4", addr.hostname()); 99f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4:5678", addr.ToString()); 100f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 101f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 102f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestAssign) { 103f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress from("1.2.3.4", 5678); 104f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr(IPAddress(0x88888888), 9999); 105f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr = from; 106f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 107f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0x01020304U), addr.ipaddr()); 108f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 109f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4", addr.hostname()); 110f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4:5678", addr.ToString()); 111f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 112f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 113f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestSetIPPort) { 114f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr(IPAddress(0x88888888), 9999); 115f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr.SetIP(IPAddress(0x01020304)); 116f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr.SetPort(5678); 117f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 118f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0x01020304U), addr.ipaddr()); 119f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 120f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("", addr.hostname()); 121f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4:5678", addr.ToString()); 122f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 123f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 124f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestSetIPFromString) { 125f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr(IPAddress(0x88888888), 9999); 126f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr.SetIP("1.2.3.4"); 127f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr.SetPort(5678); 128f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 129f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0x01020304U), addr.ipaddr()); 130f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 131f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4", addr.hostname()); 132f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4:5678", addr.ToString()); 133f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 134f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 135f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestSetIPFromHostname) { 136f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr(IPAddress(0x88888888), 9999); 137f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr.SetIP("a.b.com"); 138f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr.SetPort(5678); 139f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(addr.IsUnresolvedIP()); 140f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(), addr.ipaddr()); 141f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 142f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("a.b.com", addr.hostname()); 143f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("a.b.com:5678", addr.ToString()); 144f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr.SetResolvedIP(IPAddress(0x01020304)); 145f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 146f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0x01020304U), addr.ipaddr()); 147f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("a.b.com", addr.hostname()); 148f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("a.b.com:5678", addr.ToString()); 149f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 150f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 151f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestFromIPv4String) { 152f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr; 153f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(addr.FromString("1.2.3.4:5678")); 154f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 155f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0x01020304U), addr.ipaddr()); 156f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 157f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4", addr.hostname()); 158f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4:5678", addr.ToString()); 159f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 160f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 161f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestFromIPv6String) { 162f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr; 163f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(addr.FromString(kTestV6AddrFullString)); 164f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 165f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 166f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(kTestV6AddrString, addr.hostname()); 167f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(kTestV6AddrFullString, addr.ToString()); 168f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 169f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 170f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestFromHostname) { 171f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr; 172f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(addr.FromString("a.b.com:5678")); 173f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(addr.IsUnresolvedIP()); 174f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(), addr.ipaddr()); 175f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 176f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("a.b.com", addr.hostname()); 177f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("a.b.com:5678", addr.ToString()); 178f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 179f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 180f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestToFromSockAddr) { 181f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress from("1.2.3.4", 5678), addr; 182f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org sockaddr_in addr_in; 183f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org from.ToSockAddr(&addr_in); 184f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(addr.FromSockAddr(addr_in)); 185f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 186f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0x01020304U), addr.ipaddr()); 187f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 188f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("", addr.hostname()); 189f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4:5678", addr.ToString()); 190f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 191f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 192f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestToFromSockAddrStorage) { 193f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress from("1.2.3.4", 5678), addr; 194f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org sockaddr_storage addr_storage; 195f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org from.ToSockAddrStorage(&addr_storage); 196f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(SocketAddressFromSockAddrStorage(addr_storage, &addr)); 197f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 198f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(0x01020304U), addr.ipaddr()); 199f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 200f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("", addr.hostname()); 201f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4:5678", addr.ToString()); 202f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 203f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr.Clear(); 204f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org from.ToDualStackSockAddrStorage(&addr_storage); 205f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(SocketAddressFromSockAddrStorage(addr_storage, &addr)); 206f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 207f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(kMappedV4Addr), addr.ipaddr()); 208f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 209f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("", addr.hostname()); 210f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("[::ffff:1.2.3.4]:5678", addr.ToString()); 211f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 212f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr.Clear(); 213f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org memset(&addr_storage, 0, sizeof(sockaddr_storage)); 214f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org from = SocketAddress(kTestV6AddrString, 5678); 215f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org from.SetScopeID(6); 216f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org from.ToSockAddrStorage(&addr_storage); 217f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(SocketAddressFromSockAddrStorage(addr_storage, &addr)); 218f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 219f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(kTestV6Addr), addr.ipaddr()); 220f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 221f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("", addr.hostname()); 222f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(kTestV6AddrFullString, addr.ToString()); 223f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(6, addr.scope_id()); 224f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 225f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr.Clear(); 226f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org from.ToDualStackSockAddrStorage(&addr_storage); 227f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_TRUE(SocketAddressFromSockAddrStorage(addr_storage, &addr)); 228f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr.IsUnresolvedIP()); 229f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(IPAddress(kTestV6Addr), addr.ipaddr()); 230f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(5678, addr.port()); 231f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("", addr.hostname()); 232f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(kTestV6AddrFullString, addr.ToString()); 233f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(6, addr.scope_id()); 234f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 235f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr = from; 236f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr_storage.ss_family = AF_UNSPEC; 237f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(SocketAddressFromSockAddrStorage(addr_storage, &addr)); 238f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(from, addr); 239f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 240f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(SocketAddressFromSockAddrStorage(addr_storage, NULL)); 241f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 242f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 243f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgbool AreEqual(const SocketAddress& addr1, 244f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org const SocketAddress& addr2) { 245f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return addr1 == addr2 && addr2 == addr1 && 246f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org !(addr1 != addr2) && !(addr2 != addr1); 247f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 248f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 249f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgbool AreUnequal(const SocketAddress& addr1, 250f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org const SocketAddress& addr2) { 251f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return !(addr1 == addr2) && !(addr2 == addr1) && 252f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr1 != addr2 && addr2 != addr1; 253f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 254f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 255f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestEqualityOperators) { 256f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr1("1.2.3.4", 5678); 257f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr2("1.2.3.4", 5678); 258f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(AreEqual, addr1, addr2); 259f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 260f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr2 = SocketAddress("0.0.0.1", 5678); 261f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(AreUnequal, addr1, addr2); 262f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 263f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr2 = SocketAddress("1.2.3.4", 1234); 264f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(AreUnequal, addr1, addr2); 265f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 266f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr2 = SocketAddress(kTestV6AddrString, 5678); 267f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(AreUnequal, addr1, addr2); 268f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 269f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr1 = SocketAddress(kTestV6AddrString, 5678); 270f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(AreEqual, addr1, addr2); 271f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 272f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr2 = SocketAddress(kTestV6AddrString, 1234); 273f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(AreUnequal, addr1, addr2); 274f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 275f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr2 = SocketAddress("fe80::1", 5678); 276f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(AreUnequal, addr1, addr2); 277b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org 278b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org SocketAddress addr3("a.b.c.d", 1); 279b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org SocketAddress addr4("b.b.c.d", 1); 280b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org EXPECT_PRED2(AreUnequal, addr3, addr4); 281b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org EXPECT_PRED2(AreEqual, addr3, addr3); 282b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org 283b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org addr3.SetIP(addr1.ip()); 284b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org addr4.SetIP(addr1.ip()); 285b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org EXPECT_PRED2(AreEqual,addr3, addr4); 286f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 287f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 288b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.orgbool IsLessThan(const SocketAddress& addr1, const SocketAddress& addr2) { 289f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org return addr1 < addr2 && 290f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org !(addr2 < addr1) && 291f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org !(addr1 == addr2); 292f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 293f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 294f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestComparisonOperator) { 295f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr1("1.2.3.4", 5678); 296f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr2("1.2.3.4", 5678); 297f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 298f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr1 < addr2); 299f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr2 < addr1); 300f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 301f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr2 = SocketAddress("1.2.3.4", 5679); 302f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(IsLessThan, addr1, addr2); 303f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 304f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr2 = SocketAddress("2.2.3.4", 49152); 305f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(IsLessThan, addr1, addr2); 306f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 307f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr2 = SocketAddress(kTestV6AddrString, 5678); 308f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(IsLessThan, addr1, addr2); 309f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 310f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr1 = SocketAddress("fe80::1", 5678); 311f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(IsLessThan, addr2, addr1); 312f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 313f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr2 = SocketAddress("fe80::1", 5679); 314f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_PRED2(IsLessThan, addr1, addr2); 315f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 316f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr2 = SocketAddress("fe80::1", 5678); 317f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr1 < addr2); 318f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_FALSE(addr2 < addr1); 319b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org 320b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org SocketAddress addr3("a.b.c.d", 1); 321b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org SocketAddress addr4("b.b.c.d", 1); 322b614d0626f3116d80b932482ed56bf669ca19107henrike@webrtc.org EXPECT_PRED2(IsLessThan, addr3, addr4); 323f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 324f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 325f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(SocketAddressTest, TestToSensitiveString) { 326f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr_v4("1.2.3.4", 5678); 327f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4", addr_v4.HostAsURIString()); 328f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.4:5678", addr_v4.ToString()); 329cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström 330cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström#if defined(NDEBUG) 331f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.x", addr_v4.HostAsSensitiveURIString()); 332f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("1.2.3.x:5678", addr_v4.ToSensitiveString()); 333cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström#else 334cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström EXPECT_EQ("1.2.3.4", addr_v4.HostAsSensitiveURIString()); 335cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström EXPECT_EQ("1.2.3.4:5678", addr_v4.ToSensitiveString()); 336cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström#endif // defined(NDEBUG) 337f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 338f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketAddress addr_v6(kTestV6AddrString, 5678); 339f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("[" + kTestV6AddrString + "]", addr_v6.HostAsURIString()); 340f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(kTestV6AddrFullString, addr_v6.ToString()); 341cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström#if defined(NDEBUG) 342f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ("[" + kTestV6AddrAnonymizedString + "]", 343f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org addr_v6.HostAsSensitiveURIString()); 344f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(kTestV6AddrFullAnonymizedString, addr_v6.ToSensitiveString()); 345cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström#else 346cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström EXPECT_EQ("[" + kTestV6AddrString + "]", addr_v6.HostAsSensitiveURIString()); 347cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström EXPECT_EQ(kTestV6AddrFullString, addr_v6.ToSensitiveString()); 348cdb38e53978c27d0ccb9a7ccc987508122b2bc69Peter Boström#endif // defined(NDEBUG) 349f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 350f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 351f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} // namespace rtc 352