49 #ifndef ZOLTAN2_TESTHELPERS_HPP
50 #define ZOLTAN2_TESTHELPERS_HPP
52 #include <Teuchos_UnitTestHarness.hpp>
56 #include <Tpetra_Map.hpp>
61 #define STR_VALUE(path) #path
62 #define PATH_NAME(path) STR_VALUE(path)
103 #include <TpetraCore_config.h>
107 typedef Tpetra::Map<>::local_ordinal_type
zlno_t;
108 typedef Tpetra::Map<>::global_ordinal_type
zgno_t;
110 using Teuchos::compareArrays;
112 #ifdef HAVE_TPETRA_DOUBLE
114 #define HAVE_EPETRA_SCALAR_TYPE
119 #if defined HAVE_TPETRA_INT_INT
120 #if defined HAVE_EPETRA_SCALAR_TYPE
121 #define HAVE_EPETRA_DATA_TYPES
125 #ifndef HAVE_ZOLTAN2_EPETRA
126 #undef HAVE_EPETRA_SCALAR_TYPE
127 #undef HAVE_EPETRA_DATA_TYPES
132 #define MEMORY_CHECK(iPrint, msg) \
134 long kb = Zoltan2::getProcessKilobytes(); \
135 std::cout.width(10); \
136 std::cout.fill('*'); \
137 std::cout << kb << " KB, " << msg << std::endl; \
138 std::cout.width(0); \
139 std::cout.fill(' '); \
142 #define Z2_TEST(TEST) \
144 Teuchos::RCP<Teuchos::FancyOStream> fout = \
145 Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); \
147 bool success = true; \
151 out << "Test failed."; \
154 throw std::runtime_error(#TEST " FAIL"); \
158 #define Z2_TEST_THROW(code, ExceptType) Z2_TEST(TEST_THROW(code, ExceptType))
159 #define Z2_TEST_NOTHROW(code) Z2_TEST(TEST_NOTHROW(code))
160 #define Z2_TEST_EQUALITY(val1, val2) Z2_TEST(TEST_EQUALITY(val1, val2))
161 #define Z2_TEST_INEQUALITY(val1, val2) Z2_TEST(TEST_INEQUALITY(val1, val2))
162 #define Z2_TEST_ASSERT(expr) Z2_TEST(TEST_ASSERT(expr))
163 #define Z2_TEST_EQUALITY_CONST(val1, val2) \
164 Z2_TEST(TEST_EQUALITY_CONST(val1, val2))
165 #define Z2_TEST_INEQUALITY_CONST(val1, val2) \
166 Z2_TEST(TEST_INEQUALITY_CONST(val1, val2))
167 #define Z2_TEST_COMPARE(val1, comp, val2) \
168 Z2_TEST(TEST_COMPARE(val1, comp, val2))
169 #define Z2_TEST_COMPARE_ARRAYS(val1, val2) \
170 Z2_TEST(TEST_COMPARE_ARRAYS(val1, val2))
171 #define Z2_TEST_COMPARE_FLOATING_ARRAYS(val1, val2, tol) \
172 Z2_TEST(TEST_COMPARE_FLOATING_ARRAYS(val1, val2, tol))
173 #define Z2_TEST_FLOATING_EQUALITY(val1, val2, tol) \
174 Z2_TEST(TEST_FLOATING_EQUALITY(val1, val2, tol))
177 if (Tpetra::getDefaultComm()->getRank() == 0) {
178 printf(
"%s \n", message.c_str());
182 template <
typename DeviceType,
typename HostType>
184 const HostType &hostView) {
186 for (
int dim = 0; dim <= 2; ++dim) {
190 const auto mirrorDevice = Kokkos::create_mirror_view(deviceView);
191 Kokkos::deep_copy(mirrorDevice, deviceView);
197 #define Z2_TEST_DEVICE_HOST_VIEWS(deviceView, hostView) \
200 for (int dim = 0; dim <= 2; ++dim) { \
201 Z2_TEST_EQUALITY(deviceView.extent(dim), hostView.extent(dim)); \
204 const auto mirrorDevice = Kokkos::create_mirror_view(deviceView); \
205 Kokkos::deep_copy(mirrorDevice, deviceView); \
207 Z2_TEST_COMPARE_ARRAYS(hostView, mirrorDevice); \
void PrintFromRoot(const std::string &message)
#define Z2_TEST_COMPARE_ARRAYS(val1, val2)
void TestDeviceHostView(const DeviceType &deviceView, const HostType &hostView)
#define Z2_TEST_EQUALITY(val1, val2)
Tpetra::Map::local_ordinal_type zlno_t
A gathering of useful namespace methods.
Tpetra::Map::node_type znode_t
Tpetra::Map::global_ordinal_type zgno_t
std::string zoltanTestDirectory(".")
std::string testDataFilePath(".")