mirror of
https://github.com/boostorg/stl_interfaces.git
synced 2026-01-19 04:42:12 +00:00
Add data() tests to {v2_,}static_vec; v2 versions are disabled.
This commit is contained in:
@@ -979,15 +979,15 @@ namespace boost { namespace stl_interfaces { namespace v2 {
|
||||
return ranges::begin(derived()) == ranges::end(derived());
|
||||
}
|
||||
|
||||
#if 0 // TODO: Needs tests (and so does v1::container_interface's data().
|
||||
#if 0 // TODO: Needs tests.
|
||||
constexpr auto data() requires ranges::contiguous_iterator<ranges::iterator_t<Derived>> {
|
||||
return &*ranges::begin(derived());
|
||||
}
|
||||
constexpr auto data() const
|
||||
requires ranges::range<const Derived> &&
|
||||
ranges::contiguous_iterator<ranges::iterator_t<const Derived>> {
|
||||
return &*ranges::begin(derived());
|
||||
}
|
||||
template<ranges::range Container = const Derived>
|
||||
constexpr auto data() const
|
||||
requires ranges::contiguous_iterator<ranges::iterator_t<Container>> {
|
||||
return &*ranges::begin(derived());
|
||||
}
|
||||
#endif
|
||||
|
||||
constexpr auto size() requires v2_dtl::szd_sent_fwd_rng<Derived> {
|
||||
@@ -1215,6 +1215,8 @@ namespace boost { namespace stl_interfaces { namespace v2 {
|
||||
return lhs.swap(rhs);
|
||||
}
|
||||
|
||||
// TODO: We can always provide op== and op<!
|
||||
|
||||
#if 201711L <= __cpp_lib_three_way_comparison
|
||||
friend constexpr std::strong_ordering operator<=>(const Derived& lhs,
|
||||
const Derived& rhs) {
|
||||
|
||||
@@ -692,10 +692,13 @@ TEST(static_vec, front_back)
|
||||
}
|
||||
}
|
||||
|
||||
TEST(static_vec, index_at)
|
||||
TEST(static_vec, data_index_at)
|
||||
{
|
||||
{
|
||||
vec_type v = {3, 2, 1};
|
||||
EXPECT_EQ(v.data()[0], 3);
|
||||
EXPECT_EQ(v.data()[1], 2);
|
||||
EXPECT_EQ(v.data()[2], 1);
|
||||
EXPECT_EQ(v[0], 3);
|
||||
EXPECT_EQ(v[1], 2);
|
||||
EXPECT_EQ(v[2], 1);
|
||||
@@ -704,6 +707,7 @@ TEST(static_vec, index_at)
|
||||
EXPECT_NO_THROW(v.at(2));
|
||||
EXPECT_THROW(v.at(3), std::out_of_range);
|
||||
|
||||
static_assert(std::is_same<decltype(v.data()), int *>::value, "");
|
||||
static_assert(std::is_same<decltype(v[0]), int &>::value, "");
|
||||
static_assert(std::is_same<decltype(v.at(0)), int &>::value, "");
|
||||
|
||||
@@ -714,6 +718,9 @@ TEST(static_vec, index_at)
|
||||
|
||||
{
|
||||
vec_type const v = {3, 2, 1};
|
||||
EXPECT_EQ(v.data()[0], 3);
|
||||
EXPECT_EQ(v.data()[1], 2);
|
||||
EXPECT_EQ(v.data()[2], 1);
|
||||
EXPECT_EQ(v[0], 3);
|
||||
EXPECT_EQ(v[1], 2);
|
||||
EXPECT_EQ(v[2], 1);
|
||||
@@ -722,6 +729,7 @@ TEST(static_vec, index_at)
|
||||
EXPECT_NO_THROW(v.at(2));
|
||||
EXPECT_THROW(v.at(3), std::out_of_range);
|
||||
|
||||
static_assert(std::is_same<decltype(v.data()), int const *>::value, "");
|
||||
static_assert(std::is_same<decltype(v[0]), int const &>::value, "");
|
||||
static_assert(std::is_same<decltype(v.at(0)), int const &>::value, "");
|
||||
}
|
||||
|
||||
@@ -707,10 +707,14 @@ TEST(static_vec, front_back)
|
||||
}
|
||||
}
|
||||
|
||||
TEST(static_vec, index_at)
|
||||
TEST(static_vec, data_index_at)
|
||||
{
|
||||
{
|
||||
// TODO: Enable these tests, once v2::container_interface::data() is fixed.
|
||||
vec_type v = {3, 2, 1};
|
||||
// EXPECT_EQ(v.data()[0], 3);
|
||||
// EXPECT_EQ(v.data()[1], 2);
|
||||
// EXPECT_EQ(v.data()[2], 1);
|
||||
EXPECT_EQ(v[0], 3);
|
||||
EXPECT_EQ(v[1], 2);
|
||||
EXPECT_EQ(v[2], 1);
|
||||
@@ -719,6 +723,7 @@ TEST(static_vec, index_at)
|
||||
EXPECT_NO_THROW(v.at(2));
|
||||
EXPECT_THROW(v.at(3), std::out_of_range);
|
||||
|
||||
// static_assert(std::is_same<decltype(v.data()), int *>::value, "");
|
||||
static_assert(std::is_same<decltype(v[0]), int &>::value, "");
|
||||
static_assert(std::is_same<decltype(v.at(0)), int &>::value, "");
|
||||
|
||||
@@ -729,6 +734,9 @@ TEST(static_vec, index_at)
|
||||
|
||||
{
|
||||
vec_type const v = {3, 2, 1};
|
||||
// EXPECT_EQ(v.data()[0], 3);
|
||||
// EXPECT_EQ(v.data()[1], 2);
|
||||
// EXPECT_EQ(v.data()[2], 1);
|
||||
EXPECT_EQ(v[0], 3);
|
||||
EXPECT_EQ(v[1], 2);
|
||||
EXPECT_EQ(v[2], 1);
|
||||
@@ -737,6 +745,7 @@ TEST(static_vec, index_at)
|
||||
EXPECT_NO_THROW(v.at(2));
|
||||
EXPECT_THROW(v.at(3), std::out_of_range);
|
||||
|
||||
// static_assert(std::is_same<decltype(v.data()), int const *>::value, "");
|
||||
static_assert(std::is_same<decltype(v[0]), int const &>::value, "");
|
||||
static_assert(std::is_same<decltype(v.at(0)), int const &>::value, "");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user