|
1 | | -#include <gtest/gtest.h> |
| 1 | +#include <numeric> |
2 | 2 |
|
3 | 3 | #include "gtest_setup.hpp" |
| 4 | +#include <gtest/gtest.h> |
4 | 5 |
|
5 | 6 | namespace { |
6 | 7 | // 23.3.14.5 Modifiers [inplace.vector.modifiers] |
@@ -581,8 +582,41 @@ TYPED_TEST(Modifiers, TryAppendRanges) { |
581 | 582 | // elements in the range begin() + [0, n) are not modified, and elements in |
582 | 583 | // the range begin() + [n, n + k) correspond to the inserted elements. |
583 | 584 |
|
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(); |
586 | 620 | } |
587 | 621 |
|
588 | 622 | TYPED_TEST(Modifiers, UncheckedEmplacedBack) { |
|
0 commit comments