BLI: support == and != for Set
This makes it more convenient to check if two sets contain the same keys.
This commit is contained in:
parent
fbcddfcd68
commit
d81d743537
@ -646,6 +646,24 @@ class Set {
|
|||||||
return !Intersects(a, b);
|
return !Intersects(a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
friend bool operator==(const Set &a, const Set &b)
|
||||||
|
{
|
||||||
|
if (a.size() != b.size()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (const Key &key : a) {
|
||||||
|
if (!b.contains(key)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
friend bool operator!=(const Set &a, const Set &b)
|
||||||
|
{
|
||||||
|
return !(a == b);
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BLI_NOINLINE void realloc_and_reinsert(const int64_t min_usable_slots)
|
BLI_NOINLINE void realloc_and_reinsert(const int64_t min_usable_slots)
|
||||||
{
|
{
|
||||||
|
@ -600,6 +600,28 @@ TEST(set, RemoveUniquePtrWithRaw)
|
|||||||
EXPECT_TRUE(set.is_empty());
|
EXPECT_TRUE(set.is_empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(set, Equality)
|
||||||
|
{
|
||||||
|
const Set<int> a = {1, 2, 3, 4, 5};
|
||||||
|
const Set<int> b = {5, 2, 3, 1, 4};
|
||||||
|
const Set<int> c = {1, 2, 3};
|
||||||
|
const Set<int> d = {1, 2, 3, 4, 5, 6};
|
||||||
|
const Set<int> e = {};
|
||||||
|
const Set<int> f = {10, 11, 12, 13, 14};
|
||||||
|
|
||||||
|
EXPECT_EQ(a, a);
|
||||||
|
EXPECT_EQ(a, b);
|
||||||
|
EXPECT_EQ(b, a);
|
||||||
|
EXPECT_NE(a, c);
|
||||||
|
EXPECT_NE(a, d);
|
||||||
|
EXPECT_NE(a, e);
|
||||||
|
EXPECT_NE(a, f);
|
||||||
|
EXPECT_NE(c, a);
|
||||||
|
EXPECT_NE(d, a);
|
||||||
|
EXPECT_NE(e, a);
|
||||||
|
EXPECT_NE(f, a);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set this to 1 to activate the benchmark. It is disabled by default, because it prints a lot.
|
* Set this to 1 to activate the benchmark. It is disabled by default, because it prints a lot.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user