Index: extensions/common/url_pattern_set_unittest.cc |
diff --git a/extensions/common/url_pattern_set_unittest.cc b/extensions/common/url_pattern_set_unittest.cc |
index 89b5435b820dc1fd0937c44c896fe6bda670b0d2..9dee5ec0d5c4707f84363bf8cf9633c8ff0e767e 100644 |
--- a/extensions/common/url_pattern_set_unittest.cc |
+++ b/extensions/common/url_pattern_set_unittest.cc |
@@ -17,6 +17,14 @@ void AddPattern(URLPatternSet* set, const std::string& pattern) { |
set->AddPattern(URLPattern(schemes, pattern)); |
} |
+URLPatternSet GetAllURLsPattern() { |
+ URLPatternSet set; |
+ URLPattern pattern; |
+ pattern.SetMatchAllURLs(true); |
+ set.AddPattern(pattern); |
+ return set; |
+} |
+ |
URLPatternSet Patterns(const std::string& pattern) { |
URLPatternSet set; |
AddPattern(&set, pattern); |
@@ -393,4 +401,108 @@ TEST(URLPatternSetTest, NwayUnion) { |
} |
} |
+TEST(URLPatternSetTest, AllURLsSpecialCases) { |
+ URLPatternSet empty; |
+ URLPatternSet all_urls = GetAllURLsPattern(); |
+ URLPatternSet specific; |
+ AddPattern(&specific, "http://www.google.com/*"); |
+ AddPattern(&specific, "http://www.yahoo.com/*"); |
+ |
+ { |
+ URLPatternSet result; |
+ result.AddPatterns(specific); |
+ EXPECT_EQ(specific, result); |
+ result.AddPatterns(all_urls); |
+ EXPECT_EQ(all_urls, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ result.AddPatterns(all_urls); |
+ EXPECT_EQ(all_urls, result); |
+ result.AddPatterns(specific); |
+ EXPECT_EQ(all_urls, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(all_urls, specific, &result); |
+ EXPECT_EQ(all_urls, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(specific, all_urls, &result); |
+ EXPECT_EQ(all_urls, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ URLPatternSet::CreateIntersection(all_urls, specific, &result); |
+ EXPECT_EQ(specific, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ URLPatternSet::CreateIntersection(specific, all_urls, &result); |
+ EXPECT_EQ(specific, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ URLPatternSet::CreateDifference(all_urls, specific, &result); |
+ EXPECT_EQ(all_urls, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ URLPatternSet::CreateDifference(specific, all_urls, &result); |
+ EXPECT_EQ(empty, result); |
+ } |
+} |
+ |
+TEST(URLPatternSetTest, OverlappingURLsSpecialCases) { |
+ URLPatternSet empty; |
+ URLPatternSet specific; |
+ AddPattern(&specific, "http://www.google.com/*"); |
+ AddPattern(&specific, "http://www.yahoo.com/*"); |
+ |
+ URLPatternSet overlapping; |
+ AddPattern(&overlapping, "*://www.google.com/*"); |
+ AddPattern(&overlapping, "http://*.google.com/*"); |
+ |
+ { |
+ URLPatternSet result; |
+ result.AddPatterns(overlapping); |
+ EXPECT_EQ(overlapping, result); |
+ |
+ result.AddPatterns(specific); |
+ URLPatternSet expected; |
+ expected.AddPatterns(overlapping); |
+ AddPattern(&expected, "http://www.yahoo.com/*"); |
+ EXPECT_EQ(expected, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(specific, overlapping, &result); |
+ |
+ URLPatternSet expected; |
+ expected.AddPatterns(overlapping); |
+ AddPattern(&expected, "http://www.yahoo.com/*"); |
+ EXPECT_EQ(expected, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ URLPatternSet::CreateIntersection(specific, overlapping, &result); |
+ URLPatternSet expected; |
+ AddPattern(&expected, "http://www.google.com/*"); |
+ EXPECT_EQ(expected, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ URLPatternSet::CreateDifference(specific, overlapping, &result); |
+ URLPatternSet expected; |
+ AddPattern(&expected, "http://www.yahoo.com/*"); |
+ EXPECT_EQ(expected, result); |
+ } |
+ { |
+ URLPatternSet result; |
+ URLPatternSet::CreateDifference(overlapping, specific, &result); |
+ EXPECT_EQ(overlapping, result); |
+ } |
+} |
+ |
} // namespace extensions |