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

Unified Diff: components/subresource_filter/core/common/fuzzy_pattern_matching_unittest.cc

Issue 2793993002: [subresource_filter] Replace KMP by std::search. (Closed)
Patch Set: Clean up. Created 3 years, 8 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
Index: components/subresource_filter/core/common/fuzzy_pattern_matching_unittest.cc
diff --git a/components/subresource_filter/core/common/fuzzy_pattern_matching_unittest.cc b/components/subresource_filter/core/common/fuzzy_pattern_matching_unittest.cc
index 0dc78a50899293960682dea5f9a0e3ff199c8786..aa844fa12dd9688c31420a03b529be8106b65c44 100644
--- a/components/subresource_filter/core/common/fuzzy_pattern_matching_unittest.cc
+++ b/components/subresource_filter/core/common/fuzzy_pattern_matching_unittest.cc
@@ -10,7 +10,7 @@
namespace subresource_filter {
-TEST(FuzzyPatternMatchingTest, StartsWithFuzzy) {
+TEST(SubresourceFilterFuzzyPatternMatchingTest, StartsWithFuzzy) {
const struct {
const char* text;
const char* subpattern;
@@ -34,7 +34,7 @@ TEST(FuzzyPatternMatchingTest, StartsWithFuzzy) {
}
}
-TEST(FuzzyPatternMatchingTest, EndsWithFuzzy) {
+TEST(SubresourceFilterFuzzyPatternMatchingTest, EndsWithFuzzy) {
const struct {
const char* text;
const char* subpattern;
@@ -56,33 +56,34 @@ TEST(FuzzyPatternMatchingTest, EndsWithFuzzy) {
EXPECT_EQ(test_case.expected_ends_with, ends_with);
}
}
+
TEST(FuzzyPatternMatchingTest, AllOccurrences) {
pkalinnikov 2017/04/05 13:30:57 nit: Add "SubresourceFilter" prefix.
pkalinnikov 2017/04/05 13:48:46 Done.
const struct {
- const char* text;
- const char* subpattern;
+ base::StringPiece text;
+ base::StringPiece subpattern;
std::vector<size_t> expected_matches;
} kTestCases[] = {
{"abcd", "", {0, 1, 2, 3, 4}},
{"abcd", "de", std::vector<size_t>()},
- {"abcd", "ab", {2}},
- {"abcd", "bc", {3}},
- {"abcd", "cd", {4}},
+ {"abcd", "ab", {0}},
+ {"abcd", "bc", {1}},
+ {"abcd", "cd", {2}},
{"a/bc/a/b", "", {0, 1, 2, 3, 4, 5, 6, 7, 8}},
{"a/bc/a/b", "de", std::vector<size_t>()},
- {"a/bc/a/b", "a/", {2, 7}},
- {"a/bc/a/c", "a/c", {8}},
- {"a/bc/a/c", "a^c", {8}},
+ {"a/bc/a/b", "a/", {0, 5}},
+ {"a/bc/a/c", "a/c", {5}},
+ {"a/bc/a/c", "a^c", {5}},
{"a/bc/a/c", "a?c", std::vector<size_t>()},
{"ab^cd", "ab/cd", std::vector<size_t>()},
{"ab^cd", "b/c", std::vector<size_t>()},
- {"ab^cd", "ab^cd", {5}},
- {"ab^cd", "b^c", {4}},
- {"ab^b/b", "b/b", {6}},
+ {"ab^cd", "ab^cd", {0}},
+ {"ab^cd", "b^c", {1}},
+ {"ab^b/b", "b/b", {3}},
- {"a/a/a/a", "a/a", {3, 5, 7}},
- {"a/a/a/a", "^a^a^a", {7}},
+ {"a/a/a/a", "a/a", {0, 2, 4}},
+ {"a/a/a/a", "^a^a^a", {1}},
{"a/a/a/a", "^a^a?a", std::vector<size_t>()},
{"a/a/a/a", "?a?a?a", std::vector<size_t>()},
};
@@ -92,12 +93,15 @@ TEST(FuzzyPatternMatchingTest, AllOccurrences) {
<< "Test: " << test_case.text
<< "; Subpattern: " << test_case.subpattern);
- std::vector<size_t> failure;
- BuildFailureFunctionFuzzy(test_case.subpattern, &failure);
+ std::vector<size_t> matches;
+
pkalinnikov 2017/04/05 13:30:57 nit: Remove the blank line.
pkalinnikov 2017/04/05 13:48:47 Done.
+ for (size_t position = 0; position <= test_case.text.size(); ++position) {
+ position = FindFuzzy(test_case.text, test_case.subpattern, position);
+ if (position == base::StringPiece::npos)
+ break;
+ matches.push_back(position);
+ }
- const auto& occurrences = AllOccurrencesFuzzy<size_t>(
- test_case.text, test_case.subpattern, failure.data());
- std::vector<size_t> matches(occurrences.begin(), occurrences.end());
EXPECT_EQ(test_case.expected_matches, matches);
}
}

Powered by Google App Engine
This is Rietveld 408576698