diff --git a/sdk/core/azure-core/inc/azure/core/uuid.hpp b/sdk/core/azure-core/inc/azure/core/uuid.hpp index 756aa60a2..673bdaf2c 100644 --- a/sdk/core/azure-core/inc/azure/core/uuid.hpp +++ b/sdk/core/azure-core/inc/azure/core/uuid.hpp @@ -79,12 +79,15 @@ namespace Azure { namespace Core { */ constexpr bool operator==(Uuid const& other) const { - // std::array::operator==() is not a constexpr until C++20 - for (size_t i = 0; i < m_uuid.size(); ++i) + if (this != &other) { - if (m_uuid[i] != other.m_uuid[i]) + // std::array::operator==() is not a constexpr until C++20 + for (size_t i = 0; i < m_uuid.size(); ++i) { - return false; + if (m_uuid[i] != other.m_uuid[i]) + { + return false; + } } } diff --git a/sdk/core/azure-core/test/ut/uuid_test.cpp b/sdk/core/azure-core/test/ut/uuid_test.cpp index 239725e21..162472c2f 100644 --- a/sdk/core/azure-core/test/ut/uuid_test.cpp +++ b/sdk/core/azure-core/test/ut/uuid_test.cpp @@ -205,3 +205,60 @@ TEST(Uuid, parse) // Just a string of text ASSERT_THROW(Uuid::Parse("The quick brown fox jumps over the lazy dog."), std::invalid_argument); } + +TEST(Uuid, equality) +{ + { + Uuid const a; + EXPECT_TRUE(a == a); + EXPECT_FALSE(a != a); + } + + { + Uuid const a = Uuid::Parse("00000000-0000-0000-0000-000000000000"); + EXPECT_TRUE(a == a); + EXPECT_FALSE(a != a); + } + + { + Uuid const a = Uuid::Parse("00112233-4455-6677-8899-aabbccddeeff"); + EXPECT_TRUE(a == a); + EXPECT_FALSE(a != a); + } + + { + Uuid const a; + Uuid const b; + EXPECT_TRUE(a == b); + EXPECT_TRUE(b == a); + EXPECT_FALSE(a != b); + EXPECT_FALSE(b != a); + } + + { + Uuid const a; + Uuid const b = Uuid::Parse("00000000-0000-0000-0000-000000000000"); + EXPECT_TRUE(a == b); + EXPECT_TRUE(b == a); + EXPECT_FALSE(a != b); + EXPECT_FALSE(b != a); + } + + { + Uuid const a; + Uuid const b = Uuid::Parse("00112233-4455-6677-8899-aabbccddeeff"); + EXPECT_FALSE(a == b); + EXPECT_FALSE(b == a); + EXPECT_TRUE(a != b); + EXPECT_TRUE(b != a); + } + + { + Uuid const a = Uuid::Parse("ffeeddcc-bbaa-9988-7766-554433221100"); + Uuid const b = Uuid::Parse("00112233-4455-6677-8899-aabbccddeeff"); + EXPECT_FALSE(a == b); + EXPECT_FALSE(b == a); + EXPECT_TRUE(a != b); + EXPECT_TRUE(b != a); + } +}