Sierra Toolkit
Version of the Day
stk_utest_macros.hpp
1
/*------------------------------------------------------------------------*/
2
/* Copyright 2010 Sandia Corporation. */
3
/* Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive */
4
/* license for use of this work by or on behalf of the U.S. Government. */
5
/* Export of this program may require a license from the */
6
/* United States Government. */
7
/*------------------------------------------------------------------------*/
8
9
#ifndef stk_mesh_unit_tests_stk_utest_macros_hpp
10
#define stk_mesh_unit_tests_stk_utest_macros_hpp
11
12
#ifndef STK_BUILT_IN_SIERRA
13
#include <STKClassic_config.h>
14
#else
15
#define HAVE_MPI
16
#endif
17
#if defined(HAVE_MPI)
18
#include <mpi.h>
19
#endif
20
//
21
//This file is kind of like a unit-test abstraction layer:
22
//A series of STKUNIT_* macros are defined in terms of either
23
//gtest macros, or trilinos/teuchos unit-test macros, depending
24
//on whether stk_mesh is being built as a sierra product or Trilinos package.
25
//
26
#ifdef HAVE_MPI
27
#define RUN_TEST_REDUCE(error) \
28
int tmp_error = error; \
29
int reduce_result = MPI_Allreduce ( &tmp_error, &error, 1
/*count*/
, \
30
MPI_INT, MPI_MAX, MPI_COMM_WORLD ); \
31
if (reduce_result != MPI_SUCCESS) { \
32
std::cerr << "MPI_Allreduce FAILED" << std::endl; \
33
error = true; \
34
} \
35
if ( !error ) \
36
std::cout << "STKUNIT_ALL_PASS" << std::endl;
37
#else
38
#define RUN_TEST_REDUCE(error) \
39
if (error != 0) { \
40
std::cerr << "Test FAILED" << std::endl; \
41
error = true; \
42
} \
43
if ( !error ) \
44
std::cout << "STKUNIT_ALL_PASS" << std::endl;
45
#endif
46
47
48
#ifdef HAVE_STK_Trilinos
49
//If we're building as a Trilinos package, then we'll use the Teuchos unit-test macros.
50
51
#include <Teuchos_UnitTestHarness.hpp>
52
#include <Teuchos_UnitTestRepository.hpp>
53
#include <Teuchos_GlobalMPISession.hpp>
54
55
#define STKUNIT_UNIT_TEST(testclass,testmethod) TEUCHOS_UNIT_TEST(testclass,testmethod)
56
57
#define STKUNIT_ASSERT(A) \
58
{bool success = true; TEUCHOS_TEST_ASSERT(A,std::cout,success); if (!success) throw 1;}
59
#define STKUNIT_ASSERT_EQUAL(A,B) \
60
{bool success = true; TEUCHOS_TEST_EQUALITY(B,A,std::cout,success); if (!success) throw 1;}
61
#define STKUNIT_EXPECT_EQUAL(A,B) STKUNIT_ASSERT_EQUAL(A,B)
62
#define STKUNIT_ASSERT_EQ(A,B) STKUNIT_ASSERT_EQUAL(A,B)
63
#define STKUNIT_ASSERT_NE(A,B) \
64
{bool success = true; TEUCHOS_TEST_INEQUALITY(B,A,std::cout,success); if (!success) throw 1;}
65
#define STKUNIT_ASSERT_LE(A,B) \
66
{bool success = true; TEUCHOS_TEST_COMPARE(A,<=,B,std::cout,success); if (!success) throw 1;}
67
#define STKUNIT_ASSERT_LT(A,B) \
68
{bool success = true; TEUCHOS_TEST_COMPARE(A,<,B,std::cout,success); if (!success) throw 1;}
69
#define STKUNIT_ASSERT_GE(A,B) \
70
{bool success = true; TEUCHOS_TEST_COMPARE(A,>=,B,std::cout,success); if (!success) throw 1;}
71
#define STKUNIT_ASSERT_GT(A,B) \
72
{bool success = true; TEUCHOS_TEST_COMPARE(A,>,B,std::cout,success); if (!success) throw 1;}
73
#define STKUNIT_EXPECT_EQ(A,B) STKUNIT_ASSERT_EQ(A,B)
74
#define STKUNIT_EXPECT_NE(A,B) STKUNIT_ASSERT_NE(A,B)
75
#define STKUNIT_EXPECT_LE(A,B) STKUNIT_ASSERT_LE(A,B)
76
#define STKUNIT_EXPECT_LT(A,B) STKUNIT_ASSERT_LT(A,B)
77
#define STKUNIT_EXPECT_GE(A,B) STKUNIT_ASSERT_GE(A,B)
78
#define STKUNIT_EXPECT_GT(A,B) STKUNIT_ASSERT_GT(A,B)
79
#define STKUNIT_ASSERT_STREQ(A,B) STKUNIT_ASSERT_EQ(A,B)
80
#define STKUNIT_ASSERT_STRNE(A,B) STKUNIT_ASSERT_NE(A,B)
81
#define STKUNIT_ASSERT_STRCASEEQ(A,B) STKUNIT_ASSERT_STREQ(toupper(A),toupper(B))
82
#define STKUNIT_ASSERT_STRCASENE(A,B) STKUNIT_ASSERT_STRNE(toupper(A),toupper(B))
83
#define STKUNIT_EXPECT_STREQ(A,B) STKUNIT_EXPECT_EQ(A,B)
84
#define STKUNIT_EXPECT_STRNE(A,B) STKUNIT_EXPECT_NE(A,B)
85
#define STKUNIT_EXPECT_STRCASEEQ(A,B) STKUNIT_EXPECT_STREQ(toupper(A),toupper(B))
86
#define STKUNIT_EXPECT_STRCASENE(A,B) STKUNIT_EXPECT_STRNE(toupper(A),toupper(B))
87
#define STKUNIT_ASSERT_THROW(A,B) \
88
{bool success = true; TEUCHOS_TEST_THROW(A,B,std::cout,success); if (!success) throw 1;}
89
#define STKUNIT_ASSERT_NO_THROW(A) \
90
{TEUCHOS_TEST_NOTHROW(A,out,success)}
91
#define STKUNIT_EXPECT_TRUE(A) \
92
{bool success = true; TEUCHOS_TEST_ASSERT(A,std::cout,success); if (!success) throw 1;}
93
#define STKUNIT_EXPECT_FALSE(A) \
94
{bool success = true; TEUCHOS_TEST_ASSERT(!(A),std::cout,success); if (!success) throw 1;}
95
#define STKUNIT_ASSERT_TRUE(A) STKUNIT_EXPECT_TRUE(A)
96
#define STKUNIT_ASSERT_FALSE(A) STKUNIT_EXPECT_FALSE(A)
97
#define STKUNIT_ASSERT_DOUBLE_EQ(A,B) \
98
{bool success = true; TEUCHOS_TEST_EQUALITY(B,A,std::cout,success); if (!success) throw 1;}
99
#define STKUNIT_EXPECT_DOUBLE_EQ(A,B) STKUNIT_ASSERT_DOUBLE_EQ(A,B)
100
#define STKUNIT_ASSERT_NEAR(A,B, tol) \
101
{bool success = true; TEUCHOS_TEST_FLOATING_EQUALITY(B,A,tol,std::cout,success); if (!success) throw 1;}
102
#define STKUNIT_EXPECT_NEAR(A,B, tol) STKUNIT_ASSERT_NEAR(A, B, tol)
103
104
#define STKUNIT_MAIN(argc,argv) \
105
int* STKUNIT_ARGC; \
106
char** STKUNIT_ARGV; \
107
int main(int argc,char**argv) {\
108
STKUNIT_ARGC = &argc; \
109
STKUNIT_ARGV = argv; \
110
Teuchos::GlobalMPISession mpiSession(&argc, &argv); \
111
int error = Teuchos::UnitTestRepository::runUnitTestsFromMain(argc, argv); \
112
RUN_TEST_REDUCE(error); \
113
return error; \
114
}
115
116
#else // HAVE_STK_GTEST
117
118
#include <gtest/gtest.h>
119
120
#define STKUNIT_ASSERT(A) ASSERT_TRUE(A)
121
#define STKUNIT_ASSERT_EQUAL(A,B) ASSERT_EQ(A,B)
122
#define STKUNIT_EXPECT_EQUAL(A,B) EXPECT_EQ(A,B)
123
#define STKUNIT_ASSERT_EQ(A,B) ASSERT_EQ(A,B)
124
#define STKUNIT_ASSERT_NE(A,B) ASSERT_NE(A,B)
125
#define STKUNIT_ASSERT_LE(A,B) ASSERT_LE(A,B)
126
#define STKUNIT_ASSERT_LT(A,B) ASSERT_LT(A,B)
127
#define STKUNIT_ASSERT_GE(A,B) ASSERT_GE(A,B)
128
#define STKUNIT_ASSERT_GT(A,B) ASSERT_GT(A,B)
129
#define STKUNIT_EXPECT_EQ(A,B) EXPECT_EQ(A,B)
130
#define STKUNIT_EXPECT_NE(A,B) EXPECT_NE(A,B)
131
#define STKUNIT_EXPECT_LE(A,B) EXPECT_LE(A,B)
132
#define STKUNIT_EXPECT_LT(A,B) EXPECT_LT(A,B)
133
#define STKUNIT_EXPECT_GE(A,B) EXPECT_GE(A,B)
134
#define STKUNIT_EXPECT_GT(A,B) EXPECT_GT(A,B)
135
#define STKUNIT_ASSERT_STREQ(A,B) ASSERT_STREQ(A,B)
136
#define STKUNIT_ASSERT_STRNE(A,B) ASSERT_STRNE(A,B)
137
#define STKUNIT_ASSERT_STRCASEEQ(A,B) ASSERT_STRCASEEQ(A,B)
138
#define STKUNIT_ASSERT_STRCASENE(A,B) ASSERT_STRCASENE(A,B)
139
#define STKUNIT_EXPECT_STREQ(A,B) EXPECT_STREQ(A,B)
140
#define STKUNIT_EXPECT_STRNE(A,B) EXPECT_STRNE(A,B)
141
#define STKUNIT_EXPECT_STRCASEEQ(A,B) EXPECT_STRCASEEQ(A,B)
142
#define STKUNIT_EXPECT_STRCASENE(A,B) EXPECT_STRCASENE(A,B)
143
#define STKUNIT_ASSERT_THROW(A,B) ASSERT_THROW(A,B)
144
#define STKUNIT_ASSERT_NO_THROW(A) ASSERT_NO_THROW(A)
145
#define STKUNIT_EXPECT_TRUE(A) EXPECT_TRUE(A)
146
#define STKUNIT_EXPECT_FALSE(A) EXPECT_FALSE(A)
147
#define STKUNIT_ASSERT_TRUE(A) ASSERT_TRUE(A)
148
#define STKUNIT_ASSERT_FALSE(A) ASSERT_FALSE(A)
149
#define STKUNIT_ASSERT_DOUBLE_EQ(A,B) ASSERT_DOUBLE_EQ(A,B)
150
#define STKUNIT_EXPECT_DOUBLE_EQ(A,B) EXPECT_DOUBLE_EQ(A,B)
151
#define STKUNIT_ASSERT_NEAR(A,B,tol) ASSERT_NEAR(A,B,tol)
152
#define STKUNIT_EXPECT_NEAR(A,B,tol) EXPECT_NEAR(A,B,tol)
153
154
#define STKUNIT_UNIT_TEST(testclass,testmethod) TEST(testclass,testmethod)
155
156
#define STKUNIT_MAIN(argc,argv) \
157
int* STKUNIT_ARGC; \
158
char** STKUNIT_ARGV; \
159
int main(int argc, char **argv) { \
160
if ( MPI_SUCCESS != MPI_Init( & argc , & argv ) ) { \
161
std::cerr << "MPI_Init FAILED" << std::endl ; \
162
std::abort(); \
163
} \
164
STKUNIT_ARGC = &argc; \
165
STKUNIT_ARGV = argv; \
166
std::cout << "Running main() from gtest_main.cc\n"; \
167
testing::InitGoogleTest(&argc, argv); \
168
int error = RUN_ALL_TESTS(); \
169
RUN_TEST_REDUCE(error); \
170
MPI_Finalize(); \
171
return error; \
172
}
173
174
#define STKUNIT_WITH_TRACING_MAIN(argc, argv) \
175
int* STKUNIT_ARGC; \
176
char** STKUNIT_ARGV; \
177
int main(int argc, char **argv) { \
178
use_case::UseCaseEnvironment use_case_environment(&argc, &argv); \
179
std::cout << "Running main() from gtest_main.cc\n"; \
180
testing::InitGoogleTest(&argc, argv); \
181
STKUNIT_ARGC = &argc; \
182
STKUNIT_ARGV = argv; \
183
int error = RUN_ALL_TESTS(); \
184
RUN_TEST_REDUCE(error); \
185
return error; \
186
}
187
188
#define STKUNIT_WITH_SIERRA_MAIN(argc,argv,prod) \
189
int main(int argc, char **argv) { \
190
sierra::Env::set_input_file_required(false); \
191
testing::InitGoogleTest(&argc, argv); \
192
sierra::Env::Startup startup__(&argc, &argv, sierra::prod::get_product_name(), __DATE__ " " __TIME__); \
193
int error = RUN_ALL_TESTS(); \
194
RUN_TEST_REDUCE(error); \
195
return error; \
196
}
197
198
#endif // HAVE_STK_Trilinos
199
200
#endif // stk_mesh_unit_tests_stk_utest_macros_hpp
201
stk_util
stk_util
unit_test_support
stk_utest_macros.hpp
Generated by
1.8.14