diff options
author | vladlosev <vladlosev@861a406c-534a-0410-8894-cb66d6ee9925> | 2010-03-20 12:33:48 +0000 |
---|---|---|
committer | vladlosev <vladlosev@861a406c-534a-0410-8894-cb66d6ee9925> | 2010-03-20 12:33:48 +0000 |
commit | d13d1ed2189fa4284c9d8d202bb88916309682f1 (patch) | |
tree | 4e44a38cfdf4994d0d5d65b4e8a26975f2e4c8fc | |
parent | 5147b45584b1a782f016a59fdd251ce3810dc1c4 (diff) | |
download | gtest-d13d1ed2189fa4284c9d8d202bb88916309682f1.tar.gz gtest-d13d1ed2189fa4284c9d8d202bb88916309682f1.tar.bz2 gtest-d13d1ed2189fa4284c9d8d202bb88916309682f1.tar.xz |
Fixes comments and tests for the moment of generator parameter evaluation in INSTANTIATE_TEST_CASE_P.
git-svn-id: http://googletest.googlecode.com/svn/trunk@396 861a406c-534a-0410-8894-cb66d6ee9925
-rw-r--r-- | include/gtest/gtest-param-test.h | 9 | ||||
-rw-r--r-- | test/gtest-param-test_test.cc | 27 |
2 files changed, 25 insertions, 11 deletions
diff --git a/include/gtest/gtest-param-test.h b/include/gtest/gtest-param-test.h index c0c85e3..8100696 100644 --- a/include/gtest/gtest-param-test.h +++ b/include/gtest/gtest-param-test.h @@ -133,9 +133,12 @@ INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); // in the given test case, whether their definitions come before or // AFTER the INSTANTIATE_TEST_CASE_P statement. // -// Please also note that generator expressions are evaluated in -// RUN_ALL_TESTS(), after main() has started. This allows evaluation of -// parameter list based on command line parameters. +// Please also note that generator expressions (including parameters to the +// generators) are evaluated in InitGoogleTest(), after main() has started. +// This allows the user on one hand, to adjust generator parameters in order +// to dynamically determine a set of tests to run and on the other hand, +// give the user a chance to inspect the generated tests with Google Test +// reflection API before RUN_ALL_TESTS() is executed. // // You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc // for more examples. diff --git a/test/gtest-param-test_test.cc b/test/gtest-param-test_test.cc index 0288b6a..d0a0e73 100644 --- a/test/gtest-param-test_test.cc +++ b/test/gtest-param-test_test.cc @@ -692,13 +692,15 @@ INSTANTIATE_TEST_CASE_P(TestExpansionModule, TestGenerationTest, ValuesIn(test_generation_params)); // This test verifies that the element sequence (third parameter of -// INSTANTIATE_TEST_CASE_P) is evaluated in RUN_ALL_TESTS and not at the call -// site of INSTANTIATE_TEST_CASE_P. -// For that, we declare param_value_ to be a static member of -// GeneratorEvaluationTest and initialize it to 0. We set it to 1 in main(), -// just before invocation of RUN_ALL_TESTS. If the sequence is evaluated -// before that moment, INSTANTIATE_TEST_CASE_P will create a test with -// parameter 0, and the test body will fail the assertion. +// INSTANTIATE_TEST_CASE_P) is evaluated in InitGoogleTest() and neither at +// the call site of INSTANTIATE_TEST_CASE_P nor in RUN_ALL_TESTS(). For +// that, we declare param_value_ to be a static member of +// GeneratorEvaluationTest and initialize it to 0. We set it to 1 in +// main(), just before invocation of InitGoogleTest(). After calling +// InitGoogleTest(), we set the value to 2. If the sequence is evaluated +// before or after InitGoogleTest, INSTANTIATE_TEST_CASE_P will create a +// test with parameter other than 1, and the test body will fail the +// assertion. class GeneratorEvaluationTest : public TestWithParam<int> { public: static int param_value() { return param_value_; } @@ -815,10 +817,19 @@ int main(int argc, char **argv) { #if GTEST_HAS_PARAM_TEST // Used in TestGenerationTest test case. AddGlobalTestEnvironment(TestGenerationTest::Environment::Instance()); - // Used in GeneratorEvaluationTest test case. + // Used in GeneratorEvaluationTest test case. Tests that the updated value + // will be picked up for instantiating tests in GeneratorEvaluationTest. GeneratorEvaluationTest::set_param_value(1); #endif // GTEST_HAS_PARAM_TEST ::testing::InitGoogleTest(&argc, argv); + +#if GTEST_HAS_PARAM_TEST + // Used in GeneratorEvaluationTest test case. Tests that value updated + // here will NOT be used for instantiating tests in + // GeneratorEvaluationTest. + GeneratorEvaluationTest::set_param_value(2); +#endif // GTEST_HAS_PARAM_TEST + return RUN_ALL_TESTS(); } |