|
Teuchos Package Browser (Single Doxygen Collection)
Version of the Day
|
Macros for defining unit tests. More...


Go to the source code of this file.
Defines | |
| #define | TEUCHOS_UNIT_TEST(TEST_GROUP, TEST_NAME) |
| Macro for defining a (non-templated) unit test. | |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL(TEST_GROUP, TEST_NAME, TYPE) |
| Macro for defining a templated unit test with one template parameter. | |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(TEST_GROUP, TEST_NAME, TYPE) |
| Instantiate a templated unit test with one template parameter. | |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_FLOAT(TEST_GROUP, TEST_NAME) |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_DOUBLE(TEST_GROUP, TEST_NAME) TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(TEST_GROUP, TEST_NAME, double) |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_FLOAT(TEST_GROUP, TEST_NAME) |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_DOUBLE(TEST_GROUP, TEST_NAME) |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_REAL_SCALAR_TYPES(TEST_GROUP, TEST_NAME) |
| Instantiate a whole group of tests for supported real Scalar types. | |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_SCALAR_TYPES(TEST_GROUP, TEST_NAME) |
| Instantiate a whole group of tests for supported Scalar types. | |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_2_DECL(TEST_GROUP, TEST_NAME, TYPE1, TYPE2) |
| Macro for defining a templated unit test with two template parameters. | |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT(TEST_GROUP, TEST_NAME, TYPE1, TYPE2) |
| Instantiate a templated unit test with two template parameters. | |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_3_DECL(TEST_GROUP, TEST_NAME, TYPE1, TYPE2, TYPE3) |
| Macro for defining a templated unit test with three template parameters. | |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT(TEST_GROUP, TEST_NAME, TYPE1, TYPE2, TYPE3) |
| Instantiate a templated unit test with three template parameters. | |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(TEST_GROUP, TEST_NAME, TYPE1, TYPE2, TYPE3, TYPE4) |
| Macro for defining a templated unit test with four template parameters. | |
| #define | TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(TEST_GROUP, TEST_NAME, TYPE1, TYPE2, TYPE3, TYPE4) |
| Instantiate a templated unit test with four template parameters. | |
Macros for defining unit tests.
Macros for expanding code.
The macros in this file are for naming and defining unit tests. They give your unit test a group and name, so that you can identify it in the test output. You are responsible for filling in the actual test.
For macros (like TEST_NOTHROW) to help you write the actual unit test, see Teuchos_LocalTestingHelpers.hpp and Teuchos_TestingHelpers.hpp.
Definition in file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST | ( | TEST_GROUP, | |
| TEST_NAME | |||
| ) |
class TEST_GROUP##_##TEST_NAME##_UnitTest : public Teuchos::UnitTestBase \ { \ public: \ TEST_GROUP##_##TEST_NAME##_UnitTest() \ : Teuchos::UnitTestBase( #TEST_GROUP, #TEST_NAME ) \ {} \ virtual void runUnitTestImpl( Teuchos::FancyOStream &out, bool &success ) const; \ virtual std::string unitTestFile() const { return __FILE__; } \ virtual long int unitTestFileLineNumber() const { return __LINE__; } \ }; \ \ TEST_GROUP##_##TEST_NAME##_UnitTest \ instance_##TEST_GROUP##_##TEST_NAME##_UnitTest; \ \ void TEST_GROUP##_##TEST_NAME##_UnitTest::runUnitTestImpl( \ Teuchos::FancyOStream &out, bool &success ) const \
Macro for defining a (non-templated) unit test.
The macro parameters TEST_GROUP and TEST_NAME must each be a valid part of a C++ identifier. In particular, they should not contain any spaces or other characters that are not allowed in the name of a class.
Here is a brief example of how to declare a unit test using this macro.
TEUCHOS_UNIT_TEST( myTestGroup, testDouble ) { double x, y; // Make sure that assigning 42 to y doesn't throw an exception. TEST_NOTHROW( x = 42 ); // Make sure that assigning 42 to y doesn't throw an exception. TEST_NOTHROW( y = 42 ); // Make sure that x and y are now equal. TEST_EQUALITY_CONST( x, y ); }
Definition at line 83 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL | ( | TEST_GROUP, | |
| TEST_NAME, | |||
| TYPE | |||
| ) |
template<class TYPE> \ class TEST_GROUP##_##TEST_NAME##_UnitTest : public Teuchos::UnitTestBase \ { \ public: \ TEST_GROUP##_##TEST_NAME##_UnitTest(const std::string& typeName) \ : Teuchos::UnitTestBase( std::string(#TEST_GROUP)+"_"+typeName, #TEST_NAME ) \ {} \ void runUnitTestImpl( Teuchos::FancyOStream &out, bool &success ) const; \ virtual std::string unitTestFile() const { return __FILE__; } \ virtual long int unitTestFileLineNumber() const { return __LINE__; } \ }; \ \ template<class TYPE> \ void TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE>::runUnitTestImpl( \ Teuchos::FancyOStream &out, bool &success ) const \
Macro for defining a templated unit test with one template parameter.
Use this macro to define the templated unit test. To instantiate the unit test for a particular template parameter, use the TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT macro.
The macro parameters TEST_GROUP and TEST_NAME must each be a valid part of a C++ identifier. In particular, they should not contain any spaces or other characters that are not allowed in the name of a class.
On instantiation, the macro parameter TYPE must be the name of a valid C++ type. The type will be treated as a template parameter. Thus, if your unit test references typedefs in TYPE, it should use typename to access them. For example:
TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL( myTestGroup, myTestName, StlContainerType ) { typedef typename StlContainerType::value_type value_type; // ... the rest of the unit test ... }
When instantiating the unit test for a particular template parameter using TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT, the macro parameter TYPE must not contain any spaces (Bug 5757). If you want TYPE to be a type with spaces, like unsigned int or long double, you must first use a typedef to alias the original type to a name without spaces, and then use the name without spaces. For example:
// Define the templated unit test. TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL( myTestGroup, myTestName, RealType ) { RealType x = 42, y = 42; TEST_EQUALITY_CONST( x, y ); // ... the rest of the unit test ... } // // Instantiate the unit test for various values of RealType. // TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( myTestGroup, myTestName, float ) TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( myTestGroup, myTestName, double ) // Typedef to work around Bug 5757 (TYPE values cannot have spaces). typedef long double long_double_type; TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( myTestGroup, myTestName, long_double_type )
Definition at line 160 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT | ( | TEST_GROUP, | |
| TEST_NAME, | |||
| TYPE | |||
| ) |
\
template class TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE>; \
TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE> \
instance_##TEST_GROUP##_##TYPE##_##TEST_NAME##_UnitTest(#TYPE);
Instantiate a templated unit test with one template parameter.
Use this macro to instantiate for a particular template parameter value the templated unit test defined by TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL with the same TEST_GROUP and TEST_NAME values. For more details and examples, see the documentation of TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL.
Definition at line 187 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_FLOAT | ( | TEST_GROUP, | |
| TEST_NAME | |||
| ) |
Definition at line 198 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_DOUBLE | ( | TEST_GROUP, | |
| TEST_NAME | |||
| ) | TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(TEST_GROUP, TEST_NAME, double) |
Definition at line 201 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_FLOAT | ( | TEST_GROUP, | |
| TEST_NAME | |||
| ) |
Definition at line 209 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_DOUBLE | ( | TEST_GROUP, | |
| TEST_NAME | |||
| ) |
Definition at line 217 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_REAL_SCALAR_TYPES | ( | TEST_GROUP, | |
| TEST_NAME | |||
| ) |
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_FLOAT(TEST_GROUP, TEST_NAME) \ TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_DOUBLE(TEST_GROUP, TEST_NAME)
Instantiate a whole group of tests for supported real Scalar types.
Definition at line 226 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_SCALAR_TYPES | ( | TEST_GROUP, | |
| TEST_NAME | |||
| ) |
TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_FLOAT(TEST_GROUP, TEST_NAME) \ TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_DOUBLE(TEST_GROUP, TEST_NAME) \ TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_FLOAT(TEST_GROUP, TEST_NAME) \ TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT_COMPLEX_DOUBLE(TEST_GROUP, TEST_NAME)
Instantiate a whole group of tests for supported Scalar types.
Definition at line 235 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_2_DECL | ( | TEST_GROUP, | |
| TEST_NAME, | |||
| TYPE1, | |||
| TYPE2 | |||
| ) |
template<class TYPE1, class TYPE2> \ class TEST_GROUP##_##TEST_NAME##_UnitTest : public Teuchos::UnitTestBase \ { \ public: \ TEST_GROUP##_##TEST_NAME##_UnitTest( \ const std::string& type1Name, \ const std::string& type2Name \ ) \ :Teuchos::UnitTestBase( \ std::string(#TEST_GROUP)+"_"+type1Name+"_"+type2Name, #TEST_NAME ) \ {} \ void runUnitTestImpl( Teuchos::FancyOStream &out, bool &success ) const; \ virtual std::string unitTestFile() const { return __FILE__; } \ virtual long int unitTestFileLineNumber() const { return __LINE__; } \ }; \ \ template<class TYPE1, class TYPE2> \ void TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1,TYPE2>::runUnitTestImpl( \ Teuchos::FancyOStream &out, bool &success ) const \
Macro for defining a templated unit test with two template parameters.
Use this macro to define the templated unit test. To instantiate the unit test for particular template parameter values, use the TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT macro.
The macro parameters TEST_GROUP and TEST_NAME must each be a valid part of a C++ identifier. In particular, they should not contain any spaces or other characters that are not allowed in the name of a class.
On instantiation, the macro parameters TYPE1 and TYPE2 must be the name of a valid C++ type. The types will be treated as template parameters. Thus, if your unit test references typedefs in TYPE1 or TYPE2, it should use typename to access them. For example:
TEUCHOS_UNIT_TEST_TEMPLATE_2_DECL( myTestGroup, myTestName, StlContainer1Type, StlContainer2Type ) { typedef typename StlContainer1Type::value_type value1_type; typedef typename StlContainer2Type::value_type value2_type; // ... the rest of the unit test ... }
When instantiating the unit test for a particular template parameter using TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT, the macro parameter values TYPE1 and TYPE2 must not contain any spaces (Bug 5757). If you want TYPE1 or TYPE2 to be a type with spaces, like unsigned int or long double, you must first use a typedef to alias the original type to a name without spaces, and then use the name without spaces. For example:
// Define the templated unit test. TEUCHOS_UNIT_TEST_TEMPLATE_2_DECL( myTestGroup, myTestName, IntegerType, RealType ) { IntegerType x = 42; RealType y = 42; TEST_EQUALITY_CONST( x, static_cast<IntegerType> (y) ); // ... the rest of the unit test ... } // // Instantiate the unit test for various values of IntegerType and RealType. // TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT( myTestGroup, myTestName, int, float ) TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT( myTestGroup, myTestName, long, double ) // Typedef to work around Bug 5757 (TYPE values cannot have spaces). typedef long double long_double_type; TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT( myTestGroup, myTestName, int, long_double_type )
Definition at line 302 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT | ( | TEST_GROUP, | |
| TEST_NAME, | |||
| TYPE1, | |||
| TYPE2 | |||
| ) |
\
template class TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2 >; \
TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2 > \
instance_##TEST_GROUP##_##TYPE1##_##TYPE2##_##TEST_NAME##_UnitTest(#TYPE1,#TYPE2);
Instantiate a templated unit test with two template parameters.
Use this macro to instantiate for particular template parameter values the templated unit test defined by TEUCHOS_UNIT_TEST_TEMPLATE_2_DECL with the same TEST_GROUP and TEST_NAME values. For more details and examples, see the documentation of TEUCHOS_UNIT_TEST_TEMPLATE_2_DECL.
Definition at line 333 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_3_DECL | ( | TEST_GROUP, | |
| TEST_NAME, | |||
| TYPE1, | |||
| TYPE2, | |||
| TYPE3 | |||
| ) |
template<class TYPE1, class TYPE2, class TYPE3> \ class TEST_GROUP##_##TEST_NAME##_UnitTest : public Teuchos::UnitTestBase \ { \ public: \ TEST_GROUP##_##TEST_NAME##_UnitTest( \ const std::string& type1Name, \ const std::string& type2Name, \ const std::string& type3Name \ ) \ :Teuchos::UnitTestBase( \ std::string(#TEST_GROUP)+"_"+type1Name+"_"+type2Name+"_"+type3Name, #TEST_NAME ) \ {} \ void runUnitTestImpl( Teuchos::FancyOStream &out, bool &success ) const; \ virtual std::string unitTestFile() const { return __FILE__; } \ virtual long int unitTestFileLineNumber() const { return __LINE__; } \ }; \ \ template<class TYPE1, class TYPE2, class TYPE3> \ void TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1,TYPE2,TYPE3>::runUnitTestImpl( \ Teuchos::FancyOStream &out, bool &success ) const \
Macro for defining a templated unit test with three template parameters.
Definition at line 344 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT | ( | TEST_GROUP, | |
| TEST_NAME, | |||
| TYPE1, | |||
| TYPE2, | |||
| TYPE3 | |||
| ) |
\
template class TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2, TYPE3 >; \
TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2, TYPE3 > \
instance_##TEST_GROUP##_##TYPE1##_##TYPE2##_##TYPE3##_##TEST_NAME##_UnitTest(#TYPE1,#TYPE2,#TYPE3);
Instantiate a templated unit test with three template parameters.
Definition at line 371 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL | ( | TEST_GROUP, | |
| TEST_NAME, | |||
| TYPE1, | |||
| TYPE2, | |||
| TYPE3, | |||
| TYPE4 | |||
| ) |
template<class TYPE1, class TYPE2, class TYPE3, class TYPE4> \ class TEST_GROUP##_##TEST_NAME##_UnitTest : public Teuchos::UnitTestBase \ { \ public: \ TEST_GROUP##_##TEST_NAME##_UnitTest( \ const std::string& type1Name, \ const std::string& type2Name, \ const std::string& type3Name, \ const std::string& type4Name \ ) \ :Teuchos::UnitTestBase( \ std::string(#TEST_GROUP)+"_"+type1Name+"_"+type2Name+"_"+type3Name+"_"+type4Name, #TEST_NAME ) \ {} \ void runUnitTestImpl( Teuchos::FancyOStream &out, bool &success ) const; \ virtual std::string unitTestFile() const { return __FILE__; } \ virtual long int unitTestFileLineNumber() const { return __LINE__; } \ }; \ \ template<class TYPE1, class TYPE2, class TYPE3, class TYPE4> \ void TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1,TYPE2,TYPE3,TYPE4>::runUnitTestImpl( \ Teuchos::FancyOStream &out, bool &success ) const \
Macro for defining a templated unit test with four template parameters.
Definition at line 382 of file Teuchos_UnitTestHelpers.hpp.
| #define TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT | ( | TEST_GROUP, | |
| TEST_NAME, | |||
| TYPE1, | |||
| TYPE2, | |||
| TYPE3, | |||
| TYPE4 | |||
| ) |
\
template class TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2, TYPE3, TYPE4 >; \
TEST_GROUP##_##TEST_NAME##_UnitTest<TYPE1, TYPE2, TYPE3, TYPE4 > \
instance_##TEST_GROUP##_##TYPE1##_##TYPE2##_##TYPE3##_##TYPE4##_##TEST_NAME##_UnitTest(#TYPE1,#TYPE2,#TYPE3,#TYPE4);
Instantiate a templated unit test with four template parameters.
Definition at line 410 of file Teuchos_UnitTestHelpers.hpp.
1.7.6.1