/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2018, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
namespace gmx
{
-template<ptrdiff_t ... E_STATIC>
+template<ptrdiff_t... E_STATIC>
class ExtentsTest
{
- public:
- using extents_type = gmx::extents<E_STATIC...>;
+public:
+ using extents_type = gmx::extents<E_STATIC...>;
- extents_type my_extents_explicit;
- extents_type my_extents_array;
- extents_type my_extents_copy;
+ extents_type my_extents_explicit;
+ extents_type my_extents_array;
+ extents_type my_extents_copy;
- ExtentsTest()
- {
- my_extents_explicit = extents<E_STATIC...>();
- my_extents_array = extents<E_STATIC...>(std::array<ptrdiff_t, 0>());
- my_extents_copy = extents<E_STATIC...>(my_extents_explicit);
- }
+ ExtentsTest()
+ {
+ my_extents_explicit = extents<E_STATIC...>();
+ my_extents_array = extents<E_STATIC...>(std::array<ptrdiff_t, 0>());
+ my_extents_copy = extents<E_STATIC...>(my_extents_explicit);
+ }
- template<class ... E>
- ExtentsTest(E ... e)
- {
- my_extents_explicit = extents<E_STATIC...>(e ...);
- my_extents_array = extents<E_STATIC...>(std::array<ptrdiff_t, 2>({{e ...}}));
- my_extents_copy = extents<E_STATIC...>(my_extents_explicit);
- }
+ template<class... E>
+ ExtentsTest(E... e)
+ {
+ my_extents_explicit = extents<E_STATIC...>(e...);
+ my_extents_array = extents<E_STATIC...>(std::array<ptrdiff_t, 2>({ { e... } }));
+ my_extents_copy = extents<E_STATIC...>(my_extents_explicit);
+ }
- void check_rank(ptrdiff_t r)
- {
- EXPECT_EQ(my_extents_explicit.rank(), r);
- EXPECT_EQ(my_extents_array.rank(), r);
- EXPECT_EQ(my_extents_copy.rank(), r);
- }
- void check_rank_dynamic(ptrdiff_t r)
- {
- EXPECT_EQ(my_extents_explicit.rank_dynamic(), r);
- EXPECT_EQ(my_extents_array.rank_dynamic(), r);
- EXPECT_EQ(my_extents_copy.rank_dynamic(), r);
- }
- template<class ... E>
- void check_extents(E ... e)
+ void check_rank(ptrdiff_t r)
+ {
+ EXPECT_EQ(my_extents_explicit.rank(), r);
+ EXPECT_EQ(my_extents_array.rank(), r);
+ EXPECT_EQ(my_extents_copy.rank(), r);
+ }
+ void check_rank_dynamic(ptrdiff_t r)
+ {
+ EXPECT_EQ(my_extents_explicit.rank_dynamic(), r);
+ EXPECT_EQ(my_extents_array.rank_dynamic(), r);
+ EXPECT_EQ(my_extents_copy.rank_dynamic(), r);
+ }
+ template<class... E>
+ void check_extents(E... e)
+ {
+ std::array<ptrdiff_t, extents_type::rank()> s = { { E_STATIC... } };
+ std::array<ptrdiff_t, extents_type::rank()> a = { { e... } };
+ for (size_t r = 0; r < extents_type::rank(); r++)
{
- std::array<ptrdiff_t, extents_type::rank()> s = {{E_STATIC ...}};
- std::array<ptrdiff_t, extents_type::rank()> a = {{e ...}};
- for (size_t r = 0; r < extents_type::rank(); r++)
- {
- EXPECT_EQ(my_extents_explicit.static_extent(r), s[r]);
- EXPECT_EQ(my_extents_explicit.extent(r), a[r]);
-
- EXPECT_EQ(my_extents_array.static_extent(r), s[r]);
- EXPECT_EQ(my_extents_array.extent(r), a[r]);
-
- EXPECT_EQ(my_extents_copy.static_extent(r), s[r]);
- EXPECT_EQ(my_extents_copy.extent(r), a[r]);
- }
- EXPECT_EQ(my_extents_explicit.static_extent(extents_type::rank()+1), 1);
- EXPECT_EQ(my_extents_explicit.extent(extents_type::rank()+1), 1);
-
- EXPECT_EQ(my_extents_array.static_extent(extents_type::rank()+1), 1);
- EXPECT_EQ(my_extents_array.extent(extents_type::rank()+1), 1);
-
- EXPECT_EQ(my_extents_copy.static_extent(extents_type::rank()+1), 1);
- EXPECT_EQ(my_extents_copy.extent(extents_type::rank()+1), 1);
+ EXPECT_EQ(my_extents_explicit.static_extent(r), s[r]);
+ EXPECT_EQ(my_extents_explicit.extent(r), a[r]);
+
+ EXPECT_EQ(my_extents_array.static_extent(r), s[r]);
+ EXPECT_EQ(my_extents_array.extent(r), a[r]);
+
+ EXPECT_EQ(my_extents_copy.static_extent(r), s[r]);
+ EXPECT_EQ(my_extents_copy.extent(r), a[r]);
}
+ EXPECT_EQ(my_extents_explicit.static_extent(extents_type::rank() + 1), 1);
+ EXPECT_EQ(my_extents_explicit.extent(extents_type::rank() + 1), 1);
+
+ EXPECT_EQ(my_extents_array.static_extent(extents_type::rank() + 1), 1);
+ EXPECT_EQ(my_extents_array.extent(extents_type::rank() + 1), 1);
+ EXPECT_EQ(my_extents_copy.static_extent(extents_type::rank() + 1), 1);
+ EXPECT_EQ(my_extents_copy.extent(extents_type::rank() + 1), 1);
+ }
};
-TEST(ExtentsTest, Construction) {
+TEST(ExtentsTest, Construction)
+{
// setting two dynamic extents
ExtentsTest<5, dynamic_extent, 3, dynamic_extent, 1> test(4, 2);
test.check_rank(5);
test.check_rank_dynamic(2);
test.check_extents(5, 4, 3, 2, 1);
-
}
-TEST(ExtentsTest, PurelyStatic) {
+TEST(ExtentsTest, PurelyStatic)
+{
ExtentsTest<5, 4, 3> test;
test.check_rank(3);
test.check_rank_dynamic(0);
test.check_extents(5, 4, 3);
}
-TEST(ExtentsTest, RankNought) {
+TEST(ExtentsTest, RankNought)
+{
// Can construct extents of rank nought
ExtentsTest<> test;
test.check_rank(0);
test.check_rank_dynamic(0);
}
-TEST(ExtentsTest, Assignment) {
+TEST(ExtentsTest, Assignment)
+{
extents<5, dynamic_extent, 3, dynamic_extent, 1> e1(4, 2);
- extents<5, 4, 3, 2, 1> e2;
+ extents<5, 4, 3, 2, 1> e2;
e2 = e1;
for (size_t r = 0; r < 5; r++)
{
EXPECT_EQ(e2.extent(r), e1.extent(r));
}
- extents<dynamic_extent, dynamic_extent, dynamic_extent, dynamic_extent, dynamic_extent> e3(9, 8, 7, 6, 5);
+ extents<dynamic_extent, dynamic_extent, dynamic_extent, dynamic_extent, dynamic_extent> e3(
+ 9, 8, 7, 6, 5);
for (int r = 0; r < 5; r++)
{
- EXPECT_EQ(e3.extent(r), 9-r);
+ EXPECT_EQ(e3.extent(r), 9 - r);
}
e3 = e1;
for (int r = 0; r < 5; r++)