Skip to content

Commit

Permalink
Adding size assertion .flat(i) + adding a few tests on size assertions
Browse files Browse the repository at this point in the history
  • Loading branch information
tdegeus committed Mar 15, 2022
1 parent 0f6f58a commit 4b3dfd1
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 1 deletion.
2 changes: 2 additions & 0 deletions include/xtensor/xcontainer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -651,12 +651,14 @@ namespace xt
template <class D>
inline auto xcontainer<D>::flat(size_type i) -> reference
{
XTENSOR_ASSERT(i < size());
return storage()[i];
}

template <class D>
inline auto xcontainer<D>::flat(size_type i) const -> const_reference
{
XTENSOR_ASSERT(i < size());
return storage()[i];
}

Expand Down
21 changes: 20 additions & 1 deletion test/test_xarray.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,19 @@ namespace xt
EXPECT_EQ(a.layout(), c.layout());
}

TEST(xarray, operator_brace)
{
#ifdef XTENSOR_ENABLE_ASSERT
xt::xarray<size_t> a = {{0,1,2}, {3,4,5}};
EXPECT_THROW(a(2, 0), std::runtime_error);
EXPECT_THROW(a(0, 3), std::runtime_error);

xt::xarray<size_t> b = {{0,1,2}};
EXPECT_THROW(a(0, 3), std::runtime_error);
EXPECT_THROW(a(1, 3), std::runtime_error);
#endif
}

TEST(xarray, periodic)
{
xt::xarray<size_t> a = {{0,1,2}, {3,4,5}};
Expand All @@ -336,7 +349,7 @@ namespace xt
EXPECT_EQ(a.back(), 6);
}

TEST(xarray, flat)
TEST(xarray, flat)
{
{
xt::xarray<size_t, xt::layout_type::row_major> a = {{0,1,2}, {3,4,5}};
Expand All @@ -345,6 +358,9 @@ namespace xt
a.flat(4) = 40;
a.flat(5) = 50;
EXPECT_EQ(a, b);
#ifdef XTENSOR_ENABLE_ASSERT
EXPECT_THROW(a.flat(6), std::runtime_error);
#endif
}
{
xt::xarray<size_t, xt::layout_type::column_major> a = {{0,1,2}, {3,4,5}};
Expand All @@ -353,6 +369,9 @@ namespace xt
a.flat(3) = 40;
a.flat(5) = 50;
EXPECT_EQ(a, b);
#ifdef XTENSOR_ENABLE_ASSERT
EXPECT_THROW(a.flat(6), std::runtime_error);
#endif
}
}

Expand Down
19 changes: 19 additions & 0 deletions test/test_xtensor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,19 @@ namespace xt
EXPECT_TRUE(idx==jdx);
}

TEST(xarray, operator_brace)
{
#ifdef XTENSOR_ENABLE_ASSERT
xt::xtensor<size_t, 2> a = {{0,1,2}, {3,4,5}};
EXPECT_THROW(a(2, 0), std::runtime_error);
EXPECT_THROW(a(0, 3), std::runtime_error);

xt::xtensor<size_t, 2> b = {{0,1,2}};
EXPECT_THROW(a(0, 3), std::runtime_error);
EXPECT_THROW(a(1, 3), std::runtime_error);
#endif
}

TEST(xtensor, periodic)
{
xt::xtensor<size_t,2> a = {{0,1,2}, {3,4,5}};
Expand All @@ -389,6 +402,9 @@ namespace xt
a.flat(4) = 40;
a.flat(5) = 50;
EXPECT_EQ(a, b);
#ifdef XTENSOR_ENABLE_ASSERT
EXPECT_THROW(a.flat(6), std::runtime_error);
#endif
}
{
xt::xtensor<size_t, 2, xt::layout_type::column_major> a = {{0,1,2}, {3,4,5}};
Expand All @@ -397,6 +413,9 @@ namespace xt
a.flat(3) = 40;
a.flat(5) = 50;
EXPECT_EQ(a, b);
#ifdef XTENSOR_ENABLE_ASSERT
EXPECT_THROW(a.flat(6), std::runtime_error);
#endif
}
}

Expand Down

0 comments on commit 4b3dfd1

Please sign in to comment.