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

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

Issue 1143253012: More work on removing variants from Autofill (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: work around iOS lameness Created 5 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
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 813 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/")); 824 new AutofillProfile(base::GenerateGUID(), "https://www.example.com/"));
825 test::SetProfileInfo(a.get(), "Thomas", NULL, "Jefferson", 825 test::SetProfileInfo(a.get(), "Thomas", NULL, "Jefferson",
826 "declaration_guy@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, NULL, 826 "declaration_guy@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
827 NULL); 827 NULL);
828 test::SetProfileInfo(a.get(), "Thomas", NULL, "Adams", 828 test::SetProfileInfo(a.get(), "Thomas", NULL, "Adams",
829 "declaration_guy@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, NULL, 829 "declaration_guy@gmail.com", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
830 NULL); 830 NULL);
831 EXPECT_FALSE(a->IsSubsetOf(*b, "en-US")); 831 EXPECT_FALSE(a->IsSubsetOf(*b, "en-US"));
832 } 832 }
833 833
834 TEST(AutofillProfileTest, OverwriteWithOrAddTo) { 834 TEST(AutofillProfileTest, OverwriteWith) {
835 AutofillProfile a(base::GenerateGUID(), "https://www.example.com"); 835 AutofillProfile a(base::GenerateGUID(), "https://www.example.com");
836 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", 836 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison",
837 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", 837 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5",
838 "Hollywood", "CA", "91601", "US", 838 "Hollywood", "CA", "91601", "US",
839 "12345678910"); 839 "12345678910");
840 std::vector<base::string16> first_names;
841 a.GetRawMultiInfo(NAME_FIRST, &first_names);
842 first_names.push_back(ASCIIToUTF16("Marion"));
843 a.SetRawMultiInfo(NAME_FIRST, first_names);
844
845 std::vector<base::string16> last_names;
846 a.GetRawMultiInfo(NAME_LAST, &last_names);
847 last_names[last_names.size() - 1] = ASCIIToUTF16("Morrison");
848 a.SetRawMultiInfo(NAME_LAST, last_names);
849 840
850 // Create an identical profile except that the new profile: 841 // Create an identical profile except that the new profile:
851 // (1) Has a different origin, 842 // (1) Has a different origin,
852 // (2) Has a different address line 2, 843 // (2) Has a different address line 2,
853 // (3) Lacks a company name, 844 // (3) Lacks a company name,
854 // (4) Has a different full name variant, and 845 // (4) Has a different full name, and
855 // (5) Has a language code. 846 // (5) Has a language code.
856 AutofillProfile b = a; 847 AutofillProfile b = a;
857 b.set_guid(base::GenerateGUID()); 848 b.set_guid(base::GenerateGUID());
858 b.set_origin("Chrome settings"); 849 b.set_origin("Chrome settings");
859 b.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("area 51")); 850 b.SetRawInfo(ADDRESS_HOME_LINE2, ASCIIToUTF16("area 51"));
860 b.SetRawInfo(COMPANY_NAME, base::string16()); 851 b.SetRawInfo(COMPANY_NAME, base::string16());
861 852
862 std::vector<base::string16> names; 853 b.SetRawInfo(NAME_FULL, ASCIIToUTF16("Marion M. Morrison"));
863 b.GetMultiInfo(AutofillType(NAME_FULL), "en-US", &names);
864 names.push_back(ASCIIToUTF16("Marion M. Morrison"));
865 b.SetRawMultiInfo(NAME_FULL, names);
866 b.set_language_code("en"); 854 b.set_language_code("en");
867 855
868 a.OverwriteWithOrAddTo(b, "en-US"); 856 a.OverwriteWith(b, "en-US");
869 EXPECT_EQ("Chrome settings", a.origin()); 857 EXPECT_EQ("Chrome settings", a.origin());
870 EXPECT_EQ(ASCIIToUTF16("area 51"), a.GetRawInfo(ADDRESS_HOME_LINE2)); 858 EXPECT_EQ(ASCIIToUTF16("area 51"), a.GetRawInfo(ADDRESS_HOME_LINE2));
871 EXPECT_EQ(ASCIIToUTF16("Fox"), a.GetRawInfo(COMPANY_NAME)); 859 EXPECT_EQ(ASCIIToUTF16("Fox"), a.GetRawInfo(COMPANY_NAME));
872 a.GetMultiInfo(AutofillType(NAME_FULL), "en-US", &names); 860 base::string16 name = a.GetInfo(AutofillType(NAME_FULL), "en-US");
873 ASSERT_EQ(3U, names.size()); 861 EXPECT_EQ(ASCIIToUTF16("Marion M. Morrison"), name);
874 EXPECT_EQ(ASCIIToUTF16("Marion Mitchell Morrison"), names[0]);
875 EXPECT_EQ(ASCIIToUTF16("Marion Morrison"), names[1]);
876 EXPECT_EQ(ASCIIToUTF16("Marion M. Morrison"), names[2]);
877 EXPECT_EQ("en", a.language_code()); 862 EXPECT_EQ("en", a.language_code());
878 } 863 }
879 864
880 TEST(AutofillProfileTest, AssignmentOperator) { 865 TEST(AutofillProfileTest, AssignmentOperator) {
881 AutofillProfile a(base::GenerateGUID(), "https://www.example.com/"); 866 AutofillProfile a(base::GenerateGUID(), "https://www.example.com/");
882 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", 867 test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison",
883 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", 868 "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5",
884 "Hollywood", "CA", "91601", "US", 869 "Hollywood", "CA", "91601", "US",
885 "12345678910"); 870 "12345678910");
886 871
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 a.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, 931 a.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS,
947 ASCIIToUTF16("line one\nline two")); 932 ASCIIToUTF16("line one\nline two"));
948 test::SetProfileInfo(&b, "John", NULL, NULL, NULL, 933 test::SetProfileInfo(&b, "John", NULL, NULL, NULL,
949 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); 934 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
950 b.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, 935 b.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS,
951 ASCIIToUTF16("line one\nline two\nline three")); 936 ASCIIToUTF16("line one\nline two\nline three"));
952 EXPECT_GT(0, a.Compare(b)); 937 EXPECT_GT(0, a.Compare(b));
953 EXPECT_LT(0, b.Compare(a)); 938 EXPECT_LT(0, b.Compare(a));
954 } 939 }
955 940
956 TEST(AutofillProfileTest, MultiValueNames) {
957 AutofillProfile p(base::GenerateGUID(), "https://www.example.com/");
958 const base::string16 kJohnDoe(ASCIIToUTF16("John Doe"));
959 const base::string16 kJohnPDoe(ASCIIToUTF16("John P. Doe"));
960 std::vector<base::string16> set_values;
961 set_values.push_back(kJohnDoe);
962 set_values.push_back(kJohnPDoe);
963 p.SetRawMultiInfo(NAME_FULL, set_values);
964
965 // Expect regular |GetInfo| returns the first element.
966 EXPECT_EQ(kJohnDoe, p.GetRawInfo(NAME_FULL));
967
968 // Ensure that we get out what we put in.
969 std::vector<base::string16> get_values;
970 p.GetRawMultiInfo(NAME_FULL, &get_values);
971 ASSERT_EQ(2UL, get_values.size());
972 EXPECT_EQ(kJohnDoe, get_values[0]);
973 EXPECT_EQ(kJohnPDoe, get_values[1]);
974
975 // Update the values.
976 AutofillProfile p2 = p;
977 EXPECT_EQ(0, p.Compare(p2));
978 const base::string16 kNoOne(ASCIIToUTF16("No One"));
979 set_values[1] = kNoOne;
980 p.SetRawMultiInfo(NAME_FULL, set_values);
981 p.GetRawMultiInfo(NAME_FULL, &get_values);
982 ASSERT_EQ(2UL, get_values.size());
983 EXPECT_EQ(kJohnDoe, get_values[0]);
984 EXPECT_EQ(kNoOne, get_values[1]);
985 EXPECT_NE(0, p.Compare(p2));
986
987 // Delete values.
988 set_values.clear();
989 p.SetRawMultiInfo(NAME_FULL, set_values);
990 p.GetRawMultiInfo(NAME_FULL, &get_values);
991 ASSERT_EQ(1UL, get_values.size());
992 EXPECT_EQ(base::string16(), get_values[0]);
993
994 // Expect regular |GetInfo| returns empty value.
995 EXPECT_EQ(base::string16(), p.GetRawInfo(NAME_FULL));
996 }
997
998 TEST(AutofillProfileTest, MultiValueEmails) {
999 AutofillProfile p(base::GenerateGUID(), "https://www.example.com/");
1000 const base::string16 kJohnDoe(ASCIIToUTF16("john@doe.com"));
1001 const base::string16 kJohnPDoe(ASCIIToUTF16("john_p@doe.com"));
1002 std::vector<base::string16> set_values;
1003 set_values.push_back(kJohnDoe);
1004 set_values.push_back(kJohnPDoe);
1005 p.SetRawMultiInfo(EMAIL_ADDRESS, set_values);
1006
1007 // Expect regular |GetInfo| returns the first element.
1008 EXPECT_EQ(kJohnDoe, p.GetRawInfo(EMAIL_ADDRESS));
1009
1010 // Ensure that we get out what we put in.
1011 std::vector<base::string16> get_values;
1012 p.GetRawMultiInfo(EMAIL_ADDRESS, &get_values);
1013 ASSERT_EQ(2UL, get_values.size());
1014 EXPECT_EQ(kJohnDoe, get_values[0]);
1015 EXPECT_EQ(kJohnPDoe, get_values[1]);
1016
1017 // Update the values.
1018 AutofillProfile p2 = p;
1019 EXPECT_EQ(0, p.Compare(p2));
1020 const base::string16 kNoOne(ASCIIToUTF16("no@one.com"));
1021 set_values[1] = kNoOne;
1022 p.SetRawMultiInfo(EMAIL_ADDRESS, set_values);
1023 p.GetRawMultiInfo(EMAIL_ADDRESS, &get_values);
1024 ASSERT_EQ(2UL, get_values.size());
1025 EXPECT_EQ(kJohnDoe, get_values[0]);
1026 EXPECT_EQ(kNoOne, get_values[1]);
1027 EXPECT_NE(0, p.Compare(p2));
1028
1029 // Delete values.
1030 set_values.clear();
1031 p.SetRawMultiInfo(EMAIL_ADDRESS, set_values);
1032 p.GetRawMultiInfo(EMAIL_ADDRESS, &get_values);
1033 ASSERT_EQ(1UL, get_values.size());
1034 EXPECT_EQ(base::string16(), get_values[0]);
1035
1036 // Expect regular |GetInfo| returns empty value.
1037 EXPECT_EQ(base::string16(), p.GetRawInfo(EMAIL_ADDRESS));
1038 }
1039
1040 TEST(AutofillProfileTest, MultiValuePhone) {
1041 AutofillProfile p(base::GenerateGUID(), "https://www.example.com/");
1042 const base::string16 kJohnDoe(ASCIIToUTF16("4151112222"));
1043 const base::string16 kJohnPDoe(ASCIIToUTF16("4151113333"));
1044 std::vector<base::string16> set_values;
1045 set_values.push_back(kJohnDoe);
1046 set_values.push_back(kJohnPDoe);
1047 p.SetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, set_values);
1048
1049 // Expect regular |GetInfo| returns the first element.
1050 EXPECT_EQ(kJohnDoe, p.GetRawInfo(PHONE_HOME_WHOLE_NUMBER));
1051
1052 // Ensure that we get out what we put in.
1053 std::vector<base::string16> get_values;
1054 p.GetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, &get_values);
1055 ASSERT_EQ(2UL, get_values.size());
1056 EXPECT_EQ(kJohnDoe, get_values[0]);
1057 EXPECT_EQ(kJohnPDoe, get_values[1]);
1058
1059 // Update the values.
1060 AutofillProfile p2 = p;
1061 EXPECT_EQ(0, p.Compare(p2));
1062 const base::string16 kNoOne(ASCIIToUTF16("4152110000"));
1063 set_values[1] = kNoOne;
1064 p.SetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, set_values);
1065 p.GetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, &get_values);
1066 ASSERT_EQ(2UL, get_values.size());
1067 EXPECT_EQ(kJohnDoe, get_values[0]);
1068 EXPECT_EQ(kNoOne, get_values[1]);
1069 EXPECT_NE(0, p.Compare(p2));
1070
1071 // Delete values.
1072 set_values.clear();
1073 p.SetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, set_values);
1074 p.GetRawMultiInfo(PHONE_HOME_WHOLE_NUMBER, &get_values);
1075 ASSERT_EQ(1UL, get_values.size());
1076 EXPECT_EQ(base::string16(), get_values[0]);
1077
1078 // Expect regular |GetInfo| returns empty value.
1079 EXPECT_EQ(base::string16(), p.GetRawInfo(PHONE_HOME_WHOLE_NUMBER));
1080 }
1081
1082 TEST(AutofillProfileTest, IsPresentButInvalid) { 941 TEST(AutofillProfileTest, IsPresentButInvalid) {
1083 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/"); 942 AutofillProfile profile(base::GenerateGUID(), "https://www.example.com/");
1084 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_STATE)); 943 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_STATE));
1085 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP)); 944 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP));
1086 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); 945 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER));
1087 946
1088 profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US")); 947 profile.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US"));
1089 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_STATE)); 948 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_STATE));
1090 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP)); 949 EXPECT_FALSE(profile.IsPresentButInvalid(ADDRESS_HOME_ZIP));
1091 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER)); 950 EXPECT_FALSE(profile.IsPresentButInvalid(PHONE_HOME_WHOLE_NUMBER));
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1207 AutofillProfile::CanonicalizeProfileString(ASCIIToUTF16( 1066 AutofillProfile::CanonicalizeProfileString(ASCIIToUTF16(
1208 "1600 Amphitheatre, Pkwy."))); 1067 "1600 Amphitheatre, Pkwy.")));
1209 1068
1210 // Unicode punctuation (hyphen and space), multiple spaces collapsed. 1069 // Unicode punctuation (hyphen and space), multiple spaces collapsed.
1211 EXPECT_EQ(ASCIIToUTF16("mid island plaza"), 1070 EXPECT_EQ(ASCIIToUTF16("mid island plaza"),
1212 AutofillProfile::CanonicalizeProfileString(base::WideToUTF16( 1071 AutofillProfile::CanonicalizeProfileString(base::WideToUTF16(
1213 L"Mid\x2013Island\x2003 Plaza"))); 1072 L"Mid\x2013Island\x2003 Plaza")));
1214 } 1073 }
1215 1074
1216 } // namespace autofill 1075 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/autofill_profile.cc ('k') | components/autofill/core/browser/contact_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698