git-subtree-dir: third_party/unordered_dense git-subtree-split: 231e48c9426bd21c273669e5fdcd042c146975cf
33 lines
1.0 KiB
C++
33 lines
1.0 KiB
C++
#include <ankerl/unordered_dense.h>
|
|
|
|
#include <app/counter.h>
|
|
#include <app/doctest.h>
|
|
#include <third-party/nanobench.h>
|
|
|
|
#include <cstddef> // for size_t
|
|
#include <vector> // for vector
|
|
|
|
TEST_CASE_MAP("erase_range", counter::obj, counter::obj) {
|
|
int const num_elements = 10;
|
|
|
|
for (int first_pos = 0; first_pos <= num_elements; ++first_pos) {
|
|
for (int last_pos = first_pos; last_pos <= num_elements; ++last_pos) {
|
|
auto counts = counter();
|
|
INFO(counts);
|
|
|
|
auto map = map_t();
|
|
|
|
for (size_t i = 0; i < num_elements; ++i) {
|
|
auto key = i;
|
|
auto val = i * 1000;
|
|
map.try_emplace({key, counts}, val, counts);
|
|
}
|
|
REQUIRE(map.size() == num_elements);
|
|
|
|
auto it_ret = map.erase(map.cbegin() + first_pos, map.cbegin() + last_pos);
|
|
REQUIRE(map.size() == static_cast<size_t>(num_elements - (last_pos - first_pos)));
|
|
REQUIRE(it_ret == map.begin() + first_pos);
|
|
}
|
|
}
|
|
}
|