summaryrefslogtreecommitdiff
path: root/absl/container/internal/raw_hash_set_test.cc
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/raw_hash_set_test.cc
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/raw_hash_set_test.cc')
-rw-r--r--absl/container/internal/raw_hash_set_test.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/absl/container/internal/raw_hash_set_test.cc b/absl/container/internal/raw_hash_set_test.cc
index 7dac65a0..af882ef4 100644
--- a/absl/container/internal/raw_hash_set_test.cc
+++ b/absl/container/internal/raw_hash_set_test.cc
@@ -541,6 +541,37 @@ TEST(Table, InsertCollisionAndFindAfterDelete) {
EXPECT_TRUE(t.empty());
}
+TEST(Table, InsertWithinCapacity) {
+ IntTable t;
+ t.reserve(10);
+ const size_t original_capacity = t.capacity();
+ const auto addr = [&](int i) {
+ return reinterpret_cast<uintptr_t>(&*t.find(i));
+ };
+ // Inserting an element does not change capacity.
+ t.insert(0);
+ EXPECT_THAT(t.capacity(), original_capacity);
+ const uintptr_t original_addr_0 = addr(0);
+ // Inserting another element does not rehash.
+ t.insert(1);
+ EXPECT_THAT(t.capacity(), original_capacity);
+ EXPECT_THAT(addr(0), original_addr_0);
+ // Inserting lots of duplicate elements does not rehash.
+ for (int i = 0; i < 100; ++i) {
+ t.insert(i % 10);
+ }
+ EXPECT_THAT(t.capacity(), original_capacity);
+ EXPECT_THAT(addr(0), original_addr_0);
+ // Inserting a range of duplicate elements does not rehash.
+ std::vector<int> dup_range;
+ for (int i = 0; i < 100; ++i) {
+ dup_range.push_back(i % 10);
+ }
+ t.insert(dup_range.begin(), dup_range.end());
+ EXPECT_THAT(t.capacity(), original_capacity);
+ EXPECT_THAT(addr(0), original_addr_0);
+}
+
TEST(Table, LazyEmplace) {
StringTable t;
bool called = false;