Skip to content

Commit d47a221

Browse files
kalenikaliaksandrawesomekling
authored andcommitted
AK: Define operator== for HashMap
1 parent 62e5216 commit d47a221

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

AK/HashMap.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,27 @@ class HashMap {
322322
return hash_map_clone;
323323
}
324324

325+
bool operator==(HashMap const& other) const
326+
{
327+
if (size() != other.size())
328+
return false;
329+
if (is_empty())
330+
return true;
331+
for (auto const& [key, value] : *this) {
332+
auto it = other.find(key);
333+
if (it == other.end())
334+
return false;
335+
if (!ValueTraits::equals(value, it->value))
336+
return false;
337+
}
338+
return true;
339+
}
340+
341+
bool operator!=(HashMap const& other) const
342+
{
343+
return !(*this == other);
344+
}
345+
325346
private:
326347
HashTableType m_table;
327348
};

Tests/AK/TestHashMap.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,3 +353,18 @@ TEST_CASE(update)
353353
second.update(first);
354354
EXPECT_EQ(4u, second.size());
355355
}
356+
357+
TEST_CASE(compare)
358+
{
359+
HashMap<int, int> first;
360+
HashMap<int, int> second;
361+
362+
EXPECT_EQ(first, second);
363+
364+
first.set(1, 10);
365+
second.set(1, 10);
366+
EXPECT_EQ(first, second);
367+
368+
first.set(2, 20);
369+
EXPECT_NE(second, first);
370+
}

0 commit comments

Comments
 (0)