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

Side by Side 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: Created 6 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/common/url_pattern_set.h" 5 #include "extensions/common/url_pattern_set.h"
6 6
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "url/gurl.h" 9 #include "url/gurl.h"
10 10
11 namespace extensions { 11 namespace extensions {
12 12
13 namespace { 13 namespace {
14 14
15 void AddPattern(URLPatternSet* set, const std::string& pattern) { 15 void AddPattern(URLPatternSet* set, const std::string& pattern) {
16 int schemes = URLPattern::SCHEME_ALL; 16 int schemes = URLPattern::SCHEME_ALL;
17 set->AddPattern(URLPattern(schemes, pattern)); 17 set->AddPattern(URLPattern(schemes, pattern));
18 } 18 }
19 19
20 void AddMatchAllURLsPattern(URLPatternSet* set) {
21 URLPattern pattern;
22 pattern.SetMatchAllURLs(true);
23 set->AddPattern(pattern);
24 }
25
20 URLPatternSet Patterns(const std::string& pattern) { 26 URLPatternSet Patterns(const std::string& pattern) {
21 URLPatternSet set; 27 URLPatternSet set;
22 AddPattern(&set, pattern); 28 AddPattern(&set, pattern);
23 return set; 29 return set;
24 } 30 }
25 31
26 URLPatternSet Patterns(const std::string& pattern1, 32 URLPatternSet Patterns(const std::string& pattern1,
27 const std::string& pattern2) { 33 const std::string& pattern2) {
28 URLPatternSet set; 34 URLPatternSet set;
29 AddPattern(&set, pattern1); 35 AddPattern(&set, pattern1);
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 AddPattern(&expected, yahoo_a); 392 AddPattern(&expected, yahoo_a);
387 AddPattern(&expected, yahoo_b); 393 AddPattern(&expected, yahoo_b);
388 AddPattern(&expected, yahoo_c); 394 AddPattern(&expected, yahoo_c);
389 AddPattern(&expected, reddit_a); 395 AddPattern(&expected, reddit_a);
390 AddPattern(&expected, reddit_b); 396 AddPattern(&expected, reddit_b);
391 AddPattern(&expected, reddit_c); 397 AddPattern(&expected, reddit_c);
392 EXPECT_EQ(expected, result); 398 EXPECT_EQ(expected, result);
393 } 399 }
394 } 400 }
395 401
402 TEST(URLPatternSetTest, SubsetSpecialCases) {
403 URLPatternSet empty;
404 URLPatternSet all_urls;
405 AddMatchAllURLsPattern(&all_urls);
not at google - send to devlin 2014/02/27 21:10:46 presumably these sets are copyable. so you could h
406 URLPatternSet specific;
407 AddPattern(&specific, "http://www.google.com/*");
408 AddPattern(&specific, "http://www.yahoo.com/*");
409
not at google - send to devlin 2014/02/27 21:10:46 there are some other cases here that it might be g
410 {
411 URLPatternSet result;
412 result.AddPatterns(specific);
413 EXPECT_EQ(specific, result);
414 result.AddPatterns(all_urls);
415 EXPECT_EQ(all_urls, result);
416 }
417 {
418 URLPatternSet result;
419 result.AddPatterns(all_urls);
420 EXPECT_EQ(all_urls, result);
421 result.AddPatterns(specific);
422 EXPECT_EQ(all_urls, result);
423 }
424 {
425 URLPatternSet result;
426 URLPatternSet::CreateUnion(all_urls, specific, &result);
427 EXPECT_EQ(all_urls, result);
428 }
429 {
430 URLPatternSet result;
431 URLPatternSet::CreateUnion(specific, all_urls, &result);
432 EXPECT_EQ(all_urls, result);
433 }
434 {
435 URLPatternSet result;
436 URLPatternSet::CreateIntersection(all_urls, specific, &result);
437 EXPECT_EQ(specific, result);
438 }
439 {
440 URLPatternSet result;
441 URLPatternSet::CreateIntersection(specific, all_urls, &result);
442 EXPECT_EQ(specific, result);
443 }
444 {
445 URLPatternSet result;
446 URLPatternSet::CreateDifference(all_urls, specific, &result);
447 EXPECT_EQ(all_urls, result);
448 }
449 {
450 URLPatternSet result;
451 URLPatternSet::CreateDifference(specific, all_urls, &result);
452 EXPECT_EQ(empty, result);
453 }
454 }
455
396 } // namespace extensions 456 } // namespace extensions
OLDNEW
« extensions/common/url_pattern_set.cc ('K') | « extensions/common/url_pattern_set.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698