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