diff --git a/test/test_unordered_multimap.cpp b/test/test_unordered_multimap.cpp index f0d1a2eb..7c33dc34 100644 --- a/test/test_unordered_multimap.cpp +++ b/test/test_unordered_multimap.cpp @@ -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 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 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]); + } }; } diff --git a/test/test_unordered_set.cpp b/test/test_unordered_set.cpp index 69150180..4ef47cd7 100644 --- a/test/test_unordered_set.cpp +++ b/test/test_unordered_set.cpp @@ -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 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 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]); + } }; }