Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Unified Diff: extensions/common/url_pattern_set_unittest.cc

Issue 181043006: Implement correct logic for URLPatternSet set operators. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address code review feedback. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/common/url_pattern_set.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « extensions/common/url_pattern_set.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698