Chromium Code Reviews| 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); |
| } |
| } |