Use lexicographical comparison in ESM3ExteriorCellRefId::operator<

depth-refraction
elsid 2 years ago
parent 8cd5b91b4a
commit bd10becb65
No known key found for this signature in database
GPG Key ID: 4DE04C198CBA7625

@ -212,6 +212,14 @@ namespace ESM
EXPECT_NE(hash(a), hash(b));
}
TEST(ESMRefIdTest, esm3ExteriorCellHasLexicographicalOrder)
{
const RefId a = RefId::esm3ExteriorCell(0, 0);
const RefId b = RefId::esm3ExteriorCell(1, 0);
EXPECT_LT(a, b);
EXPECT_TRUE(!(b < a));
}
struct ESMRefIdToStringTest : TestWithParam<std::pair<RefId, std::string>>
{
};

@ -28,9 +28,14 @@ namespace ESM
int32_t getX() const { return mX; }
int32_t getY() const { return mY; }
constexpr bool operator==(ESM3ExteriorCellRefId rhs) const noexcept { return mX == rhs.mX && mY == rhs.mY; }
friend inline constexpr auto tie(const ESM3ExteriorCellRefId& value) noexcept
{
return std::tie(value.mX, value.mY);
}
constexpr bool operator==(ESM3ExteriorCellRefId rhs) const noexcept { return tie(*this) == tie(rhs); }
constexpr bool operator<(ESM3ExteriorCellRefId rhs) const noexcept { return mX < rhs.mX && mY < rhs.mY; }
constexpr bool operator<(ESM3ExteriorCellRefId rhs) const noexcept { return tie(*this) < tie(rhs); }
friend std::ostream& operator<<(std::ostream& stream, ESM3ExteriorCellRefId value);

Loading…
Cancel
Save