From 7709950111857fcdd94a237d65aeb5bd6bddb8f9 Mon Sep 17 00:00:00 2001 From: Christian Mazakas Date: Tue, 15 Nov 2022 09:52:37 -0800 Subject: [PATCH] Add transparent insert_or_assign() tests --- test/unordered/transparent_tests.cpp | 85 ++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/test/unordered/transparent_tests.cpp b/test/unordered/transparent_tests.cpp index 8d74fc2a..9de531ae 100644 --- a/test/unordered/transparent_tests.cpp +++ b/test/unordered/transparent_tests.cpp @@ -1555,6 +1555,87 @@ template void test_map_non_transparent_try_emplace() BOOST_TEST(p == map.find(5)); } +template void test_map_transparent_insert_or_assign() +{ + count_reset(); + + typedef typename UnorderedMap::iterator iterator; + + UnorderedMap map; + + map.insert(std::make_pair(0, 1337)); + map.insert(std::make_pair(1, 1338)); + map.insert(std::make_pair(2, 1339)); + map.insert(std::make_pair(0, 1340)); + map.insert(std::make_pair(0, 1341)); + map.insert(std::make_pair(0, 1342)); + + int key_count = key::count_; + + std::pair r = map.insert_or_assign(0, 7331); + BOOST_TEST(r.first == map.find(0)); + BOOST_TEST_EQ(r.first->second, 7331); + BOOST_TEST_NOT(r.second); + BOOST_TEST_EQ(key::count_, key_count); + + r = map.insert_or_assign(4, 7331); + BOOST_TEST(r.first == map.find(4)); + BOOST_TEST(r.second); + BOOST_TEST_EQ(key::count_, key_count + 1); + + key_count = key::count_; + + iterator p = map.insert_or_assign(map.cbegin(), 0, 1111); + BOOST_TEST(p == map.find(0)); + BOOST_TEST_EQ(p->second, 1111); + BOOST_TEST_EQ(key::count_, key_count); + + p = map.insert_or_assign(map.begin(), 5, 7331); + BOOST_TEST(p == map.find(5)); + BOOST_TEST_EQ(key::count_, key_count + 1); +} + +template void test_map_non_transparent_insert_or_assign() +{ + count_reset(); + + typedef typename UnorderedMap::iterator iterator; + + UnorderedMap map; + + map.insert(std::make_pair(0, 1337)); + map.insert(std::make_pair(1, 1338)); + map.insert(std::make_pair(2, 1339)); + map.insert(std::make_pair(0, 1340)); + map.insert(std::make_pair(0, 1341)); + map.insert(std::make_pair(0, 1342)); + + int key_count = key::count_; + + std::pair r = map.insert_or_assign(0, 7331); + BOOST_TEST_EQ(key::count_, key_count + 1); + BOOST_TEST(r.first == map.find(0)); + BOOST_TEST_EQ(r.first->second, 7331); + BOOST_TEST_NOT(r.second); + + key_count = key::count_; + r = map.insert_or_assign(4, 7331); + BOOST_TEST_EQ(key::count_, key_count + 2); + BOOST_TEST(r.first == map.find(4)); + BOOST_TEST(r.second); + + key_count = key::count_; + iterator p = map.insert_or_assign(map.cbegin(), 0, 1111); + BOOST_TEST_EQ(key::count_, key_count + 1); + BOOST_TEST(p == map.find(0)); + BOOST_TEST_EQ(p->second, 1111); + + key_count = key::count_; + p = map.insert_or_assign(map.begin(), 5, 7331); + BOOST_TEST_EQ(key::count_, key_count + 2); + BOOST_TEST(p == map.find(5)); +} + #ifndef BOOST_UNORDERED_FOA_TESTS transparent_unordered_set::node_type set_extract_overload_compile_test() { @@ -1724,6 +1805,7 @@ void test_unordered_map() test_map_transparent_erase(); test_map_transparent_extract(); test_map_transparent_try_emplace(); + test_map_transparent_insert_or_assign(); } { @@ -1737,6 +1819,7 @@ void test_unordered_map() test_map_non_transparent_erase(); test_map_non_transparent_extract(); test_map_non_transparent_try_emplace(); + test_map_non_transparent_insert_or_assign(); } { @@ -1751,6 +1834,7 @@ void test_unordered_map() test_map_non_transparent_erase(); test_map_non_transparent_extract(); test_map_non_transparent_try_emplace(); + test_map_non_transparent_insert_or_assign(); } { @@ -1765,6 +1849,7 @@ void test_unordered_map() test_map_non_transparent_erase(); test_map_non_transparent_extract(); test_map_non_transparent_try_emplace(); + test_map_non_transparent_insert_or_assign(); } }