Add operator!= to QUIC TransportParameters
I forgot to ask about this when reviewing cl/305724142, so I figured I'd add it instead.
gfe-relnote: n/a, new unused functionality
PiperOrigin-RevId: 305732997
Change-Id: I367e5bfb3aceaa898dff0582d8c1b75ae530be01
diff --git a/quic/core/crypto/crypto_handshake_message.cc b/quic/core/crypto/crypto_handshake_message.cc
index d0e66d8..e0c2528 100644
--- a/quic/core/crypto/crypto_handshake_message.cc
+++ b/quic/core/crypto/crypto_handshake_message.cc
@@ -56,6 +56,11 @@
minimum_size_ == rhs.minimum_size_;
}
+bool CryptoHandshakeMessage::operator!=(
+ const CryptoHandshakeMessage& rhs) const {
+ return !(*this == rhs);
+}
+
void CryptoHandshakeMessage::Clear() {
tag_ = 0;
tag_value_map_.clear();
diff --git a/quic/core/crypto/crypto_handshake_message.h b/quic/core/crypto/crypto_handshake_message.h
index b5996de..9539050 100644
--- a/quic/core/crypto/crypto_handshake_message.h
+++ b/quic/core/crypto/crypto_handshake_message.h
@@ -31,6 +31,7 @@
CryptoHandshakeMessage& operator=(CryptoHandshakeMessage&& other);
bool operator==(const CryptoHandshakeMessage& rhs) const;
+ bool operator!=(const CryptoHandshakeMessage& rhs) const;
// Clears state.
void Clear();
diff --git a/quic/core/crypto/transport_parameters.cc b/quic/core/crypto/transport_parameters.cc
index 422be3d..62f3c9c 100644
--- a/quic/core/crypto/transport_parameters.cc
+++ b/quic/core/crypto/transport_parameters.cc
@@ -320,6 +320,11 @@
stateless_reset_token == rhs.stateless_reset_token;
}
+bool TransportParameters::PreferredAddress::operator!=(
+ const PreferredAddress& rhs) const {
+ return !(*this == rhs);
+}
+
std::ostream& operator<<(
std::ostream& os,
const TransportParameters::PreferredAddress& preferred_address) {
@@ -507,6 +512,10 @@
return address && google_quic;
}
+bool TransportParameters::operator!=(const TransportParameters& rhs) const {
+ return !(*this == rhs);
+}
+
bool TransportParameters::AreValid(std::string* error_details) const {
DCHECK(perspective == Perspective::IS_CLIENT ||
perspective == Perspective::IS_SERVER);
diff --git a/quic/core/crypto/transport_parameters.h b/quic/core/crypto/transport_parameters.h
index e3d6782..a06f74c 100644
--- a/quic/core/crypto/transport_parameters.h
+++ b/quic/core/crypto/transport_parameters.h
@@ -93,6 +93,7 @@
PreferredAddress(PreferredAddress&& other) = default;
~PreferredAddress();
bool operator==(const PreferredAddress& rhs) const;
+ bool operator!=(const PreferredAddress& rhs) const;
QuicSocketAddress ipv4_socket_address;
QuicSocketAddress ipv6_socket_address;
@@ -110,6 +111,7 @@
TransportParameters(const TransportParameters& other);
~TransportParameters();
bool operator==(const TransportParameters& rhs) const;
+ bool operator!=(const TransportParameters& rhs) const;
// Represents the sender of the transport parameters. When |perspective| is
// Perspective::IS_CLIENT, this struct is being used in the client_hello
diff --git a/quic/core/crypto/transport_parameters_test.cc b/quic/core/crypto/transport_parameters_test.cc
index 2ed7d63..4c66546 100644
--- a/quic/core/crypto/transport_parameters_test.cc
+++ b/quic/core/crypto/transport_parameters_test.cc
@@ -20,9 +20,6 @@
namespace test {
namespace {
-using testing::Pair;
-using testing::UnorderedElementsAre;
-
const QuicVersionLabel kFakeVersionLabel = 0x01234567;
const QuicVersionLabel kFakeVersionLabel2 = 0x89ABCDEF;
const uint64_t kFakeIdleTimeoutMilliseconds = 12012;
@@ -132,36 +129,52 @@
// Test comparison on primitive members.
orig_params.perspective = Perspective::IS_CLIENT;
new_params.perspective = Perspective::IS_SERVER;
+ EXPECT_NE(orig_params, new_params);
EXPECT_FALSE(orig_params == new_params);
+ EXPECT_TRUE(orig_params != new_params);
new_params.perspective = Perspective::IS_CLIENT;
orig_params.version = kFakeVersionLabel;
new_params.version = kFakeVersionLabel;
orig_params.disable_migration = true;
new_params.disable_migration = true;
EXPECT_EQ(orig_params, new_params);
+ EXPECT_TRUE(orig_params == new_params);
+ EXPECT_FALSE(orig_params != new_params);
// Test comparison on vectors.
orig_params.supported_versions.push_back(kFakeVersionLabel);
new_params.supported_versions.push_back(kFakeVersionLabel2);
+ EXPECT_NE(orig_params, new_params);
EXPECT_FALSE(orig_params == new_params);
+ EXPECT_TRUE(orig_params != new_params);
new_params.supported_versions.pop_back();
new_params.supported_versions.push_back(kFakeVersionLabel);
orig_params.stateless_reset_token = CreateFakeStatelessResetToken();
new_params.stateless_reset_token = CreateFakeStatelessResetToken();
EXPECT_EQ(orig_params, new_params);
+ EXPECT_TRUE(orig_params == new_params);
+ EXPECT_FALSE(orig_params != new_params);
// Test comparison on IntegerParameters.
orig_params.max_packet_size.set_value(kFakeMaxPacketSize);
new_params.max_packet_size.set_value(kFakeMaxPacketSize + 1);
+ EXPECT_NE(orig_params, new_params);
EXPECT_FALSE(orig_params == new_params);
+ EXPECT_TRUE(orig_params != new_params);
new_params.max_packet_size.set_value(kFakeMaxPacketSize);
EXPECT_EQ(orig_params, new_params);
+ EXPECT_TRUE(orig_params == new_params);
+ EXPECT_FALSE(orig_params != new_params);
// Test comparison on PreferredAddress
orig_params.preferred_address = CreateFakePreferredAddress();
+ EXPECT_NE(orig_params, new_params);
EXPECT_FALSE(orig_params == new_params);
+ EXPECT_TRUE(orig_params != new_params);
new_params.preferred_address = CreateFakePreferredAddress();
EXPECT_EQ(orig_params, new_params);
+ EXPECT_TRUE(orig_params == new_params);
+ EXPECT_FALSE(orig_params != new_params);
// Test comparison on CryptoHandshakeMessage.
orig_params.google_quic_params = std::make_unique<CryptoHandshakeMessage>();
@@ -169,14 +182,20 @@
orig_params.google_quic_params->SetStringPiece(42, kTestString);
const uint32_t kTestValue = 12;
orig_params.google_quic_params->SetValue(1337, kTestValue);
+ EXPECT_NE(orig_params, new_params);
EXPECT_FALSE(orig_params == new_params);
+ EXPECT_TRUE(orig_params != new_params);
new_params.google_quic_params = std::make_unique<CryptoHandshakeMessage>();
new_params.google_quic_params->SetStringPiece(42, kTestString);
new_params.google_quic_params->SetValue(1337, kTestValue + 1);
+ EXPECT_NE(orig_params, new_params);
EXPECT_FALSE(orig_params == new_params);
+ EXPECT_TRUE(orig_params != new_params);
new_params.google_quic_params->SetValue(1337, kTestValue);
EXPECT_EQ(orig_params, new_params);
+ EXPECT_TRUE(orig_params == new_params);
+ EXPECT_FALSE(orig_params != new_params);
// Test comparison on CustomMap
orig_params.custom_parameters[kCustomParameter1] = kCustomParameter1Value;
@@ -185,6 +204,8 @@
new_params.custom_parameters[kCustomParameter2] = kCustomParameter2Value;
new_params.custom_parameters[kCustomParameter1] = kCustomParameter1Value;
EXPECT_EQ(orig_params, new_params);
+ EXPECT_TRUE(orig_params == new_params);
+ EXPECT_FALSE(orig_params != new_params);
}
TEST_P(TransportParametersTest, CopyConstructor) {