|
Sierra Toolkit Version of the Day
|
00001 /*------------------------------------------------------------------------*/ 00002 /* Copyright 2010 Sandia Corporation. */ 00003 /* Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive */ 00004 /* license for use of this work by or on behalf of the U.S. Government. */ 00005 /* Export of this program may require a license from the */ 00006 /* United States Government. */ 00007 /*------------------------------------------------------------------------*/ 00008 00009 #ifndef stk_mesh_unit_tests_stk_utest_macros_hpp 00010 #define stk_mesh_unit_tests_stk_utest_macros_hpp 00011 00012 #ifndef STK_BUILT_IN_SIERRA 00013 #include <STK_config.h> 00014 #endif 00015 00016 // 00017 //This file is kind of like a unit-test abstraction layer: 00018 //A series of STKUNIT_* macros are defined in terms of either 00019 //cppunit macros, or trilinos/teuchos unit-test macros, depending 00020 //on whether stk_mesh is being built as a sierra product or Trilinos package. 00021 // 00022 00023 #ifdef HAVE_STK_Trilinos 00024 //If we're building as a Trilinos package, then we'll use the Teuchos unit-test macros. 00025 00026 #include <Teuchos_UnitTestHarness.hpp> 00027 #include <Teuchos_UnitTestRepository.hpp> 00028 #include <Teuchos_GlobalMPISession.hpp> 00029 00030 #define STKUNIT_UNIT_TEST(testclass,testmethod) TEUCHOS_UNIT_TEST(testclass,testmethod) 00031 00032 #define STKUNIT_ASSERT(A) \ 00033 {bool success = true; TEUCHOS_TEST_ASSERT(A,std::cout,success); if (!success) throw 1;} 00034 #define STKUNIT_ASSERT_EQUAL(A,B) \ 00035 {bool success = true; TEUCHOS_TEST_EQUALITY(B,A,std::cout,success); if (!success) throw 1;} 00036 #define STKUNIT_EXPECT_EQUAL(A,B) STKUNIT_ASSERT_EQUAL(A,B) 00037 #define STKUNIT_ASSERT_EQ(A,B) STKUNIT_ASSERT_EQUAL(A,B) 00038 #define STKUNIT_ASSERT_NE(A,B) \ 00039 {bool success = true; TEUCHOS_TEST_INEQUALITY(B,A,std::cout,success); if (!success) throw 1;} 00040 #define STKUNIT_ASSERT_LE(A,B) ASSERT_LE(A,B) \ 00041 {bool success = true; TEUCHOS_TEST_COMPARE(A,<=,B,std::cout,success); if (!success) throw 1;} 00042 #define STKUNIT_ASSERT_LT(A,B) ASSERT_LT(A,B) \ 00043 {bool success = true; TEUCHOS_TEST_COMPARE(A,<,B,std::cout,success); if (!success) throw 1;} 00044 #define STKUNIT_ASSERT_GE(A,B) ASSERT_GE(A,B) \ 00045 {bool success = true; TEUCHOS_TEST_COMPARE(A,>=,B,std::cout,success); if (!success) throw 1;} 00046 #define STKUNIT_ASSERT_GT(A,B) ASSERT_GT(A,B) \ 00047 {bool success = true; TEUCHOS_TEST_COMPARE(A,>,B,std::cout,success); if (!success) throw 1;} 00048 #define STKUNIT_EXPECT_EQ(A,B) STKUNIT_ASSERT_EQ(A,B) 00049 #define STKUNIT_EXPECT_NE(A,B) STKUNIT_ASSERT_NE(A,B) 00050 #define STKUNIT_EXPECT_LE(A,B) STKUNIT_ASSERT_LE(A,B) 00051 #define STKUNIT_EXPECT_LT(A,B) STKUNIT_ASSERT_LT(A,B) 00052 #define STKUNIT_EXPECT_GE(A,B) STKUNIT_ASSERT_GE(A,B) 00053 #define STKUNIT_EXPECT_GT(A,B) STKUNIT_ASSERT_GT(A,B) 00054 #define STKUNIT_ASSERT_STREQ(A,B) STKUNIT_ASSERT_EQ(A,B) 00055 #define STKUNIT_ASSERT_STRNE(A,B) STKUNIT_ASSERT_NE(A,B) 00056 #define STKUNIT_ASSERT_STRCASEEQ(A,B) STKUNIT_ASSERT_STREQ(toupper(A),toupper(B)) 00057 #define STKUNIT_ASSERT_STRCASENE(A,B) STKUNIT_ASSERT_STRNE(toupper(A),toupper(B)) 00058 #define STKUNIT_EXPECT_STREQ(A,B) STKUNIT_EXPECT_EQ(A,B) 00059 #define STKUNIT_EXPECT_STRNE(A,B) STKUNIT_EXPECT_NE(A,B) 00060 #define STKUNIT_EXPECT_STRCASEEQ(A,B) STKUNIT_EXPECT_STREQ(toupper(A),toupper(B)) 00061 #define STKUNIT_EXPECT_STRCASENE(A,B) STKUNIT_EXPECT_STRNE(toupper(A),toupper(B)) 00062 #define STKUNIT_ASSERT_THROW(A,B) \ 00063 {bool success = true; TEUCHOS_TEST_THROW(A,B,std::cout,success); if (!success) throw 1;} 00064 #define STKUNIT_ASSERT_NO_THROW(A) \ 00065 {TEUCHOS_TEST_NOTHROW(A,out,success)} 00066 #define STKUNIT_EXPECT_TRUE(A) \ 00067 {bool success = true; TEUCHOS_TEST_ASSERT(A,std::cout,success); if (!success) throw 1;} 00068 #define STKUNIT_EXPECT_FALSE(A) \ 00069 {bool success = true; TEUCHOS_TEST_ASSERT(!(A),std::cout,success); if (!success) throw 1;} 00070 #define STKUNIT_ASSERT_TRUE(A) STKUNIT_EXPECT_TRUE(A) 00071 #define STKUNIT_ASSERT_FALSE(A) STKUNIT_EXPECT_FALSE(A) 00072 #define STKUNIT_ASSERT_DOUBLE_EQ(A,B) \ 00073 {bool success = true; TEUCHOS_TEST_EQUALITY(B,A,std::cout,success); if (!success) throw 1;} 00074 #define STKUNIT_ASSERT_NEAR(A,B, tol) \ 00075 {bool success = true; TEUCHOS_TEST_FLOATING_EQUALITY(B,A,tol,std::cout,success); if (!success) throw 1;} 00076 00077 00078 #define STKUNIT_MAIN(argc,argv) \ 00079 int main(int argc,char**argv) {\ 00080 Teuchos::GlobalMPISession mpiSession(&argc, &argv); \ 00081 bool result = Teuchos::UnitTestRepository::runUnitTestsFromMain(argc, argv); \ 00082 std::cout << std::endl ; \ 00083 return result; \ 00084 } 00085 00086 00087 #elif HAVE_STK_CPPUNIT 00088 00089 //If we're not in Trilinos, we're a sierra product, so we're using cppunit: 00090 00091 #include <cppunit/TestCase.h> 00092 #include <cppunit/extensions/HelperMacros.h> 00093 #include <cppunit/extensions/TestFactoryRegistry.h> 00094 #include <cppunit/ui/text/TestRunner.h> 00095 00096 #define STKUNIT_ASSERT(A) CPPUNIT_ASSERT(A) 00097 #define STKUNIT_ASSERT_EQUAL(A,B) CPPUNIT_ASSERT_EQUAL(A,B) 00098 #define STKUNIT_EXPECT_EQUAL(A,B) CPPUNIT_ASSERT_EQUAL(A,B) 00099 #define STKUNIT_ASSERT_THROW(A,B) CPPUNIT_ASSERT_THROW(A,B) 00100 00101 #define STKUNIT_UNIT_TEST(testclass,testmethod) \ 00102 class testclass##_##testmethod : public CppUnit::TestCase { \ 00103 private: \ 00104 CPPUNIT_TEST_SUITE( testclass##_##testmethod ); \ 00105 CPPUNIT_TEST( testmethod ); \ 00106 CPPUNIT_TEST_SUITE_END(); \ 00107 public: \ 00108 testclass##_##testmethod() : CppUnit::TestCase() {} \ 00109 void setUp() {} \ 00110 void tearDown() {} \ 00111 void testmethod(); \ 00112 }; \ 00113 CPPUNIT_TEST_SUITE_REGISTRATION( testclass##_##testmethod ); \ 00114 void testclass##_##testmethod::testmethod() \ 00115 00116 #define STKUNIT_MAIN(argc,argv) \ 00117 int main(int argc, char ** argv) \ 00118 { \ 00119 if ( MPI_SUCCESS != MPI_Init( & argc , & argv ) ) { \ 00120 std::cerr << "MPI_Init FAILED" << std::endl ; \ 00121 std::abort(); \ 00122 } \ 00123 \ 00124 std::string test_names; \ 00125 \ 00126 { \ 00127 for (int i = 0; i < argc; ++i) { \ 00128 if (std::string(argv[i]) == "-test") { \ 00129 if (i + 1 < argc) \ 00130 test_names = argv[i + 1]; \ 00131 else \ 00132 std::cout << "Running all tests" << std::endl; \ 00133 } \ 00134 } \ 00135 \ 00136 CppUnit::TextUi::TestRunner runner; \ 00137 CppUnit::TestFactoryRegistry & registry = \ 00138 CppUnit::TestFactoryRegistry::getRegistry(); \ 00139 runner.addTest( registry.makeTest() ); \ 00140 runner.run(test_names); \ 00141 } \ 00142 \ 00143 MPI_Finalize(); \ 00144 \ 00145 return 0; \ 00146 } 00147 00148 #else // HAVE_STK_GTEST 00149 00150 #include <gtest/gtest.h> 00151 00152 #define STKUNIT_ASSERT(A) ASSERT_TRUE(A) 00153 #define STKUNIT_ASSERT_EQUAL(A,B) ASSERT_EQ(A,B) 00154 #define STKUNIT_EXPECT_EQUAL(A,B) EXPECT_EQ(A,B) 00155 #define STKUNIT_ASSERT_EQ(A,B) ASSERT_EQ(A,B) 00156 #define STKUNIT_ASSERT_NE(A,B) ASSERT_NE(A,B) 00157 #define STKUNIT_ASSERT_LE(A,B) ASSERT_LE(A,B) 00158 #define STKUNIT_ASSERT_LT(A,B) ASSERT_LT(A,B) 00159 #define STKUNIT_ASSERT_GE(A,B) ASSERT_GE(A,B) 00160 #define STKUNIT_ASSERT_GT(A,B) ASSERT_GT(A,B) 00161 #define STKUNIT_EXPECT_EQ(A,B) EXPECT_EQ(A,B) 00162 #define STKUNIT_EXPECT_NE(A,B) EXPECT_NE(A,B) 00163 #define STKUNIT_EXPECT_LE(A,B) EXPECT_LE(A,B) 00164 #define STKUNIT_EXPECT_LT(A,B) EXPECT_LT(A,B) 00165 #define STKUNIT_EXPECT_GE(A,B) EXPECT_GE(A,B) 00166 #define STKUNIT_EXPECT_GT(A,B) EXPECT_GT(A,B) 00167 #define STKUNIT_ASSERT_STREQ(A,B) ASSERT_STREQ(A,B) 00168 #define STKUNIT_ASSERT_STRNE(A,B) ASSERT_STRNE(A,B) 00169 #define STKUNIT_ASSERT_STRCASEEQ(A,B) ASSERT_STRCASEEQ(A,B) 00170 #define STKUNIT_ASSERT_STRCASENE(A,B) ASSERT_STRCASENE(A,B) 00171 #define STKUNIT_EXPECT_STREQ(A,B) EXPECT_STREQ(A,B) 00172 #define STKUNIT_EXPECT_STRNE(A,B) EXPECT_STRNE(A,B) 00173 #define STKUNIT_EXPECT_STRCASEEQ(A,B) EXPECT_STRCASEEQ(A,B) 00174 #define STKUNIT_EXPECT_STRCASENE(A,B) EXPECT_STRCASENE(A,B) 00175 #define STKUNIT_ASSERT_THROW(A,B) ASSERT_THROW(A,B) 00176 #define STKUNIT_ASSERT_NO_THROW(A) ASSERT_NO_THROW(A) 00177 #define STKUNIT_EXPECT_TRUE(A) EXPECT_TRUE(A) 00178 #define STKUNIT_EXPECT_FALSE(A) EXPECT_FALSE(A) 00179 #define STKUNIT_ASSERT_TRUE(A) ASSERT_TRUE(A) 00180 #define STKUNIT_ASSERT_FALSE(A) ASSERT_FALSE(A) 00181 #define STKUNIT_ASSERT_DOUBLE_EQ(A,B) ASSERT_DOUBLE_EQ(A,B) 00182 #define STKUNIT_ASSERT_NEAR(A,B,tol) ASSERT_NEAR(A,B,tol) 00183 00184 #define STKUNIT_UNIT_TEST(testclass,testmethod) TEST(testclass,testmethod) 00185 00186 #define STKUNIT_MAIN(argc,argv) \ 00187 int main(int argc, char **argv) { \ 00188 if ( MPI_SUCCESS != MPI_Init( & argc , & argv ) ) { \ 00189 std::cerr << "MPI_Init FAILED" << std::endl ; \ 00190 std::abort(); \ 00191 } \ 00192 std::cout << "Running main() from gtest_main.cc\n"; \ 00193 testing::InitGoogleTest(&argc, argv); \ 00194 bool result = RUN_ALL_TESTS(); \ 00195 MPI_Finalize(); \ 00196 return result; \ 00197 } 00198 00199 00200 #endif // HAVE_STK_Trilinos 00201 00202 #endif // stk_mesh_unit_tests_stk_utest_macros_hpp 00203