From 2e416b1b872259442fe596828b5bae61969791a7 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 7 Aug 2019 20:42:56 +0200 Subject: [PATCH] Vector: Add a test for growing a Vector beyond its inline capacity --- AK/Tests/TestVector.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/AK/Tests/TestVector.cpp b/AK/Tests/TestVector.cpp index ab619cc688..f2b084ead4 100644 --- a/AK/Tests/TestVector.cpp +++ b/AK/Tests/TestVector.cpp @@ -167,6 +167,32 @@ TEST_CASE(vector_compare) EXPECT_EQ(strings, same_strings); } +TEST_CASE(grow_past_inline_capacity) +{ + auto make_vector = [] { + Vector strings; + for (int i = 0; i < 32; ++i) { + strings.append(String::number(i)); + } + return strings; + }; + + auto strings = make_vector(); + + EXPECT_EQ(strings.size(), 32); + EXPECT_EQ(strings[31], "31"); + + strings.clear(); + EXPECT_EQ(strings.size(), 0); + EXPECT_EQ(strings.capacity(), 16); + + strings = make_vector(); + + strings.clear_with_capacity(); + EXPECT_EQ(strings.size(), 0); + EXPECT(strings.capacity() >= 32); +} + BENCHMARK_CASE(vector_append_trivial) { // This should be super fast thanks to Vector using memmove.