91 #if GTEST_HAS_TYPED_TEST
98 typedef Types<char, int> TwoTypes;
108 typename TestFixture::Vector empty;
111 typename TestFixture::IntSet empty2;
134 template <
typename T>
135 class TypedTest1 :
public Test {
143 template <
typename T>
144 class TypedTest2 :
public Test {
159 template <
typename T>
160 class NumericTest :
public Test {
163 typedef Types<int, long> NumericTypes;
173 template <
typename T>
174 class TypedTestWithNames :
public Test {};
176 class TypedTestNames {
178 template <
typename T>
191 TYPED_TEST(TypedTestWithNames, TestSuiteName) {
194 ->current_test_info()
196 "TypedTestWithNames/char0");
200 ->current_test_info()
202 "TypedTestWithNames/int1");
206 #endif // GTEST_HAS_TYPED_TEST
209 #if GTEST_HAS_TYPED_TEST_P
211 using testing::Types;
212 using testing::internal::TypedTestSuitePState;
216 class TypedTestSuitePStateTest :
public Test {
218 void SetUp()
override {
219 state_.AddTestName(
"foo.cc", 0,
"FooTest",
"A");
220 state_.AddTestName(
"foo.cc", 0,
"FooTest",
"B");
221 state_.AddTestName(
"foo.cc", 0,
"FooTest",
"C");
224 TypedTestSuitePState state_;
227 TEST_F(TypedTestSuitePStateTest, SucceedsForMatchingList) {
228 const char*
tests =
"A, B, C";
230 state_.VerifyRegisteredTestNames(
"foo.cc", 1,
tests));
235 TEST_F(TypedTestSuitePStateTest, IgnoresOrderAndSpaces) {
236 const char*
tests =
"A,C, B";
238 state_.VerifyRegisteredTestNames(
"foo.cc", 1,
tests));
241 using TypedTestSuitePStateDeathTest = TypedTestSuitePStateTest;
243 TEST_F(TypedTestSuitePStateDeathTest, DetectsDuplicates) {
245 state_.VerifyRegisteredTestNames(
"foo.cc", 1,
"A, B, A, C"),
246 "foo\\.cc.1.?: Test A is listed more than once\\.");
249 TEST_F(TypedTestSuitePStateDeathTest, DetectsExtraTest) {
251 state_.VerifyRegisteredTestNames(
"foo.cc", 1,
"A, B, C, D"),
252 "foo\\.cc.1.?: No test named D can be found in this test suite\\.");
255 TEST_F(TypedTestSuitePStateDeathTest, DetectsMissedTest) {
257 state_.VerifyRegisteredTestNames(
"foo.cc", 1,
"A, C"),
258 "foo\\.cc.1.?: You forgot to list test B\\.");
263 TEST_F(TypedTestSuitePStateDeathTest, DetectsTestAfterRegistration) {
264 state_.VerifyRegisteredTestNames(
"foo.cc", 1,
"A, B, C");
266 state_.AddTestName(
"foo.cc", 2,
"FooTest",
"D"),
267 "foo\\.cc.2.?: Test D must be defined before REGISTER_TYPED_TEST_SUITE_P"
268 "\\(FooTest, \\.\\.\\.\\)\\.");
274 template <
typename T>
301 ValuesAreCorrect, ValuesAreStillCorrect);
303 typedef Types<short, long> MyTwoTypes;
308 template <
typename T>
309 class TypeParametrizedTestWithNames :
public Test {};
313 TYPED_TEST_P(TypeParametrizedTestWithNames, TestSuiteName) {
316 ->current_test_info()
318 "CustomName/TypeParametrizedTestWithNames/parChar0");
322 ->current_test_info()
324 "CustomName/TypeParametrizedTestWithNames/parInt1");
330 class TypeParametrizedTestNames {
332 template <
typename T>
344 TwoTypes, TypeParametrizedTestNames);
349 template <
typename T>
350 class TypedTestP1 :
public Test {
357 using IntAfterTypedTestSuiteP = int;
364 using IntBeforeRegisterTypedTestSuiteP = int;
368 template <
typename T>
369 class TypedTestP2 :
public Test {
382 IntAfterTypedTestSuiteP after = 0;
383 IntBeforeRegisterTypedTestSuiteP before = 0;
397 typedef Types<std::vector<double>, std::set<char> > MyContainers;
405 template <
typename T>
406 class NumericTest :
public Test {
420 DefaultIsZero, ZeroIsLessThanOne);
421 typedef Types<int, double> NumericTypes;
424 static const char* GetTestName() {
428 template <
typename T>
class TrimmedTest :
public Test { };
437 Test1, Test2,Test3 , Test4 ,Test5 );
438 template <
typename T1,
typename T2>
struct MyPair {};
440 typedef Types<int, double, MyPair<int, int> > TrimTypes;
445 #endif // GTEST_HAS_TYPED_TEST_P
447 #if !defined(GTEST_HAS_TYPED_TEST) && !defined(GTEST_HAS_TYPED_TEST_P)
455 TEST(DummyTest, TypedTestsAreNotSupportedOnThisPlatform) {}
461 #endif // #if !defined(GTEST_HAS_TYPED_TEST) && !defined(GTEST_HAS_TYPED_TEST_P)