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_type.h" 6#include "testing/gtest/include/gtest/gtest.h" 7 8namespace autofill { 9namespace { 10 11TEST(AutofillTypeTest, ServerFieldTypes) { 12 // No server data. 13 AutofillType none(NO_SERVER_DATA); 14 EXPECT_EQ(NO_SERVER_DATA, none.GetStorableType()); 15 EXPECT_EQ(NO_GROUP, none.group()); 16 17 // Unknown type. 18 AutofillType unknown(UNKNOWN_TYPE); 19 EXPECT_EQ(UNKNOWN_TYPE, unknown.GetStorableType()); 20 EXPECT_EQ(NO_GROUP, unknown.group()); 21 22 // Type with group but no subgroup. 23 AutofillType first(NAME_FIRST); 24 EXPECT_EQ(NAME_FIRST, first.GetStorableType()); 25 EXPECT_EQ(NAME, first.group()); 26 27 // Type with group and subgroup. 28 AutofillType phone(PHONE_HOME_NUMBER); 29 EXPECT_EQ(PHONE_HOME_NUMBER, phone.GetStorableType()); 30 EXPECT_EQ(PHONE_HOME, phone.group()); 31 32 // Billing type. 33 AutofillType billing_address(ADDRESS_BILLING_LINE1); 34 EXPECT_EQ(ADDRESS_HOME_LINE1, billing_address.GetStorableType()); 35 EXPECT_EQ(ADDRESS_BILLING, billing_address.group()); 36 37 // Last value, to check any offset errors. 38 AutofillType last(NAME_BILLING_SUFFIX); 39 EXPECT_EQ(NAME_SUFFIX, last.GetStorableType()); 40 EXPECT_EQ(NAME_BILLING, last.group()); 41 42 // Boundary (error) condition. 43 AutofillType boundary(MAX_VALID_FIELD_TYPE); 44 EXPECT_EQ(UNKNOWN_TYPE, boundary.GetStorableType()); 45 EXPECT_EQ(NO_GROUP, boundary.group()); 46 47 // Beyond the boundary (error) condition. 48 AutofillType beyond(static_cast<ServerFieldType>(MAX_VALID_FIELD_TYPE + 10)); 49 EXPECT_EQ(UNKNOWN_TYPE, beyond.GetStorableType()); 50 EXPECT_EQ(NO_GROUP, beyond.group()); 51 52 // In-between value. Missing from enum but within range. Error condition. 53 AutofillType between(static_cast<ServerFieldType>(16)); 54 EXPECT_EQ(UNKNOWN_TYPE, between.GetStorableType()); 55 EXPECT_EQ(NO_GROUP, between.group()); 56} 57 58TEST(AutofillTypeTest, HtmlFieldTypes) { 59 // Unknown type. 60 AutofillType unknown(HTML_TYPE_UNKNOWN, HTML_MODE_NONE); 61 EXPECT_EQ(UNKNOWN_TYPE, unknown.GetStorableType()); 62 EXPECT_EQ(NO_GROUP, unknown.group()); 63 64 // Type with group but no subgroup. 65 AutofillType first(HTML_TYPE_GIVEN_NAME, HTML_MODE_NONE); 66 EXPECT_EQ(NAME_FIRST, first.GetStorableType()); 67 EXPECT_EQ(NAME, first.group()); 68 69 // Type with group and subgroup. 70 AutofillType phone(HTML_TYPE_TEL, HTML_MODE_NONE); 71 EXPECT_EQ(PHONE_HOME_WHOLE_NUMBER, phone.GetStorableType()); 72 EXPECT_EQ(PHONE_HOME, phone.group()); 73 74 // Last value, to check any offset errors. 75 AutofillType last(HTML_TYPE_CREDIT_CARD_EXP_4_DIGIT_YEAR, HTML_MODE_NONE); 76 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, last.GetStorableType()); 77 EXPECT_EQ(CREDIT_CARD, last.group()); 78 79 // Shipping mode. 80 AutofillType shipping_first(HTML_TYPE_GIVEN_NAME, HTML_MODE_SHIPPING); 81 EXPECT_EQ(NAME_FIRST, shipping_first.GetStorableType()); 82 EXPECT_EQ(NAME, shipping_first.group()); 83 84 // Billing mode. 85 AutofillType billing_first(HTML_TYPE_GIVEN_NAME, HTML_MODE_BILLING); 86 EXPECT_EQ(NAME_FIRST, billing_first.GetStorableType()); 87 EXPECT_EQ(NAME_BILLING, billing_first.group()); 88} 89 90} // namespace 91} // namespace autofill 92