Summary:
- The EXPECT_EQ(vec.capacity(), vec2.capacity()) check is implicitly
testing how the platform's malloc() and malloc_usable_size()
implementations interact. We know that small_vector will attempt to
allocate storage for 3 elements via malloc(), but the small_vector
implementation then uses malloc_usable_size() to determine capacity,
which can return more than the size requested by malloc(). As a
result, capacity may grow more than expected depending on how the
malloc implementation works.
Test Plan:
- fbconfig -r folly && fbmake runtests
- ./configure && make check on Ubuntu/FC/Mac
Reviewed By: alandau@fb.com
FB internal diff:
D1008922
EXPECT_EQ(vec2.size(), 3);
EXPECT_GT(vec2.capacity(), 2);
- // Both have grown by the minimum amount
- EXPECT_EQ(vec.capacity(), vec2.capacity());
-
// Test capacity heapifying logic
folly::small_vector<unsigned char, 1> vec3;
const size_t hc_size = 1000000;