autofill_field_unittest.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/strings/string_util.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "components/autofill/core/browser/autofill_field.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "components/autofill/core/browser/field_types.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace autofill {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(AutofillFieldTest, Type) {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AutofillField field;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(NO_SERVER_DATA, field.server_type());
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(UNKNOWN_TYPE, field.heuristic_type());
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |server_type_| is NO_SERVER_DATA, so |heuristic_type_| is returned.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(UNKNOWN_TYPE, field.type());
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set the heuristic type and check it.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.set_heuristic_type(NAME_FIRST);
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(NAME_FIRST, field.type());
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set the server type and check it.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.set_server_type(ADDRESS_BILLING_LINE1);
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  EXPECT_EQ(ADDRESS_BILLING_LINE1, field.type());
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Remove the server type to make sure the heuristic type is preserved.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.set_server_type(NO_SERVER_DATA);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(NAME_FIRST, field.type());
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(AutofillFieldTest, IsEmpty) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AutofillField field;
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_EQ(base::string16(), field.value);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Field value is empty.
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(field.IsEmpty());
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Field value is non-empty.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.value = ASCIIToUTF16("Value");
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(field.IsEmpty());
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(AutofillFieldTest, FieldSignature) {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AutofillField field;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(base::string16(), field.name);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(std::string(), field.form_control_type);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Signature is empty.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("2085434232", field.FieldSignature());
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Field name is set.
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.name = ASCIIToUTF16("Name");
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("1606968241", field.FieldSignature());
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Field form control type is set.
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.form_control_type = "text";
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("502192749", field.FieldSignature());
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Heuristic type does not affect FieldSignature.
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.set_heuristic_type(NAME_FIRST);
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_EQ("502192749", field.FieldSignature());
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Server type does not affect FieldSignature.
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.set_server_type(NAME_LAST);
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("502192749", field.FieldSignature());
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(AutofillFieldTest, IsFieldFillable) {
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AutofillField field;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(UNKNOWN_TYPE, field.type());
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Type is unknown.
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(field.IsFieldFillable());
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Only heuristic type is set.
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.set_heuristic_type(NAME_FIRST);
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(field.IsFieldFillable());
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Only server type is set.
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.set_heuristic_type(UNKNOWN_TYPE);
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.set_server_type(NAME_LAST);
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(field.IsFieldFillable());
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Both types set.
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.set_heuristic_type(NAME_FIRST);
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  field.set_server_type(NAME_LAST);
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(field.IsFieldFillable());
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace autofill
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)