summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDino Radakovic <dinor@google.com>2021-12-15 16:35:29 (GMT)
committerCopybara-Service <copybara-worker@google.com>2021-12-15 16:36:08 (GMT)
commit97a467571a0f615a4d96e79e4399c43221ca1232 (patch)
treeb5c38d3e56ad243b781fad4d85132e8757e37956
parent054a986a8513149e8374fc669a5fe40117ca6b41 (diff)
downloadgoogletest-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.cc32
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("", ""));
+}