Home | History | Annotate | Download | only in browser
      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 
      8 namespace autofill {
      9 namespace {
     10 
     11 TEST(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 
     58 TEST(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