Address outstanding comments from aosp/713992
Test: as follows
- built, flashed, booted
- system/netd/tests/runtest.sh passes
- connected to a DNS64 network and observed prefix discovery
via "adb shell dumpsys netd"
Bug: 78545619
Change-Id: I7ae6bf258bb3f22795274026187ee8493875aace
diff --git a/libnetdutils/InternetAddressesTest.cpp b/libnetdutils/InternetAddressesTest.cpp
index c81e7eb..c63ecc5 100644
--- a/libnetdutils/InternetAddressesTest.cpp
+++ b/libnetdutils/InternetAddressesTest.cpp
@@ -16,6 +16,9 @@
#include <cstdint>
#include <limits>
+#include <sstream>
+#include <string>
+#include <vector>
#include <android-base/macros.h>
#include <gtest/gtest.h>
@@ -26,6 +29,56 @@
namespace netdutils {
namespace {
+enum Relation { EQ, LT };
+
+std::ostream& operator<<(std::ostream& os, Relation relation) {
+ switch (relation) {
+ case EQ: os << "eq"; break;
+ case LT: os << "lt"; break;
+ default: os << "?!"; break;
+ }
+ return os;
+}
+
+template <typename T>
+struct OperatorExpectation {
+ const Relation relation;
+ const T obj1;
+ const T obj2;
+
+ std::string toString() const {
+ std::stringstream output;
+ output << obj1 << " " << relation << " " << obj2;
+ return output.str();
+ }
+};
+
+template <typename T>
+void testGamutOfOperators(const OperatorExpectation<T>& expectation) {
+ switch (expectation.relation) {
+ case EQ:
+ EXPECT_TRUE(expectation.obj1 == expectation.obj2);
+ EXPECT_TRUE(expectation.obj1 <= expectation.obj2);
+ EXPECT_TRUE(expectation.obj1 >= expectation.obj2);
+ EXPECT_FALSE(expectation.obj1 != expectation.obj2);
+ EXPECT_FALSE(expectation.obj1 < expectation.obj2);
+ EXPECT_FALSE(expectation.obj1 > expectation.obj2);
+ break;
+
+ case LT:
+ EXPECT_TRUE(expectation.obj1 < expectation.obj2);
+ EXPECT_TRUE(expectation.obj1 <= expectation.obj2);
+ EXPECT_TRUE(expectation.obj1 != expectation.obj2);
+ EXPECT_FALSE(expectation.obj1 > expectation.obj2);
+ EXPECT_FALSE(expectation.obj1 >= expectation.obj2);
+ EXPECT_FALSE(expectation.obj1 == expectation.obj2);
+ break;
+
+ default:
+ FAIL() << "Unknown relation given in test expectation";
+ }
+}
+
const in_addr IPV4_ANY{htonl(INADDR_ANY)};
const in_addr IPV4_LOOPBACK{htonl(INADDR_LOOPBACK)};
const in_addr IPV4_ONES{~0U};
@@ -37,47 +90,53 @@
const uint8_t ff = std::numeric_limits<uint8_t>::max();
const in6_addr IPV6_ONES{{{ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff}}};
-TEST(IPAddressTest, Equals) {
- EXPECT_TRUE(IPAddress() == IPAddress());
- EXPECT_TRUE(IPAddress(IPV4_ONES) == IPAddress(IPV4_ONES));
- EXPECT_TRUE(IPAddress(IPV6_ONES) == IPAddress(IPV6_ONES));
- EXPECT_TRUE(IPAddress(FE80_1) == IPAddress(FE80_1));
- EXPECT_TRUE(IPAddress(FE80_2) == IPAddress(FE80_2));
- EXPECT_FALSE(IPAddress() == IPAddress(IPV4_ONES));
- EXPECT_FALSE(IPAddress() == IPAddress(IPV6_ONES));
- EXPECT_FALSE(IPAddress(IPV4_ONES) == IPAddress(IPV6_ONES));
- EXPECT_FALSE(IPAddress(IPV6_ONES) == IPAddress(FE80_1));
-}
+TEST(IPAddressTest, GamutOfOperators) {
+ const std::vector<OperatorExpectation<IPAddress>> kExpectations{
+ {EQ, IPAddress(), IPAddress()},
+ {EQ, IPAddress(IPV4_ONES), IPAddress(IPV4_ONES)},
+ {EQ, IPAddress(IPV6_ONES), IPAddress(IPV6_ONES)},
+ {EQ, IPAddress(FE80_1), IPAddress(FE80_1)},
+ {EQ, IPAddress(FE80_2), IPAddress(FE80_2)},
+ {LT, IPAddress(), IPAddress(IPV4_ANY)},
+ {LT, IPAddress(), IPAddress(IPV4_ONES)},
+ {LT, IPAddress(), IPAddress(IPV6_ANY)},
+ {LT, IPAddress(), IPAddress(IPV6_ONES)},
+ {LT, IPAddress(IPV4_ANY), IPAddress(IPV4_ONES)},
+ {LT, IPAddress(IPV4_ANY), IPAddress(IPV6_ANY)},
+ {LT, IPAddress(IPV4_ONES), IPAddress(IPV6_ANY)},
+ {LT, IPAddress(IPV4_ONES), IPAddress(IPV6_ONES)},
+ {LT, IPAddress(IPV6_ANY), IPAddress(IPV6_LOOPBACK)},
+ {LT, IPAddress(IPV6_ANY), IPAddress(IPV6_ONES)},
+ {LT, IPAddress(IPV6_LOOPBACK), IPAddress(IPV6_ONES)},
+ {LT, IPAddress(FE80_1), IPAddress(FE80_2)},
+ {LT, IPAddress(FE80_1), IPAddress(IPV6_ONES)},
+ {LT, IPAddress(FE80_2), IPAddress(IPV6_ONES)},
+ // Sort by scoped_id within the same address.
+ {LT, IPAddress(FE80_1), IPAddress(FE80_1, 1)},
+ {LT, IPAddress(FE80_1, 1), IPAddress(FE80_1, 2)},
+ // Sort by address first, scope_id second.
+ {LT, IPAddress(FE80_1, 2), IPAddress(FE80_2, 1)},
+ };
-TEST(IPAddressTest, NotEquals) {
- EXPECT_FALSE(IPAddress() != IPAddress());
- EXPECT_FALSE(IPAddress(IPV4_ONES) != IPAddress(IPV4_ONES));
- EXPECT_FALSE(IPAddress(IPV6_ONES) != IPAddress(IPV6_ONES));
- EXPECT_FALSE(IPAddress(FE80_1) != IPAddress(FE80_1));
- EXPECT_FALSE(IPAddress(FE80_2) != IPAddress(FE80_2));
- EXPECT_TRUE(IPAddress() != IPAddress(IPV4_ONES));
- EXPECT_TRUE(IPAddress() != IPAddress(IPV6_ONES));
- EXPECT_TRUE(IPAddress(IPV4_ONES) != IPAddress(IPV6_ONES));
- EXPECT_TRUE(IPAddress(IPV6_ONES) != IPAddress(FE80_1));
+ size_t tests_run = 0;
+ for (const auto& expectation : kExpectations) {
+ SCOPED_TRACE(expectation.toString());
+ EXPECT_NO_FATAL_FAILURE(testGamutOfOperators(expectation));
+ tests_run++;
+ }
+ EXPECT_EQ(kExpectations.size(), tests_run);
}
TEST(IPAddressTest, ScopeIds) {
- EXPECT_TRUE(IPAddress(FE80_1, 22) == IPAddress(FE80_1, 22));
- EXPECT_FALSE(IPAddress(FE80_1, 22) != IPAddress(FE80_1, 22));
- EXPECT_FALSE(IPAddress(FE80_1) == IPAddress(FE80_1, 22));
- EXPECT_TRUE(IPAddress(FE80_1) != IPAddress(FE80_1, 22));
- EXPECT_FALSE(IPAddress(FE80_2, 22) == IPAddress(FE80_1, 22));
- EXPECT_TRUE(IPAddress(FE80_2, 22) != IPAddress(FE80_1, 22));
-
// Scope IDs ignored for IPv4 addresses.
const IPAddress ones(IPV4_ONES);
EXPECT_EQ(0, ones.scope_id());
const IPAddress ones22(ones, 22);
EXPECT_EQ(0, ones22.scope_id());
- EXPECT_TRUE(ones == ones22);
+ EXPECT_EQ(ones, ones22);
const IPAddress ones23(ones, 23);
EXPECT_EQ(0, ones23.scope_id());
- EXPECT_TRUE(ones22 == ones23);
+ EXPECT_EQ(ones22, ones23);
EXPECT_EQ("fe80::1%22", IPAddress(FE80_1, 22).toString());
EXPECT_EQ("fe80::2%23", IPAddress(FE80_2, 23).toString());
@@ -90,23 +149,6 @@
EXPECT_EQ(IPAddress(FE80_1), IPAddress(fe80_intf22, 0));
}
-TEST(IPAddressTest, LessThan) {
- EXPECT_FALSE(IPAddress() < IPAddress());
- EXPECT_TRUE(IPAddress() < IPAddress(IPV4_ANY));
- EXPECT_TRUE(IPAddress() < IPAddress(IPV6_ANY));
- EXPECT_TRUE(IPAddress(IPV4_ANY) < IPAddress(IPV6_ANY));
- EXPECT_TRUE(IPAddress(IPV4_ANY) < IPAddress(IPV4_ONES));
- EXPECT_TRUE(IPAddress(IPV4_ONES) < IPAddress(IPV6_ANY));
- EXPECT_TRUE(IPAddress(IPV6_ANY) < IPAddress(IPV6_LOOPBACK));
- EXPECT_TRUE(IPAddress(IPV6_ANY) < IPAddress(IPV6_ONES));
- // Sort by scoped_id.
- EXPECT_TRUE(IPAddress(FE80_1) < IPAddress(FE80_1, 1));
- EXPECT_TRUE(IPAddress(FE80_1, 1) < IPAddress(FE80_1, 2));
- // Sort by address first, scope_id second.
- EXPECT_TRUE(IPAddress(FE80_1, 2) < IPAddress(FE80_2));
- EXPECT_TRUE(IPAddress(FE80_1, 2) < IPAddress(FE80_2, 2));
-}
-
TEST(IPAddressTest, forString) {
IPAddress ip;
@@ -361,121 +403,80 @@
EXPECT_EQ(arraysize(testExpectations), totalTests);
}
-TEST(IPPrefixTest, Equals) {
- EXPECT_TRUE(IPPrefix() == IPPrefix());
- EXPECT_TRUE(IPPrefix(IPAddress(IPV4_ANY), 0) == IPPrefix(IPAddress(IPV4_ANY), 0));
- EXPECT_TRUE(IPPrefix(IPAddress(IPV4_ANY), IPV4_ADDR_BITS) == IPPrefix(IPAddress(IPV4_ANY)));
- for (int i = 0; i < IPV4_ADDR_BITS; i++) {
- EXPECT_FALSE(IPPrefix(IPAddress(IPV4_ANY), i) == IPPrefix(IPAddress(IPV4_ANY), i + 1));
- EXPECT_FALSE(IPPrefix(IPAddress(IPV4_ONES), i) == IPPrefix(IPAddress(IPV4_ONES), i + 1));
+TEST(IPPrefixTest, GamutOfOperators) {
+ const std::vector<OperatorExpectation<IPPrefix>> kExpectations{
+ {EQ, IPPrefix(), IPPrefix()},
+ {EQ, IPPrefix(IPAddress(IPV4_ANY), 0), IPPrefix(IPAddress(IPV4_ANY), 0)},
+ {EQ, IPPrefix(IPAddress(IPV4_ANY), IPV4_ADDR_BITS), IPPrefix(IPAddress(IPV4_ANY))},
+ {EQ, IPPrefix(IPAddress(IPV6_ANY), 0), IPPrefix(IPAddress(IPV6_ANY), 0)},
+ {EQ, IPPrefix(IPAddress(IPV6_ANY), IPV6_ADDR_BITS), IPPrefix(IPAddress(IPV6_ANY))},
+ // Needlessly fully-specified IPv6 link-local address.
+ {EQ, IPPrefix(IPAddress(FE80_1)), IPPrefix(IPAddress(FE80_1, 0), IPV6_ADDR_BITS)},
+ // Different IPv6 link-local addresses within the same /64, no scoped_id: same /64.
+ {EQ, IPPrefix(IPAddress(FE80_1), 64), IPPrefix(IPAddress(FE80_2), 64)},
+ // Different IPv6 link-local address within the same /64, same scoped_id: same /64.
+ {EQ, IPPrefix(IPAddress(FE80_1, 17), 64), IPPrefix(IPAddress(FE80_2, 17), 64)},
+ // Unspecified < IPv4.
+ {LT, IPPrefix(), IPPrefix(IPAddress(IPV4_ANY), 0)},
+ // Same IPv4 base address sorts by prefix length.
+ {LT, IPPrefix(IPAddress(IPV4_ANY), 0), IPPrefix(IPAddress(IPV4_ANY), 1)},
+ {LT, IPPrefix(IPAddress(IPV4_ANY), 1), IPPrefix(IPAddress(IPV4_ANY), IPV4_ADDR_BITS)},
+ // Truncation means each base IPv4 address is different.
+ {LT, IPPrefix(IPAddress(IPV4_ONES), 0), IPPrefix(IPAddress(IPV4_ONES), 1)},
+ {LT, IPPrefix(IPAddress(IPV4_ONES), 1), IPPrefix(IPAddress(IPV4_ONES), IPV4_ADDR_BITS)},
+ // Sort by base IPv4 addresses first.
+ {LT, IPPrefix(IPAddress(IPV4_ANY), 0), IPPrefix(IPAddress::forString("0.0.0.1"))},
+ {LT, IPPrefix(IPAddress(IPV4_ANY), 1), IPPrefix(IPAddress::forString("0.0.0.1"))},
+ {LT, IPPrefix(IPAddress(IPV4_ANY), 24), IPPrefix(IPAddress::forString("0.0.0.1"))},
+ // IPv4 < IPv6.
+ {LT, IPPrefix(IPAddress(IPV4_ANY), 0), IPPrefix(IPAddress(IPV6_ANY), 0)},
+ {LT, IPPrefix(IPAddress(IPV4_ONES)), IPPrefix(IPAddress(IPV6_ANY))},
+ // Unspecified < IPv6.
+ {LT, IPPrefix(), IPPrefix(IPAddress(IPV6_ANY), 0)},
+ // Same IPv6 base address sorts by prefix length.
+ {LT, IPPrefix(IPAddress(IPV6_ANY), 0), IPPrefix(IPAddress(IPV6_ANY), 1)},
+ {LT, IPPrefix(IPAddress(IPV6_ANY), 1), IPPrefix(IPAddress(IPV6_ANY), IPV6_ADDR_BITS)},
+ // Truncation means each base IPv6 address is different.
+ {LT, IPPrefix(IPAddress(IPV6_ONES), 0), IPPrefix(IPAddress(IPV6_ONES), 1)},
+ {LT, IPPrefix(IPAddress(IPV6_ONES), 1), IPPrefix(IPAddress(IPV6_ONES), IPV6_ADDR_BITS)},
+ // Different IPv6 link-local address in same /64, different scoped_id: different /64.
+ {LT, IPPrefix(IPAddress(FE80_1, 17), 64), IPPrefix(IPAddress(FE80_2, 22), 64)},
+ {LT, IPPrefix(IPAddress(FE80_1, 17), 64), IPPrefix(IPAddress(FE80_1, 18), 64)},
+ {LT, IPPrefix(IPAddress(FE80_1, 18), 64), IPPrefix(IPAddress(FE80_1, 19), 64)},
+ };
+
+ size_t tests_run = 0;
+ for (const auto& expectation : kExpectations) {
+ SCOPED_TRACE(expectation.toString());
+ EXPECT_NO_FATAL_FAILURE(testGamutOfOperators(expectation));
+ tests_run++;
}
- EXPECT_TRUE(IPPrefix(IPAddress(IPV6_ANY), 0) == IPPrefix(IPAddress(IPV6_ANY), 0));
- EXPECT_TRUE(IPPrefix(IPAddress(IPV6_ANY), IPV6_ADDR_BITS) == IPPrefix(IPAddress(IPV6_ANY)));
- for (int i = 0; i < IPV6_ADDR_BITS; i++) {
- EXPECT_FALSE(IPPrefix(IPAddress(IPV6_ANY), i) == IPPrefix(IPAddress(IPV6_ANY), i + 1));
- EXPECT_FALSE(IPPrefix(IPAddress(IPV6_ONES), i) == IPPrefix(IPAddress(IPV6_ONES), i + 1));
- }
- // Needlessly fully-specified IPv6 link-local address.
- EXPECT_TRUE(IPPrefix(IPAddress(FE80_1)) == IPPrefix(IPAddress(FE80_1, 0), IPV6_ADDR_BITS));
- // Different IPv6 link-local address within the same /64, no scoped_id --> same /64.
- EXPECT_TRUE(IPPrefix(IPAddress(FE80_1), 64) == IPPrefix(IPAddress(FE80_2), 64));
- const uint32_t idx = 17;
- // Different IPv6 link-local address within the same /64, same scoped_id --> same /64.
- EXPECT_TRUE(IPPrefix(IPAddress(FE80_1, idx), 64) == IPPrefix(IPAddress(FE80_2, idx), 64));
- // Different IPv6 link-local address within the same /64, different scoped_id --> different /64.
- EXPECT_FALSE(IPPrefix(IPAddress(FE80_1, idx), 64) == IPPrefix(IPAddress(FE80_2, idx + 1), 64));
+ EXPECT_EQ(kExpectations.size(), tests_run);
}
-TEST(IPPrefixTest, NotEquals) {
- EXPECT_FALSE(IPPrefix() != IPPrefix());
- EXPECT_FALSE(IPPrefix(IPAddress(IPV4_ANY), 0) != IPPrefix(IPAddress(IPV4_ANY), 0));
- EXPECT_FALSE(IPPrefix(IPAddress(IPV4_ANY), IPV4_ADDR_BITS) != IPPrefix(IPAddress(IPV4_ANY)));
- for (int i = 0; i < IPV4_ADDR_BITS; i++) {
- EXPECT_TRUE(IPPrefix(IPAddress(IPV4_ANY), i) != IPPrefix(IPAddress(IPV4_ANY), i + 1));
- EXPECT_TRUE(IPPrefix(IPAddress(IPV4_ONES), i) != IPPrefix(IPAddress(IPV4_ONES), i + 1));
+TEST(IPSockAddrTest, GamutOfOperators) {
+ const std::vector<OperatorExpectation<IPSockAddr>> kExpectations{
+ {EQ, IPSockAddr(), IPSockAddr()},
+ {EQ, IPSockAddr(IPAddress(IPV4_ANY)), IPSockAddr(IPAddress(IPV4_ANY), 0)},
+ {EQ, IPSockAddr(IPAddress(IPV6_ANY)), IPSockAddr(IPAddress(IPV6_ANY), 0)},
+ {EQ, IPSockAddr(IPAddress(FE80_1), 80), IPSockAddr(IPAddress(FE80_1), 80)},
+ {EQ, IPSockAddr(IPAddress(FE80_1, 17)), IPSockAddr(IPAddress(FE80_1, 17), 0)},
+ {LT, IPSockAddr(IPAddress(IPV4_ANY), 0), IPSockAddr(IPAddress(IPV4_ANY), 1)},
+ {LT, IPSockAddr(IPAddress(IPV4_ANY), 53), IPSockAddr(IPAddress(IPV4_ANY), 123)},
+ {LT, IPSockAddr(IPAddress(IPV4_ONES), 123), IPSockAddr(IPAddress(IPV6_ANY), 53)},
+ {LT, IPSockAddr(IPAddress(IPV6_ANY), 0), IPSockAddr(IPAddress(IPV6_ANY), 1)},
+ {LT, IPSockAddr(IPAddress(IPV6_ANY), 53), IPSockAddr(IPAddress(IPV6_ANY), 123)},
+ {LT, IPSockAddr(IPAddress(FE80_1), 80), IPSockAddr(IPAddress(FE80_1, 17), 80)},
+ {LT, IPSockAddr(IPAddress(FE80_1, 17), 80), IPSockAddr(IPAddress(FE80_1, 22), 80)},
+ };
+
+ size_t tests_run = 0;
+ for (const auto& expectation : kExpectations) {
+ SCOPED_TRACE(expectation.toString());
+ EXPECT_NO_FATAL_FAILURE(testGamutOfOperators(expectation));
+ tests_run++;
}
- EXPECT_FALSE(IPPrefix(IPAddress(IPV6_ANY), 0) != IPPrefix(IPAddress(IPV6_ANY), 0));
- EXPECT_FALSE(IPPrefix(IPAddress(IPV6_ANY), IPV6_ADDR_BITS) != IPPrefix(IPAddress(IPV6_ANY)));
- for (int i = 0; i < IPV6_ADDR_BITS; i++) {
- EXPECT_TRUE(IPPrefix(IPAddress(IPV6_ANY), i) != IPPrefix(IPAddress(IPV6_ANY), i + 1));
- EXPECT_TRUE(IPPrefix(IPAddress(IPV6_ONES), i) != IPPrefix(IPAddress(IPV6_ONES), i + 1));
- }
- // Needlessly fully-specified IPv6 link-local address.
- EXPECT_FALSE(IPPrefix(IPAddress(FE80_1)) != IPPrefix(IPAddress(FE80_1, 0), IPV6_ADDR_BITS));
- // Different IPv6 link-local address within the same /64, no scoped_id --> same /64.
- EXPECT_FALSE(IPPrefix(IPAddress(FE80_1), 64) != IPPrefix(IPAddress(FE80_2), 64));
- const uint32_t idx = 17;
- // Different IPv6 link-local address within the same /64, same scoped_id --> same /64.
- EXPECT_FALSE(IPPrefix(IPAddress(FE80_1, idx), 64) != IPPrefix(IPAddress(FE80_2, idx), 64));
- // Different IPv6 link-local address within the same /64, different scoped_id --> different /64.
- EXPECT_TRUE(IPPrefix(IPAddress(FE80_1, idx), 64) != IPPrefix(IPAddress(FE80_2, idx + 1), 64));
-}
-
-TEST(IPPrefixTest, LessThan) {
- EXPECT_FALSE(IPPrefix() < IPPrefix());
-
- // Unspecified < IPv4.
- EXPECT_TRUE(IPPrefix() < IPPrefix(IPAddress(IPV4_ANY), 0));
- for (int i = 0; i < IPV4_ADDR_BITS; i++) {
- // Same IPv4 base address sorts by prefix length.
- EXPECT_TRUE(IPPrefix(IPAddress(IPV4_ANY), i) < IPPrefix(IPAddress(IPV4_ANY), i + 1));
- // Walk all the bits for good measure.
- EXPECT_TRUE(IPPrefix(IPAddress(IPV4_ONES), i) < IPPrefix(IPAddress(IPV4_ONES), i + 1));
- // Sort by base IPv6 addresses first.
- EXPECT_TRUE(IPPrefix(IPAddress(IPV4_ANY), i) < IPPrefix(IPAddress::forString("0.0.0.1")));
- }
-
- // Unspecified < IPv6.
- EXPECT_TRUE(IPPrefix() < IPPrefix(IPAddress(IPV6_ANY), 0));
-
- // IPv4 < IPv6.
- EXPECT_TRUE(IPPrefix(IPAddress(IPV4_ANY), 0) < IPPrefix(IPAddress(IPV6_ANY), 0));
- EXPECT_TRUE(IPPrefix(IPAddress(IPV4_ONES)) < IPPrefix(IPAddress(IPV6_ANY)));
- for (int i = 0; i < IPV6_ADDR_BITS; i++) {
- // Same IPv6 base address sorts by prefix length.
- EXPECT_TRUE(IPPrefix(IPAddress(IPV6_ANY), i) < IPPrefix(IPAddress(IPV6_ANY), i + 1));
- // Walk all the bits for good measure.
- EXPECT_TRUE(IPPrefix(IPAddress(IPV6_ONES), i) < IPPrefix(IPAddress(IPV6_ONES), i + 1));
- // Sort by base IPv6 addresses first.
- EXPECT_TRUE(IPPrefix(IPAddress(IPV6_ANY, i)) < IPPrefix(IPAddress(IPV6_ONES)));
- }
- // Scope_ids.
- for (int i = 0; i < 100; i++) {
- EXPECT_TRUE(IPPrefix(IPAddress(FE80_1, i), 64) < IPPrefix(IPAddress(FE80_1, i + 1), 64));
- }
-}
-
-TEST(IPSockAddrTest, Equals) {
- EXPECT_TRUE(IPSockAddr() == IPSockAddr());
- EXPECT_TRUE(IPSockAddr(IPAddress(IPV4_ANY)) == IPSockAddr(IPAddress(IPV4_ANY), 0));
- EXPECT_FALSE(IPSockAddr(IPAddress(IPV4_ANY), 53) == IPSockAddr(IPAddress(IPV4_ANY), 123));
- EXPECT_TRUE(IPSockAddr(IPAddress(IPV6_ANY)) == IPSockAddr(IPAddress(IPV6_ANY), 0));
- EXPECT_FALSE(IPSockAddr(IPAddress(IPV6_ANY), 53) == IPSockAddr(IPAddress(IPV6_ANY), 123));
- EXPECT_TRUE(IPSockAddr(IPAddress(FE80_1), 80) == IPSockAddr(IPAddress(FE80_1), 80));
- EXPECT_FALSE(IPSockAddr(IPAddress(FE80_1), 80) == IPSockAddr(IPAddress(FE80_1, 17), 80));
- EXPECT_TRUE(IPSockAddr(IPAddress(FE80_1, 17)) == IPSockAddr(IPAddress(FE80_1, 17), 0));
-}
-
-TEST(IPSockAddrTest, NotEquals) {
- EXPECT_FALSE(IPSockAddr() != IPSockAddr());
- EXPECT_FALSE(IPSockAddr(IPAddress(IPV4_ANY)) != IPSockAddr(IPAddress(IPV4_ANY), 0));
- EXPECT_TRUE(IPSockAddr(IPAddress(IPV4_ANY), 53) != IPSockAddr(IPAddress(IPV4_ANY), 123));
- EXPECT_FALSE(IPSockAddr(IPAddress(IPV6_ANY)) != IPSockAddr(IPAddress(IPV6_ANY), 0));
- EXPECT_TRUE(IPSockAddr(IPAddress(IPV6_ANY), 53) != IPSockAddr(IPAddress(IPV6_ANY), 123));
- EXPECT_FALSE(IPSockAddr(IPAddress(FE80_1), 80) != IPSockAddr(IPAddress(FE80_1), 80));
- EXPECT_TRUE(IPSockAddr(IPAddress(FE80_1), 80) != IPSockAddr(IPAddress(FE80_1, 17), 80));
- EXPECT_FALSE(IPSockAddr(IPAddress(FE80_1, 17)) != IPSockAddr(IPAddress(FE80_1, 17), 0));
-}
-
-TEST(IPSockAddrTest, LessThan) {
- EXPECT_FALSE(IPSockAddr() < IPSockAddr());
-
- for (in_port_t i = 0; i < std::numeric_limits<in_port_t>::max(); i++) {
- EXPECT_TRUE(IPSockAddr(IPAddress(IPV4_ANY), i) < IPSockAddr(IPAddress(IPV4_ANY), i + 1));
- EXPECT_TRUE(IPSockAddr(IPAddress(IPV4_ANY), i) < IPSockAddr(IPAddress(IPV6_ANY), i));
- EXPECT_TRUE(IPSockAddr(IPAddress(IPV6_ANY), i) < IPSockAddr(IPAddress(IPV6_ANY), i + 1));
- EXPECT_TRUE(IPSockAddr(IPAddress(FE80_1), i) < IPSockAddr(IPAddress(FE80_1), i + 1));
- }
+ EXPECT_EQ(kExpectations.size(), tests_run);
}
TEST(IPSockAddrTest, toString) {