OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2010 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 "base/utf_string_conversions.h" |
| 6 #include "chrome/browser/autofill/form_field.h" |
| 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 |
| 9 namespace { |
| 10 |
| 11 TEST(FormFieldTest, Match) { |
| 12 AutoFillField field; |
| 13 |
| 14 // Empty strings match. |
| 15 EXPECT_TRUE(FormField::Match(&field, string16(), true)); |
| 16 |
| 17 // Empty pattern matches non-empty string. |
| 18 field.set_label(ASCIIToUTF16("a")); |
| 19 EXPECT_TRUE(FormField::Match(&field, string16(), true)); |
| 20 |
| 21 // Non-empty pattern doesn't match empty string. |
| 22 field.set_label(string16()); |
| 23 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("a"), true)); |
| 24 |
| 25 // Beginning of line. |
| 26 field.set_label(ASCIIToUTF16("head_tail")); |
| 27 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("^head"), true)); |
| 28 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("^tail"), true)); |
| 29 |
| 30 // End of line. |
| 31 field.set_label(ASCIIToUTF16("head_tail")); |
| 32 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("head$"), true)); |
| 33 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("tail$"), true)); |
| 34 |
| 35 // Exact. |
| 36 field.set_label(ASCIIToUTF16("head_tail")); |
| 37 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("^head$"), true)); |
| 38 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("^tail$"), true)); |
| 39 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("^head_tail$"), true)); |
| 40 |
| 41 // Escaped dots. |
| 42 field.set_label(ASCIIToUTF16("m.i.")); |
| 43 // Note: This pattern is misleading as the "." characters are wild cards. |
| 44 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("m.i."), true)); |
| 45 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("m\\.i\\."), true)); |
| 46 field.set_label(ASCIIToUTF16("mXiX")); |
| 47 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("m.i."), true)); |
| 48 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("m\\.i\\."), true)); |
| 49 |
| 50 // Repetition. |
| 51 field.set_label(ASCIIToUTF16("headtail")); |
| 52 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head.*tail"), true)); |
| 53 field.set_label(ASCIIToUTF16("headXtail")); |
| 54 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head.*tail"), true)); |
| 55 field.set_label(ASCIIToUTF16("headXXXtail")); |
| 56 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head.*tail"), true)); |
| 57 field.set_label(ASCIIToUTF16("headtail")); |
| 58 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("head.+tail"), true)); |
| 59 field.set_label(ASCIIToUTF16("headXtail")); |
| 60 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head.+tail"), true)); |
| 61 field.set_label(ASCIIToUTF16("headXXXtail")); |
| 62 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head.+tail"), true)); |
| 63 |
| 64 // Alternation. |
| 65 field.set_label(ASCIIToUTF16("head_tail")); |
| 66 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head|other"), true)); |
| 67 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("tail|other"), true)); |
| 68 EXPECT_FALSE(FormField::Match(&field, ASCIIToUTF16("bad|good"), true)); |
| 69 |
| 70 // Case sensitivity. |
| 71 field.set_label(ASCIIToUTF16("xxxHeAd_tAiLxxx")); |
| 72 EXPECT_TRUE(FormField::Match(&field, ASCIIToUTF16("head_tail"), true)); |
| 73 } |
| 74 |
| 75 } // namespace |
OLD | NEW |