summaryrefslogtreecommitdiff
path: root/absl/container/internal/unordered_map_modifiers_test.h
diff options
context:
space:
mode:
authorGravatar Abseil Team <absl-team@google.com>2021-06-03 14:05:41 -0700
committerGravatar Derek Mauro <dmauro@google.com>2021-06-03 17:21:06 -0400
commit17c954d90d5661e27db8fc5f086085690a8372d9 (patch)
tree93f5b42538e0612ee3700076fe6f4dbaa68b0bd1 /absl/container/internal/unordered_map_modifiers_test.h
parented53ad03abd7baf39dda2ac8037ff3d4f5c533e5 (diff)
Export of internal Abseil changes
-- 066144400e12616f6771e512427bcd98aa203455 by Abseil Team <absl-team@google.com>: Internal comment cleanup. PiperOrigin-RevId: 377368470 -- 3ba56d263bd90a9797d12b5ce29edce3fa65917c by Abseil Team <absl-team@google.com>: Add tests for hash table capacity being unchanged by insert. PiperOrigin-RevId: 377303140 GitOrigin-RevId: 066144400e12616f6771e512427bcd98aa203455 Change-Id: I2edf14b412e45a2ad490dcf9f06e009c12a60e3e
Diffstat (limited to 'absl/container/internal/unordered_map_modifiers_test.h')
-rw-r--r--absl/container/internal/unordered_map_modifiers_test.h39
1 files changed, 36 insertions, 3 deletions
diff --git a/absl/container/internal/unordered_map_modifiers_test.h b/absl/container/internal/unordered_map_modifiers_test.h
index 8c9ca779..d3543936 100644
--- a/absl/container/internal/unordered_map_modifiers_test.h
+++ b/absl/container/internal/unordered_map_modifiers_test.h
@@ -81,6 +81,38 @@ TYPED_TEST_P(ModifiersTest, InsertRange) {
ASSERT_THAT(items(m), ::testing::UnorderedElementsAreArray(values));
}
+TYPED_TEST_P(ModifiersTest, InsertWithinCapacity) {
+ using T = hash_internal::GeneratedType<TypeParam>;
+ using V = typename TypeParam::mapped_type;
+ T val = hash_internal::Generator<T>()();
+ TypeParam m;
+ m.reserve(10);
+ const size_t original_capacity = m.bucket_count();
+ m.insert(val);
+ EXPECT_EQ(m.bucket_count(), original_capacity);
+ T val2 = {val.first, hash_internal::Generator<V>()()};
+ m.insert(val2);
+ EXPECT_EQ(m.bucket_count(), original_capacity);
+}
+
+TYPED_TEST_P(ModifiersTest, InsertRangeWithinCapacity) {
+#if !defined(__GLIBCXX__)
+ using T = hash_internal::GeneratedType<TypeParam>;
+ std::vector<T> base_values;
+ std::generate_n(std::back_inserter(base_values), 10,
+ hash_internal::Generator<T>());
+ std::vector<T> values;
+ while (values.size() != 100) {
+ std::copy_n(base_values.begin(), 10, std::back_inserter(values));
+ }
+ TypeParam m;
+ m.reserve(10);
+ const size_t original_capacity = m.bucket_count();
+ m.insert(values.begin(), values.end());
+ EXPECT_EQ(m.bucket_count(), original_capacity);
+#endif
+}
+
TYPED_TEST_P(ModifiersTest, InsertOrAssign) {
#ifdef UNORDERED_MAP_CXX17
using std::get;
@@ -266,9 +298,10 @@ TYPED_TEST_P(ModifiersTest, Swap) {
// TODO(alkis): Write tests for merge.
REGISTER_TYPED_TEST_CASE_P(ModifiersTest, Clear, Insert, InsertHint,
- InsertRange, InsertOrAssign, InsertOrAssignHint,
- Emplace, EmplaceHint, TryEmplace, TryEmplaceHint,
- Erase, EraseRange, EraseKey, Swap);
+ InsertRange, InsertWithinCapacity,
+ InsertRangeWithinCapacity, InsertOrAssign,
+ InsertOrAssignHint, Emplace, EmplaceHint, TryEmplace,
+ TryEmplaceHint, Erase, EraseRange, EraseKey, Swap);
template <typename Type>
struct is_unique_ptr : std::false_type {};