1 // Copyright 2013 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 "components/autofill/core/browser/autofill_regexes.h" 6 7 #include "base/strings/string16.h" 8 #include "base/strings/utf_string_conversions.h" 9 #include "components/autofill/core/browser/autofill_regex_constants.h" 10 #include "testing/gtest/include/gtest/gtest.h" 11 12 using base::ASCIIToUTF16; 13 14 namespace autofill { 15 16 TEST(AutofillRegexesTest, AutofillRegexes) { 17 struct TestCase { 18 const char* const input; 19 const char* const pattern; 20 }; 21 22 const TestCase kPositiveCases[] = { 23 // Empty pattern 24 {"", ""}, 25 {"Look, ma' -- a non-empty string!", ""}, 26 // Substring 27 {"string", "tri"}, 28 // Substring at beginning 29 {"string", "str"}, 30 {"string", "^str"}, 31 // Substring at end 32 {"string", "ring"}, 33 {"string", "ring$"}, 34 // Case-insensitive 35 {"StRiNg", "string"}, 36 }; 37 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kPositiveCases); ++i) { 38 const TestCase& test_case = kPositiveCases[i]; 39 SCOPED_TRACE(test_case.input); 40 SCOPED_TRACE(test_case.pattern); 41 EXPECT_TRUE(autofill::MatchesPattern(ASCIIToUTF16(test_case.input), 42 ASCIIToUTF16(test_case.pattern))); 43 } 44 45 const TestCase kNegativeCases[] = { 46 // Empty string 47 {"", "Look, ma' -- a non-empty pattern!"}, 48 // Substring 49 {"string", "trn"}, 50 // Substring at beginning 51 {"string", " str"}, 52 {"string", "^tri"}, 53 // Substring at end 54 {"string", "ring "}, 55 {"string", "rin$"}, 56 }; 57 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kNegativeCases); ++i) { 58 const TestCase& test_case = kNegativeCases[i]; 59 SCOPED_TRACE(test_case.input); 60 SCOPED_TRACE(test_case.pattern); 61 EXPECT_FALSE(autofill::MatchesPattern(ASCIIToUTF16(test_case.input), 62 ASCIIToUTF16(test_case.pattern))); 63 } 64 } 65 66 } // namespace autofill 67