Sierra Toolkit
Version of the Day
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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 on Wed Sep 26 2018 14:44:35 for Sierra Toolkit by
1.8.6