31#include "test/gtest-typed-test_test.h"
37#include "gtest/gtest.h"
40GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127 )
53 static void SetUpTestSuite() {
57 static void TearDownTestSuite() {
67 typedef std::vector<T> Vector;
68 typedef std::set<int> IntSet;
74 void SetUp()
override {
79 void TearDown()
override {
102 EXPECT_EQ(5, *TestFixture::shared_);
106 typename TestFixture::Vector empty;
107 EXPECT_EQ(0U, empty.size());
109 typename TestFixture::IntSet empty2;
110 EXPECT_EQ(0U, empty2.size());
114 EXPECT_EQ(2, this->value_);
119TYPED_TEST(
CommonTest, ValuesAreStillCorrect) {
122 ASSERT_TRUE(this->shared_ !=
nullptr);
123 EXPECT_EQ(5, *this->shared_);
126 EXPECT_EQ(
static_cast<TypeParam
>(2), this->value_);
165 EXPECT_EQ(0, TypeParam());
176 template <
typename T>
177 static std::string GetName(
int i) {
178 if (std::is_same<T, char>::value) {
179 return std::string(
"char") + ::testing::PrintToString(i);
181 if (std::is_same<T, int>::value) {
182 return std::string(
"int") + ::testing::PrintToString(i);
190 if (std::is_same<TypeParam, char>::value) {
191 EXPECT_STREQ(::testing::UnitTest::GetInstance()
192 ->current_test_info()
194 "TypedTestWithNames/char0");
196 if (std::is_same<TypeParam, int>::value) {
197 EXPECT_STREQ(::testing::UnitTest::GetInstance()
198 ->current_test_info()
200 "TypedTestWithNames/int1");
205using testing::internal::TypedTestSuitePState;
211 void SetUp()
override {
212 state_.AddTestName(
"foo.cc", 0,
"FooTest",
"A");
213 state_.AddTestName(
"foo.cc", 0,
"FooTest",
"B");
214 state_.AddTestName(
"foo.cc", 0,
"FooTest",
"C");
217 TypedTestSuitePState state_;
221 const char* tests =
"A, B, C";
223 state_.VerifyRegisteredTestNames(
"Suite",
"foo.cc", 1, tests));
229 const char* tests =
"A,C, B";
231 state_.VerifyRegisteredTestNames(
"Suite",
"foo.cc", 1, tests));
237 EXPECT_DEATH_IF_SUPPORTED(
238 state_.VerifyRegisteredTestNames(
"Suite",
"foo.cc", 1,
"A, B, A, C"),
239 "foo\\.cc.1.?: Test A is listed more than once\\.");
243 EXPECT_DEATH_IF_SUPPORTED(
244 state_.VerifyRegisteredTestNames(
"Suite",
"foo.cc", 1,
"A, B, C, D"),
245 "foo\\.cc.1.?: No test named D can be found in this test suite\\.");
249 EXPECT_DEATH_IF_SUPPORTED(
250 state_.VerifyRegisteredTestNames(
"Suite",
"foo.cc", 1,
"A, C"),
251 "foo\\.cc.1.?: You forgot to list test B\\.");
257 state_.VerifyRegisteredTestNames(
"Suite",
"foo.cc", 1,
"A, B, C");
258 EXPECT_DEATH_IF_SUPPORTED(
259 state_.AddTestName(
"foo.cc", 2,
"FooTest",
"D"),
260 "foo\\.cc.2.?: Test D must be defined before REGISTER_TYPED_TEST_SUITE_P"
261 "\\(FooTest, \\.\\.\\.\\)\\.");
276 EXPECT_EQ(5, *TestFixture::shared_);
280 EXPECT_EQ(2, this->value_);
288 ASSERT_TRUE(this->shared_ !=
nullptr);
289 EXPECT_EQ(5, *this->shared_);
290 EXPECT_EQ(2, this->value_);
294 ValuesAreCorrect, ValuesAreStillCorrect);
307 if (std::is_same<TypeParam, char>::value) {
308 EXPECT_STREQ(::testing::UnitTest::GetInstance()
309 ->current_test_info()
311 "CustomName/TypeParametrizedTestWithNames/parChar0");
313 if (std::is_same<TypeParam, int>::value) {
314 EXPECT_STREQ(::testing::UnitTest::GetInstance()
315 ->current_test_info()
317 "CustomName/TypeParametrizedTestWithNames/parInt1");
325 template <
typename T>
326 static std::string GetName(
int i) {
327 if (std::is_same<T, char>::value) {
328 return std::string(
"parChar") + ::testing::PrintToString(i);
330 if (std::is_same<T, int>::value) {
331 return std::string(
"parInt") + ::testing::PrintToString(i);
350using IntAfterTypedTestSuiteP = int;
357using IntBeforeRegisterTypedTestSuiteP = int;
375IntAfterTypedTestSuiteP after = 0;
376IntBeforeRegisterTypedTestSuiteP before = 0;
380INSTANTIATE_TYPED_TEST_SUITE_P(Int,
TypedTestP1,
int);
405 EXPECT_EQ(0, TypeParam());
408TYPED_TEST_P(NumericTest, ZeroIsLessThanOne) {
409 EXPECT_LT(TypeParam(0), TypeParam(1));
412REGISTER_TYPED_TEST_SUITE_P(NumericTest,
413 DefaultIsZero, ZeroIsLessThanOne);
415INSTANTIATE_TYPED_TEST_SUITE_P(My, NumericTest, NumericTypes);
417static const char* GetTestName() {
418 return testing::UnitTest::GetInstance()->current_test_info()->name();
423TYPED_TEST_P(
TrimmedTest, Test1) { EXPECT_STREQ(
"Test1", GetTestName()); }
424TYPED_TEST_P(TrimmedTest, Test2) { EXPECT_STREQ(
"Test2", GetTestName()); }
425TYPED_TEST_P(TrimmedTest, Test3) { EXPECT_STREQ(
"Test3", GetTestName()); }
426TYPED_TEST_P(TrimmedTest, Test4) { EXPECT_STREQ(
"Test4", GetTestName()); }
427TYPED_TEST_P(TrimmedTest, Test5) { EXPECT_STREQ(
"Test5", GetTestName()); }
428REGISTER_TYPED_TEST_SUITE_P(
430 Test1, Test2,Test3 , Test4 ,Test5 );
431template <
typename T1,
typename T2>
struct MyPair {};
Definition gtest-typed-test_test.cc:49
Definition gtest-typed-test_test.h:43
Definition gtest-typed-test_test.cc:268
Definition gtest-typed-test_test.cc:323
Definition gtest-typed-test_test.cc:302
Definition gtest-typed-test_test.cc:133
Definition gtest-typed-test_test.cc:142
Definition googletest-output-test_.cc:766
Definition gtest-typed-test_test.cc:343
Definition gtest-typed-test_test.cc:362
Definition gtest-typed-test_test.cc:209
Definition googletest-output-test_.cc:764
Definition gtest-typed-test_test.cc:158
Definition gtest-typed-test_test.cc:399
Definition gtest-typed-test_test.cc:421
Definition gtest-typed-test_test.cc:431
Definition gtest-type-util.h:153