Home | History | Annotate | Download | only in matcher
      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
      3 // found in the LICENSE file.
      4 
      5 #include "extensions/common/matcher/regex_set_matcher.h"
      6 
      7 #include <set>
      8 
      9 #include "base/stl_util.h"
     10 #include "url/gurl.h"
     11 #include "testing/gtest/include/gtest/gtest.h"
     12 
     13 using extensions::StringPattern;
     14 using extensions::RegexSetMatcher;
     15 
     16 TEST(RegexSetMatcherTest, MatchRegexes) {
     17   StringPattern pattern_1("ab.*c", 42);
     18   StringPattern pattern_2("f*f", 17);
     19   StringPattern pattern_3("c(ar|ra)b|brac", 239);
     20   std::vector<const StringPattern*> regexes;
     21   regexes.push_back(&pattern_1);
     22   regexes.push_back(&pattern_2);
     23   regexes.push_back(&pattern_3);
     24   RegexSetMatcher matcher;
     25   matcher.AddPatterns(regexes);
     26 
     27   std::set<StringPattern::ID> result1;
     28   matcher.Match("http://abracadabra.com", &result1);
     29   EXPECT_EQ(2U, result1.size());
     30   EXPECT_TRUE(ContainsKey(result1, 42));
     31   EXPECT_TRUE(ContainsKey(result1, 239));
     32 
     33   std::set<StringPattern::ID> result2;
     34   matcher.Match("https://abfffffffffffffffffffffffffffffff.fi/cf", &result2);
     35   EXPECT_EQ(2U, result2.size());
     36   EXPECT_TRUE(ContainsKey(result2, 17));
     37   EXPECT_TRUE(ContainsKey(result2, 42));
     38 
     39   std::set<StringPattern::ID> result3;
     40   matcher.Match("http://nothing.com/", &result3);
     41   EXPECT_EQ(0U, result3.size());
     42 }
     43 
     44 TEST(RegexSetMatcherTest, CaseSensitivity) {
     45   StringPattern pattern_1("AAA", 51);
     46   StringPattern pattern_2("aaA", 57);
     47   std::vector<const StringPattern*> regexes;
     48   regexes.push_back(&pattern_1);
     49   regexes.push_back(&pattern_2);
     50   RegexSetMatcher matcher;
     51   matcher.AddPatterns(regexes);
     52 
     53   std::set<StringPattern::ID> result1;
     54   matcher.Match("http://aaa.net/", &result1);
     55   EXPECT_EQ(0U, result1.size());
     56 
     57   std::set<StringPattern::ID> result2;
     58   matcher.Match("http://aaa.net/quaaACK", &result2);
     59   EXPECT_EQ(1U, result2.size());
     60   EXPECT_TRUE(ContainsKey(result2, 57));
     61 }
     62