diff options
author | Dino Radakovic <dinor@google.com> | 2021-12-15 16:35:29 (GMT) |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2021-12-15 16:36:08 (GMT) |
commit | 97a467571a0f615a4d96e79e4399c43221ca1232 (patch) | |
tree | b5c38d3e56ad243b781fad4d85132e8757e37956 | |
parent | 054a986a8513149e8374fc669a5fe40117ca6b41 (diff) | |
download | googletest-97a467571a0f615a4d96e79e4399c43221ca1232.zip googletest-97a467571a0f615a4d96e79e4399c43221ca1232.tar.gz googletest-97a467571a0f615a4d96e79e4399c43221ca1232.tar.bz2 |
Release tests for UnitTestOptions::MatchesFilter
PiperOrigin-RevId: 416567004
Change-Id: Ic407e0fcdf8ffd1c012a1b12df2837bdac1dccb4
-rw-r--r-- | googletest/test/gtest_unittest.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/googletest/test/gtest_unittest.cc b/googletest/test/gtest_unittest.cc index 6b2632a..f70ca69 100644 --- a/googletest/test/gtest_unittest.cc +++ b/googletest/test/gtest_unittest.cc @@ -7799,3 +7799,35 @@ TEST(RegisterTest, WasRegistered) { FAIL() << "Didn't find the test!"; } + +// Test that the pattern globbing algorithm is linear. If not, this test should +// time out. +TEST(PatternGlobbingTest, MatchesFilterLinearRuntime) { + std::string name(100, 'a'); // Construct the string (a^100)b + name.push_back('b'); + + std::string pattern; // Construct the string ((a*)^100)b + for (int i = 0; i < 100; ++i) { + pattern.append("a*"); + } + pattern.push_back('b'); + + EXPECT_TRUE( + testing::internal::UnitTestOptions::MatchesFilter(name, pattern.c_str())); +} + +TEST(PatternGlobbingTest, MatchesFilterWithMultiplePatterns) { + const std::string name = "aaaa"; + EXPECT_TRUE(testing::internal::UnitTestOptions::MatchesFilter(name, "a*")); + EXPECT_TRUE(testing::internal::UnitTestOptions::MatchesFilter(name, "a*:")); + EXPECT_FALSE(testing::internal::UnitTestOptions::MatchesFilter(name, "ab")); + EXPECT_FALSE(testing::internal::UnitTestOptions::MatchesFilter(name, "ab:")); + EXPECT_TRUE(testing::internal::UnitTestOptions::MatchesFilter(name, "ab:a*")); +} + +TEST(PatternGlobbingTest, MatchesFilterEdgeCases) { + EXPECT_FALSE(testing::internal::UnitTestOptions::MatchesFilter("", "*a")); + EXPECT_TRUE(testing::internal::UnitTestOptions::MatchesFilter("", "*")); + EXPECT_FALSE(testing::internal::UnitTestOptions::MatchesFilter("a", "")); + EXPECT_TRUE(testing::internal::UnitTestOptions::MatchesFilter("", "")); +} |