blob: 8ba0f4bbb04988bc6d29d37c97a916f5e4d275d5 [file] [log] [blame]
// Copyright (C) 2014 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <libaddressinput/address_data.h>
#include <libaddressinput/address_field.h>
#include <sstream>
#include <gtest/gtest.h>
namespace {
using i18n::addressinput::AddressData;
using i18n::addressinput::AddressField;
using i18n::addressinput::COUNTRY;
using i18n::addressinput::ADMIN_AREA;
using i18n::addressinput::LOCALITY;
using i18n::addressinput::DEPENDENT_LOCALITY;
using i18n::addressinput::SORTING_CODE;
using i18n::addressinput::POSTAL_CODE;
using i18n::addressinput::STREET_ADDRESS;
using i18n::addressinput::RECIPIENT;
TEST(AddressDataTest, GetFieldValue) {
AddressData address;
address.region_code = "rrr";
address.administrative_area = "sss";
address.locality = "ccc";
address.dependent_locality = "ddd";
address.sorting_code = "xxx";
address.postal_code = "zzz";
address.recipient = "nnn";
EXPECT_EQ(address.region_code,
address.GetFieldValue(COUNTRY));
EXPECT_EQ(address.administrative_area,
address.GetFieldValue(ADMIN_AREA));
EXPECT_EQ(address.locality,
address.GetFieldValue(LOCALITY));
EXPECT_EQ(address.dependent_locality,
address.GetFieldValue(DEPENDENT_LOCALITY));
EXPECT_EQ(address.sorting_code,
address.GetFieldValue(SORTING_CODE));
EXPECT_EQ(address.postal_code,
address.GetFieldValue(POSTAL_CODE));
EXPECT_EQ(address.recipient,
address.GetFieldValue(RECIPIENT));
}
TEST(AddressDataTest, GetRepeatedFieldValue) {
AddressData address;
address.address_line.push_back("aaa");
address.address_line.push_back("222");
EXPECT_EQ(address.address_line,
address.GetRepeatedFieldValue(STREET_ADDRESS));
}
TEST(AddressDataTest, IsFieldEmpty) {
AddressData address;
EXPECT_TRUE(address.IsFieldEmpty(COUNTRY));
EXPECT_TRUE(address.IsFieldEmpty(ADMIN_AREA));
EXPECT_TRUE(address.IsFieldEmpty(LOCALITY));
EXPECT_TRUE(address.IsFieldEmpty(DEPENDENT_LOCALITY));
EXPECT_TRUE(address.IsFieldEmpty(SORTING_CODE));
EXPECT_TRUE(address.IsFieldEmpty(POSTAL_CODE));
EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS));
EXPECT_TRUE(address.IsFieldEmpty(RECIPIENT));
address.region_code = "rrr";
address.administrative_area = "sss";
address.locality = "ccc";
address.dependent_locality = "ddd";
address.sorting_code = "xxx";
address.postal_code = "zzz";
address.address_line.push_back("aaa");
address.recipient = "nnn";
EXPECT_FALSE(address.IsFieldEmpty(COUNTRY));
EXPECT_FALSE(address.IsFieldEmpty(ADMIN_AREA));
EXPECT_FALSE(address.IsFieldEmpty(LOCALITY));
EXPECT_FALSE(address.IsFieldEmpty(DEPENDENT_LOCALITY));
EXPECT_FALSE(address.IsFieldEmpty(SORTING_CODE));
EXPECT_FALSE(address.IsFieldEmpty(POSTAL_CODE));
EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS));
EXPECT_FALSE(address.IsFieldEmpty(RECIPIENT));
}
TEST(AddressDataTest, IsFieldEmptyWhitespace) {
AddressData address;
address.recipient = " ";
EXPECT_TRUE(address.IsFieldEmpty(RECIPIENT));
address.recipient = "abc";
EXPECT_FALSE(address.IsFieldEmpty(RECIPIENT));
address.recipient = " b ";
EXPECT_FALSE(address.IsFieldEmpty(RECIPIENT));
}
TEST(AddressDataTest, IsFieldEmptyVector) {
AddressData address;
EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS));
address.address_line.push_back("");
EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS));
address.address_line.push_back("aaa");
EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS));
address.address_line.push_back("");
EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS));
}
TEST(AddressDataTest, IsFieldEmptyVectorWhitespace) {
AddressData address;
address.address_line.push_back(" ");
address.address_line.push_back(" ");
address.address_line.push_back(" ");
EXPECT_TRUE(address.IsFieldEmpty(STREET_ADDRESS));
address.address_line.clear();
address.address_line.push_back("abc");
EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS));
address.address_line.clear();
address.address_line.push_back(" ");
address.address_line.push_back(" b ");
address.address_line.push_back(" ");
EXPECT_FALSE(address.IsFieldEmpty(STREET_ADDRESS));
}
TEST(AddressDataTest, StreamFunction) {
std::ostringstream oss;
AddressData address;
address.address_line.push_back("Line 1");
address.address_line.push_back("Line 2");
address.recipient = "N";
address.region_code = "R";
address.postal_code = "Z";
address.administrative_area = "S";
address.locality = "C";
address.dependent_locality = "D";
address.sorting_code = "X";
address.language_code = "zh-Hant";
oss << address;
EXPECT_EQ("region_code: \"R\"\n"
"administrative_area: \"S\"\n"
"locality: \"C\"\n"
"dependent_locality: \"D\"\n"
"postal_code: \"Z\"\n"
"sorting_code: \"X\"\n"
"address_line: \"Line 1\"\n"
"address_line: \"Line 2\"\n"
"language_code: \"zh-Hant\"\n"
"recipient: \"N\"\n", oss.str());
}
TEST(AddressDataTest, TestEquals) {
AddressData address;
address.address_line.push_back("Line 1");
address.address_line.push_back("Line 2");
address.recipient = "N";
address.region_code = "R";
address.postal_code = "Z";
address.administrative_area = "S";
address.locality = "C";
address.dependent_locality = "D";
address.sorting_code = "X";
address.language_code = "zh-Hant";
AddressData clone = address;
EXPECT_EQ(address, clone);
clone.language_code.clear();
EXPECT_FALSE(address == clone);
}
#ifndef NDEBUG
TEST(AddressDataTest, GetFieldValueInvalid) {
AddressData address;
ASSERT_DEATH(address.GetFieldValue(STREET_ADDRESS), "ssertion.*failed");
}
TEST(AddressDataTest, GetVectorFieldValueInvalid) {
AddressData address;
ASSERT_DEATH(address.GetRepeatedFieldValue(COUNTRY), "ssertion.*failed");
}
TEST(AddressDataTest, IsFieldEmptyInvalid) {
static const AddressField invalid_field = static_cast<AddressField>(-1);
AddressData address;
ASSERT_DEATH(address.IsFieldEmpty(invalid_field), "ssertion.*failed");
}
#endif // NDEBUG
} // namespace