From a93073c2b406d714d243006234de56946adcaacc Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Thu, 26 Mar 2015 20:00:04 +0300 Subject: [PATCH] One more insert method for buffer_vector. --- base/base_tests/buffer_vector_test.cpp | 30 ++++++++++++++++++++++++++ base/buffer_vector.hpp | 5 +++++ 2 files changed, 35 insertions(+) diff --git a/base/base_tests/buffer_vector_test.cpp b/base/base_tests/buffer_vector_test.cpp index cf1407f203..4d43fac388 100644 --- a/base/base_tests/buffer_vector_test.cpp +++ b/base/base_tests/buffer_vector_test.cpp @@ -164,6 +164,36 @@ UNIT_TEST(BufferVectorInsert) } } +UNIT_TEST(BufferVectorInsertSingleValue) +{ + buffer_vector v; + v.insert(v.end(), 'x'); + TEST_EQUAL(v.size(), 1, ()); + TEST_EQUAL(v[0], 'x', ()); + + v.insert(v.begin(), 'y'); + TEST_EQUAL(v.size(), 2, ()); + TEST_EQUAL(v[0], 'y', ()); + TEST_EQUAL(v[1], 'x', ()); + + v.insert(v.begin() + 1, 'z'); + TEST_EQUAL(v.size(), 3, ()); + TEST_EQUAL(v[0], 'y', ()); + TEST_EQUAL(v[1], 'z', ()); + TEST_EQUAL(v[2], 'x', ()); + // Switch to dynamic. + v.insert(v.begin() + 1, 'q'); + TEST_EQUAL(v.size(), 4, ()); + TEST_EQUAL(v[0], 'y', ()); + TEST_EQUAL(v[1], 'q', ()); + TEST_EQUAL(v[2], 'z', ()); + TEST_EQUAL(v[3], 'x', ()); + + v.insert(v.end() - 1, 'c'); + TEST_EQUAL(v[3], 'c', ()); + TEST_EQUAL(v[4], 'x', ()); +} + UNIT_TEST(BufferVectorAppend) { for (size_t initialLength = 0; initialLength < 20; ++initialLength) diff --git a/base/buffer_vector.hpp b/base/buffer_vector.hpp index d33cb825df..a9d8d9664d 100644 --- a/base/buffer_vector.hpp +++ b/base/buffer_vector.hpp @@ -368,6 +368,11 @@ public: } } + inline void insert(const_iterator where, value_type const & value) + { + insert(where, &value, &value + 1); + } + private: void SwitchToDynamic() {