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

Side by Side Diff: components/autofill/core/browser/autofill_profile_unittest.cc

Issue 310463005: Fill in more name fields with requestAutocomplete (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: dumb test is dumb Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/format_macros.h" 6 #include "base/format_macros.h"
7 #include "base/guid.h" 7 #include "base/guid.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 std::vector<NameParts> starting_names; 64 std::vector<NameParts> starting_names;
65 std::vector<NameParts> additional_names; 65 std::vector<NameParts> additional_names;
66 std::vector<NameParts> expected_result; 66 std::vector<NameParts> expected_result;
67 }; 67 };
68 68
69 // Populates |first_names|, |middle_names| and |last_names| from the list of 69 // Populates |first_names|, |middle_names| and |last_names| from the list of
70 // NameParts from |starting_names|, |additional_names| or |expected_result| 70 // NameParts from |starting_names|, |additional_names| or |expected_result|
71 // from the testcase to create and verify the autofill profile. 71 // from the testcase to create and verify the autofill profile.
72 void GetNamePartsList(const std::vector<NameParts>& names, 72 void GetNamePartsList(const std::vector<NameParts>& names,
73 std::vector<base::string16>& first_names, 73 std::vector<base::string16>* first_names,
74 std::vector<base::string16>& middle_names, 74 std::vector<base::string16>* middle_names,
75 std::vector<base::string16>& last_names) { 75 std::vector<base::string16>* last_names) {
76 for (size_t i = 0; i < names.size(); ++i) { 76 for (size_t i = 0; i < names.size(); ++i) {
77 first_names.push_back(ASCIIToUTF16(names[i].first)); 77 first_names->push_back(ASCIIToUTF16(names[i].first));
78 middle_names.push_back(ASCIIToUTF16(names[i].middle)); 78 middle_names->push_back(ASCIIToUTF16(names[i].middle));
79 last_names.push_back(ASCIIToUTF16(names[i].last)); 79 last_names->push_back(ASCIIToUTF16(names[i].last));
80 } 80 }
81 } 81 }
82 82
83 } // namespace 83 } // namespace
84 84
85 // Tests different possibilities for summary string generation. 85 // Tests different possibilities for summary string generation.
86 // Based on existence of first name, last name, and address line 1. 86 // Based on existence of first name, last name, and address line 1.
87 TEST(AutofillProfileTest, PreviewSummaryString) { 87 TEST(AutofillProfileTest, PreviewSummaryString) {
88 // Case 0/null: "" 88 // Case 0/null: ""
89 AutofillProfile profile0(base::GenerateGUID(), "https://www.example.com/"); 89 AutofillProfile profile0(base::GenerateGUID(), "https://www.example.com/");
(...skipping 892 matching lines...) Expand 10 before | Expand all | Expand 10 after
982 982
983 // A parse that has a two-word first name should take precedence over a 983 // A parse that has a two-word first name should take precedence over a
984 // parse that assumes the two names are a first and a middle name. 984 // parse that assumes the two names are a first and a middle name.
985 test_cases.push_back(TestCase(NameParts("Marion", "Mitchell", "Morrison"), 985 test_cases.push_back(TestCase(NameParts("Marion", "Mitchell", "Morrison"),
986 NameParts("Marion Mitchell", "", "Morrison"), 986 NameParts("Marion Mitchell", "", "Morrison"),
987 NameParts("Marion Mitchell", "", "Morrison"))); 987 NameParts("Marion Mitchell", "", "Morrison")));
988 test_cases.push_back(TestCase(NameParts("Marion Mitchell", "", "Morrison"), 988 test_cases.push_back(TestCase(NameParts("Marion Mitchell", "", "Morrison"),
989 NameParts("Marion", "Mitchell", "Morrison"), 989 NameParts("Marion", "Mitchell", "Morrison"),
990 NameParts("Marion Mitchell", "", "Morrison"))); 990 NameParts("Marion Mitchell", "", "Morrison")));
991 991
992 // A parse that has a two-word first name and two-word last name should 992 // Two names that are identical in full, but not in parts: the parse that
993 // take precedence over a parse that assumes the two middle names and 993 // does *not* match the heuristic parse should be preferred.
994 // one last name.
995 test_cases.push_back( 994 test_cases.push_back(
996 TestCase(NameParts("Arthur", "Ignatius Conan", "Doyle"), 995 TestCase(NameParts("Arthur", "Ignatius Conan", "Doyle"),
997 NameParts("Arthur Ignatius", "", "Conan Doyle"), 996 // Heurstic parse.
998 NameParts("Arthur Ignatius", "", "Conan Doyle"))); 997 NameParts("Arthur Ignatius", "Conan", "Doyle"),
998 NameParts("Arthur", "Ignatius Conan", "Doyle")));
999 test_cases.push_back( 999 test_cases.push_back(
1000 TestCase(NameParts("Arthur Ignatius", "", "Conan Doyle"), 1000 // Heuristic parse.
1001 TestCase(NameParts("Arthur Ignatius", "Conan", "Doyle"),
1001 NameParts("Arthur", "Ignatius Conan", "Doyle"), 1002 NameParts("Arthur", "Ignatius Conan", "Doyle"),
1002 NameParts("Arthur Ignatius", "", "Conan Doyle"))); 1003 NameParts("Arthur", "Ignatius Conan", "Doyle")));
1003 1004
1004 // A parse that has a many-word first name and/or last name should take 1005 // A parse that has a many-word first name and/or last name should take
1005 // precedence over a heuristically parsed name into {first, middle1 1006 // precedence over a heuristically parsed name.
1006 // middle2.. middlen, name}.
1007 test_cases.push_back( 1007 test_cases.push_back(
1008 TestCase(NameParts("Arthur Ignatius Conan", "", "Doyle"), 1008 // Heuristic parse.
1009 NameParts("Arthur", "Ignatius Conan", "Doyle"), 1009 TestCase(NameParts("Roberto Carlos da", "Silva", "Rocha"),
1010 NameParts("Arthur Ignatius Conan", "", "Doyle")));
1011 test_cases.push_back(
1012 TestCase(NameParts("Roberto", "Carlos da Silva", "Rocha"),
1013 NameParts("Roberto Carlos da Silva", "", "Rocha"), 1010 NameParts("Roberto Carlos da Silva", "", "Rocha"),
1014 NameParts("Roberto Carlos da Silva", "", "Rocha"))); 1011 NameParts("Roberto Carlos da Silva", "", "Rocha")));
1015 test_cases.push_back(
1016 TestCase(NameParts("Antonio", "Augusto", "Ribeiro Reis Jr."),
1017 NameParts("Antonio", "Augusto Ribeiro Reis", "Jr."),
1018 NameParts("Antonio", "Augusto", "Ribeiro Reis Jr.")));
1019 1012
1020 // Cases where merging 2 profiles with same full names but 1013 // Cases where merging 2 profiles with same full names but
1021 // different canonical forms appends instead of overwrites, 1014 // different canonical forms appends instead of overwrites,
1022 // provided they dont form heuristically parsed names. 1015 // provided they dont form heuristically parsed names.
1023 { 1016 {
1024 NameParts name1("Marion Mitchell", "", "Morrison"); 1017 NameParts name1("Marion Mitchell", "", "Morrison");
1025 NameParts name2("Marion", "", "Mitchell Morrison"); 1018 NameParts name2("Marion", "", "Mitchell Morrison");
1026 std::vector<NameParts> starting_names(1, name1); 1019 std::vector<NameParts> starting_names(1, name1);
1027 std::vector<NameParts> additional_names(1, name2); 1020 std::vector<NameParts> additional_names(1, name2);
1028 std::vector<NameParts> expected_result; 1021 std::vector<NameParts> expected_result;
(...skipping 23 matching lines...) Expand all
1052 expected_result.push_back(name3); 1045 expected_result.push_back(name3);
1053 expected_result.push_back(name4); 1046 expected_result.push_back(name4);
1054 test_cases.push_back( 1047 test_cases.push_back(
1055 TestCase(starting_names, additional_names, expected_result)); 1048 TestCase(starting_names, additional_names, expected_result));
1056 } 1049 }
1057 1050
1058 for (std::vector<TestCase>::iterator it = test_cases.begin(); 1051 for (std::vector<TestCase>::iterator it = test_cases.begin();
1059 it != test_cases.end(); 1052 it != test_cases.end();
1060 ++it) { 1053 ++it) {
1061 TestCase current_case = *it; 1054 TestCase current_case = *it;
1055 SCOPED_TRACE(current_case.starting_names[0].first + " + " +
1056 current_case.additional_names[0].first + " = " +
1057 current_case.expected_result[0].first);
1062 1058
1063 std::vector<base::string16> first_names, middle_names, last_names; 1059 std::vector<base::string16> first_names, middle_names, last_names;
1064 GetNamePartsList( 1060 GetNamePartsList(
1065 current_case.starting_names, first_names, middle_names, last_names); 1061 current_case.starting_names, &first_names, &middle_names, &last_names);
1066 1062
1067 // Construct the starting_profile. 1063 // Construct the starting_profile.
1068 AutofillProfile starting_profile(base::GenerateGUID(), 1064 AutofillProfile starting_profile(base::GenerateGUID(),
1069 "https://www.example.com/"); 1065 "https://www.example.com/");
1070 1066
1071 starting_profile.SetRawMultiInfo(NAME_FIRST, first_names); 1067 starting_profile.SetRawMultiInfo(NAME_FIRST, first_names);
1072 starting_profile.SetRawMultiInfo(NAME_MIDDLE, middle_names); 1068 starting_profile.SetRawMultiInfo(NAME_MIDDLE, middle_names);
1073 starting_profile.SetRawMultiInfo(NAME_LAST, last_names); 1069 starting_profile.SetRawMultiInfo(NAME_LAST, last_names);
1074 1070
1075 first_names.clear(); 1071 first_names.clear();
1076 middle_names.clear(); 1072 middle_names.clear();
1077 last_names.clear(); 1073 last_names.clear();
1078 GetNamePartsList( 1074 GetNamePartsList(
1079 current_case.additional_names, first_names, middle_names, last_names); 1075 current_case.additional_names, &first_names, &middle_names,
1076 &last_names);
1080 1077
1081 // Construct the additional_profile. 1078 // Construct the additional_profile.
1082 AutofillProfile additional_profile(base::GenerateGUID(), 1079 AutofillProfile additional_profile(base::GenerateGUID(),
1083 "https://www.example.com/"); 1080 "https://www.example.com/");
1084 additional_profile.SetRawMultiInfo(NAME_FIRST, first_names); 1081 additional_profile.SetRawMultiInfo(NAME_FIRST, first_names);
1085 additional_profile.SetRawMultiInfo(NAME_MIDDLE, middle_names); 1082 additional_profile.SetRawMultiInfo(NAME_MIDDLE, middle_names);
1086 additional_profile.SetRawMultiInfo(NAME_LAST, last_names); 1083 additional_profile.SetRawMultiInfo(NAME_LAST, last_names);
1087 1084
1088 // Merge the names from the |additional_profile| into the |starting_profile| 1085 // Merge the names from the |additional_profile| into the |starting_profile|
1089 starting_profile.OverwriteWithOrAddTo(additional_profile, "en-US"); 1086 starting_profile.OverwriteWithOrAddTo(additional_profile, "en-US");
1090 1087
1091 // Verify the test expectations. 1088 // Verify the test expectations.
1092 first_names.clear(); 1089 first_names.clear();
1093 middle_names.clear(); 1090 middle_names.clear();
1094 last_names.clear(); 1091 last_names.clear();
1095 GetNamePartsList( 1092 GetNamePartsList(
1096 current_case.expected_result, first_names, middle_names, last_names); 1093 current_case.expected_result, &first_names, &middle_names, &last_names);
1097 1094
1098 std::vector<base::string16> merged_first_names, merged_middle_names, 1095 std::vector<base::string16> merged_first_names, merged_middle_names,
1099 merged_last_names; 1096 merged_last_names;
1100 starting_profile.GetRawMultiInfo(NAME_FIRST, &merged_first_names); 1097 starting_profile.GetRawMultiInfo(NAME_FIRST, &merged_first_names);
1101 starting_profile.GetRawMultiInfo(NAME_MIDDLE, &merged_middle_names); 1098 starting_profile.GetRawMultiInfo(NAME_MIDDLE, &merged_middle_names);
1102 starting_profile.GetRawMultiInfo(NAME_LAST, &merged_last_names); 1099 starting_profile.GetRawMultiInfo(NAME_LAST, &merged_last_names);
1103 ASSERT_EQ(current_case.expected_result.size(), merged_first_names.size()); 1100 ASSERT_EQ(current_case.expected_result.size(), merged_first_names.size());
1104 ASSERT_EQ(current_case.expected_result.size(), merged_middle_names.size()); 1101 ASSERT_EQ(current_case.expected_result.size(), merged_middle_names.size());
1105 ASSERT_EQ(current_case.expected_result.size(), merged_last_names.size()); 1102 ASSERT_EQ(current_case.expected_result.size(), merged_last_names.size());
1106 1103
1107 for (size_t i = 0; i < current_case.expected_result.size(); ++i) { 1104 for (size_t i = 0; i < current_case.expected_result.size(); ++i) {
1108 EXPECT_EQ(first_names[i], merged_first_names[i]); 1105 EXPECT_EQ(first_names[i], merged_first_names[i]);
1109 EXPECT_EQ(middle_names[i], merged_middle_names[i]); 1106 EXPECT_EQ(middle_names[i], merged_middle_names[i]);
1110 EXPECT_EQ(last_names[i], merged_last_names[i]); 1107 EXPECT_EQ(last_names[i], merged_last_names[i]);
1111 } 1108 }
1112 } 1109 }
1113 } 1110 }
1114 1111
1115 } // namespace autofill 1112 } // namespace autofill
OLDNEW
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc ('k') | components/autofill/core/browser/contact_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698