diff options
author | shiqian <shiqian@861a406c-534a-0410-8894-cb66d6ee9925> | 2008-10-11 07:20:02 (GMT) |
---|---|---|
committer | shiqian <shiqian@861a406c-534a-0410-8894-cb66d6ee9925> | 2008-10-11 07:20:02 (GMT) |
commit | e0865dd9199e8fffd5c2f95a68de6c1851f77c15 (patch) | |
tree | 975905bb872df284353ddfc50f930f48979ec4d3 /include/gtest/gtest.h | |
parent | 0cbe322d372e7f3463c7d49628ddad871334691d (diff) | |
download | googletest-e0865dd9199e8fffd5c2f95a68de6c1851f77c15.zip googletest-e0865dd9199e8fffd5c2f95a68de6c1851f77c15.tar.gz googletest-e0865dd9199e8fffd5c2f95a68de6c1851f77c15.tar.bz2 |
Many changes:
- appends "_" to internal macro names (by Markus Heule).
- makes Google Test work with newer versions of tools on Symbian and Windows CE (by Mika Raento).
- adds the (ASSERT|EXPECT)_NO_FATAL_FAILURE macros (by Markus Heule).
- changes EXPECT_(NON|)FATAL_FAILURE to catch failures in the current thread only (by Markus Heule).
- adds the EXPECT_(NON|)FATAL_FAILURE_ON_ALL_THREADS macros (by Markus Heule).
- adds GTEST_HAS_PTHREAD and GTEST_IS_THREADSAFE to indicate the availability of <pthread.h> and Google Test's thread-safety (by Zhanyong Wan).
- adds scons/SConscript for building with scons (by Joi Sigurdsson).
- adds src/gtest-all.cc for building Google Test from a single file (by Markus Heule).
- updates the xcode project to include new tests (by Preston Jackson).
Diffstat (limited to 'include/gtest/gtest.h')
-rw-r--r-- | include/gtest/gtest.h | 98 |
1 files changed, 52 insertions, 46 deletions
diff --git a/include/gtest/gtest.h b/include/gtest/gtest.h index 67cf4ac..8df25ab 100644 --- a/include/gtest/gtest.h +++ b/include/gtest/gtest.h @@ -53,7 +53,6 @@ // The following platform macros are used throughout Google Test: // _WIN32_WCE Windows CE (set in project files) -// __SYMBIAN32__ Symbian (set by Symbian tool chain) // // Note that even though _MSC_VER and _WIN32_WCE really indicate a compiler // and a Win32 implementation, respectively, we use them to indicate the @@ -68,6 +67,7 @@ #include <gtest/gtest-death-test.h> #include <gtest/gtest-message.h> #include <gtest/gtest_prod.h> +#include <gtest/gtest-test-part.h> #include <gtest/gtest-typed-test.h> // Depending on the platform, different string classes are available. @@ -97,19 +97,11 @@ const int kMaxStackTraceDepth = 100; // This flag specifies the maximum number of stack frames to be // printed in a failure message. -GTEST_DECLARE_int32(stack_trace_depth); +GTEST_DECLARE_int32_(stack_trace_depth); // This flag controls whether Google Test includes Google Test internal // stack frames in failure stack traces. -GTEST_DECLARE_bool(show_internal_stack_frames); - -// The possible outcomes of a test part (i.e. an assertion or an -// explicit SUCCEED(), FAIL(), or ADD_FAILURE()). -enum TestPartResultType { - TPRT_SUCCESS, // Succeeded. - TPRT_NONFATAL_FAILURE, // Failed but the test can continue. - TPRT_FATAL_FAILURE // Failed and the test should be terminated. -}; +GTEST_DECLARE_bool_(show_internal_stack_frames); namespace internal { @@ -308,7 +300,7 @@ class Test { virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } // We disallow copying Tests. - GTEST_DISALLOW_COPY_AND_ASSIGN(Test); + GTEST_DISALLOW_COPY_AND_ASSIGN_(Test); }; @@ -393,7 +385,7 @@ class TestInfo { // An opaque implementation object. internal::TestInfoImpl* impl_; - GTEST_DISALLOW_COPY_AND_ASSIGN(TestInfo); + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo); }; // An Environment object is capable of setting up and tearing down an @@ -477,7 +469,7 @@ class UnitTest { // This method can only be called from the main thread. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. - int Run() GTEST_MUST_USE_RESULT; + int Run() GTEST_MUST_USE_RESULT_; // Returns the working directory when the first TEST() or TEST_F() // was executed. The UnitTest object owns the string. @@ -523,7 +515,7 @@ class UnitTest { internal::UnitTestImpl* impl_; // We disallow copying UnitTest. - GTEST_DISALLOW_COPY_AND_ASSIGN(UnitTest); + GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest); }; // A convenient wrapper for adding an environment for the test @@ -707,7 +699,7 @@ class EqHelper<true> { // with gcc 4. // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. -#define GTEST_IMPL_CMP_HELPER(op_name, op)\ +#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ template <typename T1, typename T2>\ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ const T1& val1, const T2& val2) {\ @@ -727,17 +719,17 @@ AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. // Implements the helper function for {ASSERT|EXPECT}_NE -GTEST_IMPL_CMP_HELPER(NE, !=) +GTEST_IMPL_CMP_HELPER_(NE, !=) // Implements the helper function for {ASSERT|EXPECT}_LE -GTEST_IMPL_CMP_HELPER(LE, <=) +GTEST_IMPL_CMP_HELPER_(LE, <=) // Implements the helper function for {ASSERT|EXPECT}_LT -GTEST_IMPL_CMP_HELPER(LT, < ) +GTEST_IMPL_CMP_HELPER_(LT, < ) // Implements the helper function for {ASSERT|EXPECT}_GE -GTEST_IMPL_CMP_HELPER(GE, >=) +GTEST_IMPL_CMP_HELPER_(GE, >=) // Implements the helper function for {ASSERT|EXPECT}_GT -GTEST_IMPL_CMP_HELPER(GT, > ) +GTEST_IMPL_CMP_HELPER_(GT, > ) -#undef GTEST_IMPL_CMP_HELPER +#undef GTEST_IMPL_CMP_HELPER_ // The helper function for {ASSERT|EXPECT}_STREQ. // @@ -881,7 +873,7 @@ class AssertHelper { AssertHelper(TestPartResultType type, const char* file, int line, const char* message); // Message assignment is a semantic trick to enable assertion - // streaming; see the GTEST_MESSAGE macro below. + // streaming; see the GTEST_MESSAGE_ macro below. void operator=(const Message& message) const; private: TestPartResultType const type_; @@ -889,7 +881,7 @@ class AssertHelper { int const line_; String const message_; - GTEST_DISALLOW_COPY_AND_ASSIGN(AssertHelper); + GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper); }; } // namespace internal @@ -920,13 +912,13 @@ class AssertHelper { // << "There are still pending requests " << "on port " << port; // Generates a nonfatal failure with a generic message. -#define ADD_FAILURE() GTEST_NONFATAL_FAILURE("Failed") +#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed") // Generates a fatal failure with a generic message. -#define FAIL() GTEST_FATAL_FAILURE("Failed") +#define FAIL() GTEST_FATAL_FAILURE_("Failed") // Generates a success with a generic message. -#define SUCCEED() GTEST_SUCCESS("Succeeded") +#define SUCCEED() GTEST_SUCCESS_("Succeeded") // Macros for testing exceptions. // @@ -938,31 +930,31 @@ class AssertHelper { // Tests that the statement throws an exception. #define EXPECT_THROW(statement, expected_exception) \ - GTEST_TEST_THROW(statement, expected_exception, GTEST_NONFATAL_FAILURE) + GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_) #define EXPECT_NO_THROW(statement) \ - GTEST_TEST_NO_THROW(statement, GTEST_NONFATAL_FAILURE) + GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_) #define EXPECT_ANY_THROW(statement) \ - GTEST_TEST_ANY_THROW(statement, GTEST_NONFATAL_FAILURE) + GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_) #define ASSERT_THROW(statement, expected_exception) \ - GTEST_TEST_THROW(statement, expected_exception, GTEST_FATAL_FAILURE) + GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_) #define ASSERT_NO_THROW(statement) \ - GTEST_TEST_NO_THROW(statement, GTEST_FATAL_FAILURE) + GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_) #define ASSERT_ANY_THROW(statement) \ - GTEST_TEST_ANY_THROW(statement, GTEST_FATAL_FAILURE) + GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_) // Boolean assertions. #define EXPECT_TRUE(condition) \ - GTEST_TEST_BOOLEAN(condition, #condition, false, true, \ - GTEST_NONFATAL_FAILURE) + GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ + GTEST_NONFATAL_FAILURE_) #define EXPECT_FALSE(condition) \ - GTEST_TEST_BOOLEAN(!(condition), #condition, true, false, \ - GTEST_NONFATAL_FAILURE) + GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ + GTEST_NONFATAL_FAILURE_) #define ASSERT_TRUE(condition) \ - GTEST_TEST_BOOLEAN(condition, #condition, false, true, \ - GTEST_FATAL_FAILURE) + GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ + GTEST_FATAL_FAILURE_) #define ASSERT_FALSE(condition) \ - GTEST_TEST_BOOLEAN(!(condition), #condition, true, false, \ - GTEST_FATAL_FAILURE) + GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ + GTEST_FATAL_FAILURE_) // Includes the auto-generated header that implements a family of // generic predicate assertion macros. @@ -1016,7 +1008,7 @@ class AssertHelper { #define EXPECT_EQ(expected, actual) \ EXPECT_PRED_FORMAT2(::testing::internal:: \ - EqHelper<GTEST_IS_NULL_LITERAL(expected)>::Compare, \ + EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \ expected, actual) #define EXPECT_NE(expected, actual) \ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual) @@ -1031,7 +1023,7 @@ class AssertHelper { #define ASSERT_EQ(expected, actual) \ ASSERT_PRED_FORMAT2(::testing::internal:: \ - EqHelper<GTEST_IS_NULL_LITERAL(expected)>::Compare, \ + EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \ expected, actual) #define ASSERT_NE(val1, val2) \ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) @@ -1154,6 +1146,20 @@ AssertionResult DoubleLE(const char* expr1, const char* expr2, #endif // GTEST_OS_WINDOWS +// Macros that execute statement and check that it doesn't generate new fatal +// failures in the current thread. +// +// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); +// +// Examples: +// +// EXPECT_NO_FATAL_FAILURE(Process()); +// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed"; +// +#define ASSERT_NO_FATAL_FAILURE(statement) \ + GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_) +#define EXPECT_NO_FATAL_FAILURE(statement) \ + GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_) // Causes a trace (including the source file path, the current line // number, and the given message) to be included in every test failure @@ -1167,7 +1173,7 @@ AssertionResult DoubleLE(const char* expr1, const char* expr2, // to appear in the same block - as long as they are on different // lines. #define SCOPED_TRACE(message) \ - ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN(gtest_trace_, __LINE__)(\ + ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\ __FILE__, __LINE__, ::testing::Message() << (message)) @@ -1188,7 +1194,7 @@ AssertionResult DoubleLE(const char* expr1, const char* expr2, // } #define TEST(test_case_name, test_name)\ - GTEST_TEST(test_case_name, test_name, ::testing::Test) + GTEST_TEST_(test_case_name, test_name, ::testing::Test) // Defines a test that uses a test fixture. @@ -1218,7 +1224,7 @@ AssertionResult DoubleLE(const char* expr1, const char* expr2, // } #define TEST_F(test_fixture, test_name)\ - GTEST_TEST(test_fixture, test_name, test_fixture) + GTEST_TEST_(test_fixture, test_name, test_fixture) // Use this macro in main() to run all tests. It returns 0 if all // tests are successful, or 1 otherwise. |