1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
/*
* GridTools
*
* Copyright (c) 2014-2023, ETH Zurich
* All rights reserved.
*
* Please, refer to the LICENSE file in the root directory.
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <gridtools/stencil/positional.hpp>
#include <gtest/gtest.h>
#include <gridtools/sid/concept.hpp>
namespace gridtools {
namespace stencil {
namespace {
struct d;
using testee_t = positional<d>;
static_assert(is_sid<testee_t>());
TEST(positional, smoke) {
testee_t testee{1};
auto ptr = sid::get_origin(testee)();
EXPECT_EQ(*ptr, 1);
auto strides = sid::get_strides(testee);
sid::shift(ptr, sid::get_stride<d>(strides), -34);
EXPECT_EQ(*ptr, -33);
using diff_t = sid::ptr_diff_type<testee_t>;
diff_t diff{};
sid::shift(diff, sid::get_stride<d>(strides), -34);
ptr = sid::get_origin(testee)() + diff;
EXPECT_EQ(*ptr, -33);
}
} // namespace
} // namespace stencil
} // namespace gridtools
|