mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Fix for unordered_multimap, unordered_set and unordered_multiset insert and erase bug.
This commit is contained in:
parent
25ecc38700
commit
b5b480c051
@ -614,5 +614,35 @@ namespace
|
||||
data.assign(initial_data.begin(), initial_data.end());
|
||||
CHECK_CLOSE(2.0, data.load_factor(), 0.01);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_and_erase_bug)
|
||||
{
|
||||
etl::unordered_multimap<uint32_t, char, 5> map;
|
||||
|
||||
map.insert(std::make_pair(1, 'b'));
|
||||
map.insert(std::make_pair(2, 'c'));
|
||||
map.insert(std::make_pair(3, 'd'));
|
||||
map.insert(std::make_pair(4, 'e'));
|
||||
|
||||
auto it = map.find(1);
|
||||
map.erase(it);
|
||||
|
||||
it = map.find(4);
|
||||
map.erase(it);
|
||||
|
||||
std::vector<std::string> s;
|
||||
|
||||
for (const auto &kv : map)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "map[" << kv.first << "] = " << kv.second;
|
||||
s.push_back(ss.str());
|
||||
}
|
||||
|
||||
CHECK_EQUAL(2, s.size());
|
||||
CHECK_EQUAL("map[2] = c", s[0]);
|
||||
CHECK_EQUAL("map[3] = d", s[1]);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -453,5 +453,35 @@ namespace
|
||||
data.assign(initial_data.begin(), initial_data.end());
|
||||
CHECK_CLOSE(2.0, data.load_factor(), 0.01);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_insert_and_erase_bug)
|
||||
{
|
||||
etl::unordered_set<uint32_t, 5> set;
|
||||
|
||||
set.insert(1);
|
||||
set.insert(2);
|
||||
set.insert(3);
|
||||
set.insert(4);
|
||||
|
||||
auto it = set.find(1);
|
||||
set.erase(it);
|
||||
|
||||
it = set.find(4);
|
||||
set.erase(it);
|
||||
|
||||
std::vector<std::string> s;
|
||||
|
||||
for (const auto &kv : set)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "set" << " = " << kv;
|
||||
s.push_back(ss.str());
|
||||
}
|
||||
|
||||
CHECK_EQUAL(2, s.size());
|
||||
CHECK_EQUAL("set = 2", s[0]);
|
||||
CHECK_EQUAL("set = 3", s[1]);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user