Index: chrome/common/extensions/url_pattern_set_unittest.cc |
diff --git a/chrome/common/extensions/url_pattern_set_unittest.cc b/chrome/common/extensions/url_pattern_set_unittest.cc |
index ff78d900aaa55dcc60ce597de8b00cad204ebcc3..0d13856ce759a44948e73a40cb270e0a46a73c8a 100644 |
--- a/chrome/common/extensions/url_pattern_set_unittest.cc |
+++ b/chrome/common/extensions/url_pattern_set_unittest.cc |
@@ -9,12 +9,27 @@ |
namespace { |
-static void AddPattern(URLPatternSet* set, const std::string& pattern) { |
+void AddPattern(URLPatternSet* set, const std::string& pattern) { |
int schemes = URLPattern::SCHEME_ALL; |
set->AddPattern(URLPattern(schemes, pattern)); |
} |
+URLPatternSet Patterns(const std::string& pattern) { |
+ URLPatternSet set; |
+ AddPattern(&set, pattern); |
+ return set; |
} |
+ |
+URLPatternSet Patterns(const std::string& pattern1, |
+ const std::string& pattern2) { |
+ URLPatternSet set; |
+ AddPattern(&set, pattern1); |
+ AddPattern(&set, pattern2); |
+ return set; |
+} |
+ |
+} |
+ |
TEST(URLPatternSetTest, Empty) { |
URLPatternSet set; |
EXPECT_FALSE(set.MatchesURL(GURL("http://www.foo.com/bar"))); |
@@ -126,36 +141,6 @@ TEST(URLPatternSetTest, CreateIntersection) { |
EXPECT_TRUE(set2.Contains(result)); |
} |
-TEST(URLPatternSetTest, CreateUnion) { |
not at google - send to devlin
2012/06/12 20:40:51
oops
|
- URLPatternSet empty_set; |
- |
- URLPatternSet set1; |
- AddPattern(&set1, "http://www.google.com/f*"); |
- AddPattern(&set1, "http://www.yahoo.com/b*"); |
- |
- URLPatternSet expected; |
- AddPattern(&expected, "http://www.google.com/f*"); |
- AddPattern(&expected, "http://www.yahoo.com/b*"); |
- |
- // Union with an empty set. |
- URLPatternSet result; |
- URLPatternSet::CreateUnion(set1, empty_set, &result); |
- EXPECT_EQ(expected, result); |
- |
- // Union with a real set. |
- URLPatternSet set2; |
- AddPattern(&set2, "http://www.reddit.com/f*"); |
- AddPattern(&set2, "http://www.yahoo.com/z*"); |
- AddPattern(&set2, "http://www.google.com/f*"); |
- |
- AddPattern(&expected, "http://www.reddit.com/f*"); |
- AddPattern(&expected, "http://www.yahoo.com/z*"); |
- |
- result.ClearPatterns(); |
- URLPatternSet::CreateUnion(set1, set2, &result); |
- EXPECT_EQ(expected, result); |
-} |
- |
TEST(URLPatternSetTest, Contains) { |
URLPatternSet set1; |
URLPatternSet set2; |
@@ -199,3 +184,186 @@ TEST(URLPatternSetTest, Duplicates) { |
// The sets should still be equal after adding a duplicate. |
EXPECT_EQ(set2, set1); |
} |
+ |
+TEST(URLPatternSetTest, CreateUnion) { |
+ URLPatternSet empty_set; |
+ |
+ URLPatternSet set1; |
+ AddPattern(&set1, "http://www.google.com/f*"); |
+ AddPattern(&set1, "http://www.yahoo.com/b*"); |
+ |
+ URLPatternSet expected; |
+ AddPattern(&expected, "http://www.google.com/f*"); |
+ AddPattern(&expected, "http://www.yahoo.com/b*"); |
+ |
+ // Union with an empty set. |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(set1, empty_set, &result); |
+ EXPECT_EQ(expected, result); |
+ |
+ // Union with a real set. |
+ URLPatternSet set2; |
+ AddPattern(&set2, "http://www.reddit.com/f*"); |
+ AddPattern(&set2, "http://www.yahoo.com/z*"); |
+ AddPattern(&set2, "http://www.google.com/f*"); |
+ |
+ AddPattern(&expected, "http://www.reddit.com/f*"); |
+ AddPattern(&expected, "http://www.yahoo.com/z*"); |
+ |
+ result.ClearPatterns(); |
+ URLPatternSet::CreateUnion(set1, set2, &result); |
+ EXPECT_EQ(expected, result); |
+} |
+ |
+TEST(URLPatternSetTest, NwayUnion) { |
+ std::string google_a = "http://www.google.com/a*"; |
+ std::string google_b = "http://www.google.com/b*"; |
+ std::string google_c = "http://www.google.com/c*"; |
+ std::string yahoo_a = "http://www.yahoo.com/a*"; |
+ std::string yahoo_b = "http://www.yahoo.com/b*"; |
+ std::string yahoo_c = "http://www.yahoo.com/c*"; |
+ std::string reddit_a = "http://www.reddit.com/a*"; |
+ std::string reddit_b = "http://www.reddit.com/b*"; |
+ std::string reddit_c = "http://www.reddit.com/c*"; |
+ |
+ // Empty list. |
+ { |
+ std::vector<URLPatternSet> empty; |
+ |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(empty, &result); |
+ |
+ URLPatternSet expected; |
+ EXPECT_EQ(expected, result); |
+ } |
+ |
+ // Singleton list. |
+ { |
+ std::vector<URLPatternSet> test; |
+ test.push_back(Patterns(google_a)); |
+ |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(test, &result); |
+ |
+ URLPatternSet expected = Patterns(google_a); |
+ EXPECT_EQ(expected, result); |
+ } |
+ |
+ // List with 2 elements. |
+ { |
+ |
+ std::vector<URLPatternSet> test; |
+ test.push_back(Patterns(google_a, google_b)); |
+ test.push_back(Patterns(google_b, google_c)); |
+ |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(test, &result); |
+ |
+ URLPatternSet expected; |
+ AddPattern(&expected, google_a); |
+ AddPattern(&expected, google_b); |
+ AddPattern(&expected, google_c); |
+ EXPECT_EQ(expected, result); |
+ } |
+ |
+ // List with 3 elements. |
+ { |
+ std::vector<URLPatternSet> test; |
+ test.push_back(Patterns(google_a, google_b)); |
+ test.push_back(Patterns(google_b, google_c)); |
+ test.push_back(Patterns(yahoo_a, yahoo_b)); |
+ |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(test, &result); |
+ |
+ URLPatternSet expected; |
+ AddPattern(&expected, google_a); |
+ AddPattern(&expected, google_b); |
+ AddPattern(&expected, google_c); |
+ AddPattern(&expected, yahoo_a); |
+ AddPattern(&expected, yahoo_b); |
+ EXPECT_EQ(expected, result); |
+ } |
+ |
+ // List with 7 elements. |
+ { |
+ std::vector<URLPatternSet> test; |
+ test.push_back(Patterns(google_a)); |
+ test.push_back(Patterns(google_b)); |
+ test.push_back(Patterns(google_c)); |
+ test.push_back(Patterns(yahoo_a)); |
+ test.push_back(Patterns(yahoo_b)); |
+ test.push_back(Patterns(yahoo_c)); |
+ test.push_back(Patterns(reddit_a)); |
+ |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(test, &result); |
+ |
+ URLPatternSet expected; |
+ AddPattern(&expected, google_a); |
+ AddPattern(&expected, google_b); |
+ AddPattern(&expected, google_c); |
+ AddPattern(&expected, yahoo_a); |
+ AddPattern(&expected, yahoo_b); |
+ AddPattern(&expected, yahoo_c); |
+ AddPattern(&expected, reddit_a); |
+ EXPECT_EQ(expected, result); |
+ } |
+ |
+ // List with 8 elements. |
+ { |
+ std::vector<URLPatternSet> test; |
+ test.push_back(Patterns(google_a)); |
+ test.push_back(Patterns(google_b)); |
+ test.push_back(Patterns(google_c)); |
+ test.push_back(Patterns(yahoo_a)); |
+ test.push_back(Patterns(yahoo_b)); |
+ test.push_back(Patterns(yahoo_c)); |
+ test.push_back(Patterns(reddit_a)); |
+ test.push_back(Patterns(reddit_b)); |
+ |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(test, &result); |
+ |
+ URLPatternSet expected; |
+ AddPattern(&expected, google_a); |
+ AddPattern(&expected, google_b); |
+ AddPattern(&expected, google_c); |
+ AddPattern(&expected, yahoo_a); |
+ AddPattern(&expected, yahoo_b); |
+ AddPattern(&expected, yahoo_c); |
+ AddPattern(&expected, reddit_a); |
+ AddPattern(&expected, reddit_b); |
+ EXPECT_EQ(expected, result); |
+ } |
+ |
+ // List with 9 elements. |
+ { |
+ |
+ std::vector<URLPatternSet> test; |
+ test.push_back(Patterns(google_a)); |
+ test.push_back(Patterns(google_b)); |
+ test.push_back(Patterns(google_c)); |
+ test.push_back(Patterns(yahoo_a)); |
+ test.push_back(Patterns(yahoo_b)); |
+ test.push_back(Patterns(yahoo_c)); |
+ test.push_back(Patterns(reddit_a)); |
+ test.push_back(Patterns(reddit_b)); |
+ test.push_back(Patterns(reddit_c)); |
+ |
+ URLPatternSet result; |
+ URLPatternSet::CreateUnion(test, &result); |
+ |
+ URLPatternSet expected; |
+ AddPattern(&expected, google_a); |
+ AddPattern(&expected, google_b); |
+ AddPattern(&expected, google_c); |
+ AddPattern(&expected, yahoo_a); |
+ AddPattern(&expected, yahoo_b); |
+ AddPattern(&expected, yahoo_c); |
+ AddPattern(&expected, reddit_a); |
+ AddPattern(&expected, reddit_b); |
+ AddPattern(&expected, reddit_c); |
+ EXPECT_EQ(expected, result); |
+ } |
+} |