BLI: fix Map.foreach_item method

This commit is contained in:
Jacques Lucke 2020-06-16 12:16:07 +02:00
parent d2587f6f93
commit 38c9573b23
2 changed files with 20 additions and 1 deletions

View File

@ -641,7 +641,7 @@ class Map {
*/
template<typename FuncT> void foreach_item(const FuncT &func) const
{
uint32_t size = this->size();
uint32_t size = m_slots.size();
for (uint32_t i = 0; i < size; i++) {
const Slot &slot = m_slots[i];
if (slot.is_occupied()) {

View File

@ -458,6 +458,25 @@ TEST(map, ConstKeysAndValues)
EXPECT_FALSE(map.contains("54"));
}
TEST(map, ForeachItem)
{
Map<int, int> map;
map.add(3, 4);
map.add(1, 8);
Vector<int> keys;
Vector<int> values;
map.foreach_item([&](int key, int value) {
keys.append(key);
values.append(value);
});
EXPECT_EQ(keys.size(), 2);
EXPECT_EQ(values.size(), 2);
EXPECT_EQ(keys.first_index_of(3), values.first_index_of(4));
EXPECT_EQ(keys.first_index_of(1), values.first_index_of(8));
}
/**
* Set this to 1 to activate the benchmark. It is disabled by default, because it prints a lot.
*/