Value-parameterized tests and many bugfixes
This commit is contained in:
@@ -66,6 +66,7 @@
|
||||
#include <gtest/internal/gtest-string.h>
|
||||
#include <gtest/gtest-death-test.h>
|
||||
#include <gtest/gtest-message.h>
|
||||
#include <gtest/gtest-param-test.h>
|
||||
#include <gtest/gtest_prod.h>
|
||||
#include <gtest/gtest-test-part.h>
|
||||
#include <gtest/gtest-typed-test.h>
|
||||
@@ -483,6 +484,12 @@ class UnitTest {
|
||||
// or NULL if no test is running.
|
||||
const TestInfo* current_test_info() const;
|
||||
|
||||
#ifdef GTEST_HAS_PARAM_TEST
|
||||
// Returns the ParameterizedTestCaseRegistry object used to keep track of
|
||||
// value-parameterized tests and instantiate and register them.
|
||||
internal::ParameterizedTestCaseRegistry& parameterized_test_registry();
|
||||
#endif // GTEST_HAS_PARAM_TEST
|
||||
|
||||
// Accessors for the implementation object.
|
||||
internal::UnitTestImpl* impl() { return impl_; }
|
||||
const internal::UnitTestImpl* impl() const { return impl_; }
|
||||
@@ -886,6 +893,65 @@ class AssertHelper {
|
||||
|
||||
} // namespace internal
|
||||
|
||||
#ifdef GTEST_HAS_PARAM_TEST
|
||||
// The abstract base class that all value-parameterized tests inherit from.
|
||||
//
|
||||
// This class adds support for accessing the test parameter value via
|
||||
// the GetParam() method.
|
||||
//
|
||||
// Use it with one of the parameter generator defining functions, like Range(),
|
||||
// Values(), ValuesIn(), Bool(), and Combine().
|
||||
//
|
||||
// class FooTest : public ::testing::TestWithParam<int> {
|
||||
// protected:
|
||||
// FooTest() {
|
||||
// // Can use GetParam() here.
|
||||
// }
|
||||
// virtual ~FooTest() {
|
||||
// // Can use GetParam() here.
|
||||
// }
|
||||
// virtual void SetUp() {
|
||||
// // Can use GetParam() here.
|
||||
// }
|
||||
// virtual void TearDown {
|
||||
// // Can use GetParam() here.
|
||||
// }
|
||||
// };
|
||||
// TEST_P(FooTest, DoesBar) {
|
||||
// // Can use GetParam() method here.
|
||||
// Foo foo;
|
||||
// ASSERT_TRUE(foo.DoesBar(GetParam()));
|
||||
// }
|
||||
// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10));
|
||||
|
||||
template <typename T>
|
||||
class TestWithParam : public Test {
|
||||
public:
|
||||
typedef T ParamType;
|
||||
|
||||
// The current parameter value. Is also available in the test fixture's
|
||||
// constructor.
|
||||
const ParamType& GetParam() const { return *parameter_; }
|
||||
|
||||
private:
|
||||
// Sets parameter value. The caller is responsible for making sure the value
|
||||
// remains alive and unchanged throughout the current test.
|
||||
static void SetParam(const ParamType* parameter) {
|
||||
parameter_ = parameter;
|
||||
}
|
||||
|
||||
// Static value used for accessing parameter during a test lifetime.
|
||||
static const ParamType* parameter_;
|
||||
|
||||
// TestClass must be a subclass of TestWithParam<T>.
|
||||
template <class TestClass> friend class internal::ParameterizedTestFactory;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
const T* TestWithParam<T>::parameter_ = NULL;
|
||||
|
||||
#endif // GTEST_HAS_PARAM_TEST
|
||||
|
||||
// Macros for indicating success/failure in test code.
|
||||
|
||||
// ADD_FAILURE unconditionally adds a failure to the current test.
|
||||
|
||||
Reference in New Issue
Block a user