Skip to content

Commit 829d1ff

Browse files
committed
Add tests for try_append_range
1 parent 640db7d commit 829d1ff

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

tests/beman/inplace_vector/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ add_gtest(compare)
4141
add_gtest(constructors)
4242
add_gtest(size_n_data)
4343
add_gtest(erasure)
44+
add_gtest(modifiers)
4445

4546
# constexpr test
4647
add_executable(beman.inplace_vector.tests.constexpr constexpr.test.cpp)

tests/beman/inplace_vector/modifiers.test.cpp

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
#include <gtest/gtest.h>
1+
#include <numeric>
22

33
#include "gtest_setup.hpp"
4+
#include <gtest/gtest.h>
45

56
namespace {
67
// 23.3.14.5 Modifiers [inplace.vector.modifiers]
@@ -581,8 +582,41 @@ TYPED_TEST(Modifiers, TryAppendRanges) {
581582
// elements in the range begin() + [0, n) are not modified, and elements in
582583
// the range begin() + [n, n + k) correspond to the inserted elements.
583584

584-
// TODO
585-
GTEST_SKIP();
585+
using IV = TestFixture::IV;
586+
using T = TestFixture::T;
587+
using size_type = IV::size_type;
588+
589+
IV device;
590+
auto reference = this->unique();
591+
592+
device.try_append_range(reference | std::views::take(0));
593+
EXPECT_EQ(device, IV());
594+
device.clear();
595+
596+
EXPECT_EQ(device.try_append_range(reference), reference.end());
597+
EXPECT_EQ(device, reference);
598+
EXPECT_EQ(device.try_append_range(reference), reference.begin());
599+
device.clear();
600+
601+
auto range = std::array<T, IV::capacity() + 1>{};
602+
std::copy_n(reference.begin(), IV::capacity(), range.begin());
603+
EXPECT_EQ(device.try_append_range(range), range.end() - 1);
604+
EXPECT_EQ(device, reference);
605+
device.clear();
606+
607+
auto half_size = std::midpoint(size_type(0), reference.size());
608+
EXPECT_EQ(device.try_append_range(reference | std::views::take(half_size)),
609+
reference.begin() + half_size);
610+
EXPECT_EQ(device.try_append_range(reference | std::views::drop(half_size)),
611+
reference.end());
612+
EXPECT_EQ(device, reference);
613+
614+
device.clear();
615+
616+
EXPECT_EQ(device.try_append_range(reference | std::views::drop(half_size)),
617+
reference.end());
618+
EXPECT_EQ(device.try_append_range(reference), reference.begin() + half_size);
619+
device.clear();
586620
}
587621

588622
TYPED_TEST(Modifiers, UncheckedEmplacedBack) {

0 commit comments

Comments
 (0)