Teuchos - Trilinos Tools Package
Version of the Day
Loading...
Searching...
No Matches
core
src
Teuchos_UnitTestHelpers.hpp
Go to the documentation of this file.
1
// @HEADER
2
// *****************************************************************************
3
// Teuchos: Common Tools Package
4
//
5
// Copyright 2004 NTESS and the Teuchos contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef TEUCHOS_UNIT_TEST_HELPERS_HPP
11
#define TEUCHOS_UNIT_TEST_HELPERS_HPP
12
13
25
#include "
Teuchos_UnitTestBase.hpp
"
26
#include "Teuchos_StaticSetupMacro.hpp"
27
28
51
#define TEUCHOS_UNIT_TEST(TEST_GROUP, TEST_NAME) \
52
class TEST_GROUP##_##TEST_NAME##_UnitTest : public Teuchos::UnitTestBase \
53
{ \
54
public: \
55
TEST_GROUP##_##TEST_NAME##_UnitTest() \
56
: Teuchos::UnitTestBase( #TEST_GROUP, #TEST_NAME ) \
57
{} \
58
virtual void runUnitTestImpl( Teuchos::FancyOStream &out, bool &success ) const override; \
59
virtual std::string unitTestFile() const override { return __FILE__; } \
60
virtual long int unitTestFileLineNumber() const override { return __LINE__; } \
61
}; \
62
\
63
[[maybe_unused]] TEST_GROUP##_##TEST_NAME##_UnitTest \
64
instance_##TEST_GROUP##_##TEST_NAME##_UnitTest; \
65
\
66
void TEST_GROUP##_##TEST_NAME##_UnitTest::runUnitTestImpl( \
67
Teuchos::FancyOStream &out, bool &success ) const \
68
69
128
#define TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL(TEST_GROUP, TEST_NAME, TYPE) \
129
template<class TYPE> \
130
class TEST_GROUP##_##TEST_NAME##_UnitTest : public Teuchos::UnitTestBase \
131
{ \
132
public: \
133
TEST_GROUP##_##TEST_NAME##_UnitTest(const std::string& typeName) \
134
: Teuchos::UnitTestBase( std::string(#TEST_GROUP)+"_"+typeName, #TEST_NAME ) \
135
{} \
136
virtual void runUnitTestImpl( Teuchos::FancyOStream &out, bool &success ) const override \
137
{ runUnitTestImplBody(out, success); } \
138
void runUnitTestImplBody( Teuchos::FancyOStream &out, bool &success ) const; \
139
virtual std::string unitTestFile() const { return __FILE__; } \
140
virtual long int unitTestFileLineNumber() const { return __LINE__; } \
141
}; \
142
\
143
template<class TYPE> \
144
void TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE>::runUnitTestImplBody( \
145
Teuchos::FancyOStream &out, bool &success ) const \
146
157
#define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(TEST_GROUP, TEST_NAME, TYPE) \
158
\
159
template class TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE>; \
160
TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE> \
161
instance_##TEST_GROUP##_##TYPE##_##TEST_NAME##_UnitTest(#TYPE);
162
163
164
#ifdef HAVE_TEUCHOS_INST_FLOAT
165
# define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_FLOAT(TEST_GROUP, TEST_NAME)\
166
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(TEST_GROUP, TEST_NAME, float)
167
#else
168
# define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_FLOAT(TEST_GROUP, TEST_NAME)
169
#endif
170
171
#define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_DOUBLE(TEST_GROUP, TEST_NAME)\
172
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(TEST_GROUP, TEST_NAME, double)
173
174
#ifdef HAVE_TEUCHOS_INST_COMPLEX_FLOAT
175
# define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_FLOAT(TEST_GROUP, TEST_NAME)\
176
typedef std::complex<float> ComplexFloat; \
177
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(TEST_GROUP, TEST_NAME, ComplexFloat)
178
#else
179
# define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_FLOAT(TEST_GROUP, TEST_NAME)
180
#endif
181
182
#ifdef HAVE_TEUCHOS_INST_COMPLEX_DOUBLE
183
# define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_DOUBLE(TEST_GROUP, TEST_NAME)\
184
typedef std::complex<double> ComplexDouble; \
185
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(TEST_GROUP, TEST_NAME, ComplexDouble)
186
#else
187
# define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_DOUBLE(TEST_GROUP, TEST_NAME)
188
#endif
189
190
196
#define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_REAL_SCALAR_TYPES(TEST_GROUP, TEST_NAME)\
197
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_FLOAT(TEST_GROUP, TEST_NAME) \
198
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_DOUBLE(TEST_GROUP, TEST_NAME)
199
200
205
#define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_SCALAR_TYPES(TEST_GROUP, TEST_NAME)\
206
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_FLOAT(TEST_GROUP, TEST_NAME) \
207
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_DOUBLE(TEST_GROUP, TEST_NAME) \
208
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_FLOAT(TEST_GROUP, TEST_NAME) \
209
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_DOUBLE(TEST_GROUP, TEST_NAME)
210
211
272
#define TEUCHOS_UNIT_TEST_TEMPLATE_2_DECL(TEST_GROUP, TEST_NAME, TYPE1, TYPE2) \
273
template<class TYPE1, class TYPE2> \
274
class TEST_GROUP##_##TEST_NAME##_UnitTest : public Teuchos::UnitTestBase \
275
{ \
276
public: \
277
TEST_GROUP##_##TEST_NAME##_UnitTest( \
278
const std::string& type1Name, \
279
const std::string& type2Name \
280
) \
281
:Teuchos::UnitTestBase( \
282
std::string(#TEST_GROUP)+"_"+type1Name+"_"+type2Name, #TEST_NAME ) \
283
{} \
284
virtual void runUnitTestImpl( Teuchos::FancyOStream &out, bool &success ) const override \
285
{ runUnitTestImplBody(out, success); } \
286
void runUnitTestImplBody( Teuchos::FancyOStream &out, bool &success ) const; \
287
virtual std::string unitTestFile() const { return __FILE__; } \
288
virtual long int unitTestFileLineNumber() const { return __LINE__; } \
289
}; \
290
\
291
template<class TYPE1, class TYPE2> \
292
void TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1,TYPE2>::runUnitTestImplBody( \
293
Teuchos::FancyOStream &out, bool &success ) const \
294
305
#define TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT(TEST_GROUP, TEST_NAME, TYPE1, TYPE2) \
306
\
307
template class TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2 >; \
308
TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2 > \
309
instance_##TEST_GROUP##_##TYPE1##_##TYPE2##_##TEST_NAME##_UnitTest(#TYPE1,#TYPE2);
310
311
316
#define TEUCHOS_UNIT_TEST_TEMPLATE_3_DECL(TEST_GROUP, TEST_NAME, TYPE1, TYPE2, TYPE3) \
317
template<class TYPE1, class TYPE2, class TYPE3> \
318
class TEST_GROUP##_##TEST_NAME##_UnitTest : public Teuchos::UnitTestBase \
319
{ \
320
public: \
321
TEST_GROUP##_##TEST_NAME##_UnitTest( \
322
const std::string& type1Name, \
323
const std::string& type2Name, \
324
const std::string& type3Name \
325
) \
326
:Teuchos::UnitTestBase( \
327
std::string(#TEST_GROUP)+"_"+type1Name+"_"+type2Name+"_"+type3Name, #TEST_NAME ) \
328
{} \
329
virtual void runUnitTestImpl( Teuchos::FancyOStream &out, bool &success ) const override \
330
{ runUnitTestImplBody(out, success); } \
331
void runUnitTestImplBody( Teuchos::FancyOStream &out, bool &success ) const; \
332
virtual std::string unitTestFile() const { return __FILE__; } \
333
virtual long int unitTestFileLineNumber() const { return __LINE__; } \
334
}; \
335
\
336
template<class TYPE1, class TYPE2, class TYPE3> \
337
void TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1,TYPE2,TYPE3>::runUnitTestImplBody( \
338
Teuchos::FancyOStream &out, bool &success ) const \
339
340
345
#define TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT(TEST_GROUP, TEST_NAME, TYPE1, TYPE2, TYPE3) \
346
\
347
template class TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2, TYPE3 >; \
348
TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2, TYPE3 > \
349
instance_##TEST_GROUP##_##TYPE1##_##TYPE2##_##TYPE3##_##TEST_NAME##_UnitTest(#TYPE1,#TYPE2,#TYPE3);
350
351
356
#define TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(TEST_GROUP, TEST_NAME, TYPE1, TYPE2, TYPE3, TYPE4) \
357
template<class TYPE1, class TYPE2, class TYPE3, class TYPE4> \
358
class TEST_GROUP##_##TEST_NAME##_UnitTest : public Teuchos::UnitTestBase \
359
{ \
360
public: \
361
TEST_GROUP##_##TEST_NAME##_UnitTest( \
362
const std::string& type1Name, \
363
const std::string& type2Name, \
364
const std::string& type3Name, \
365
const std::string& type4Name \
366
) \
367
:Teuchos::UnitTestBase( \
368
std::string(#TEST_GROUP)+"_"+type1Name+"_"+type2Name+"_"+type3Name+"_"+type4Name, #TEST_NAME ) \
369
{} \
370
virtual void runUnitTestImpl( Teuchos::FancyOStream &out, bool &success ) const override \
371
{ runUnitTestImplBody(out, success); } \
372
void runUnitTestImplBody( Teuchos::FancyOStream &out, bool &success ) const; \
373
virtual std::string unitTestFile() const { return __FILE__; } \
374
virtual long int unitTestFileLineNumber() const { return __LINE__; } \
375
}; \
376
\
377
template<class TYPE1, class TYPE2, class TYPE3, class TYPE4> \
378
void TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1,TYPE2,TYPE3,TYPE4>::runUnitTestImplBody( \
379
Teuchos::FancyOStream &out, bool &success ) const \
380
381
386
#define TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(TEST_GROUP, TEST_NAME, TYPE1, TYPE2, TYPE3, TYPE4) \
387
\
388
template class TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2, TYPE3, TYPE4 >; \
389
TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2, TYPE3, TYPE4 > \
390
instance_##TEST_GROUP##_##TYPE1##_##TYPE2##_##TYPE3##_##TYPE4##_##TEST_NAME##_UnitTest(#TYPE1,#TYPE2,#TYPE3,#TYPE4);
391
392
393
#endif
// TEUCHOS_UNIT_TEST_HELPERS_HPP
Teuchos_UnitTestBase.hpp
Unit testing support.
Generated by
1.9.8