diff options
author | rouslan@chromium.org <rouslan@chromium.org@38ededc0-08b8-5190-f2ac-b31f878777ad> | 2014-07-31 17:09:22 +0000 |
---|---|---|
committer | rouslan@chromium.org <rouslan@chromium.org@38ededc0-08b8-5190-f2ac-b31f878777ad> | 2014-07-31 17:09:22 +0000 |
commit | 3be90f9591d5839b396ca633c5816316e1e72bdd (patch) | |
tree | 4aac296fa7bb5c0a03a75eae470b50c3c39d2d88 | |
parent | 0ddcd24a82f60578ab843feae5bea5545989cb96 (diff) | |
download | src-3be90f9591d5839b396ca633c5816316e1e72bdd.tar.gz |
Formatting inline street addresses.
Côte d’Ivoire uses "%N%n%O%n%X %A %C %X" address format, which has
inline street address. This patch fixes formatting for inline street
addresses. There is no support for multiple street address lines with
such format.
R=lararennie@google.com, roubert@google.com
Review URL: https://codereview.appspot.com/120310043
git-svn-id: http://libaddressinput.googlecode.com/svn/trunk@323 38ededc0-08b8-5190-f2ac-b31f878777ad
-rw-r--r-- | cpp/src/address_formatter.cc | 15 | ||||
-rw-r--r-- | cpp/test/address_formatter_test.cc | 15 |
2 files changed, 24 insertions, 6 deletions
diff --git a/cpp/src/address_formatter.cc b/cpp/src/address_formatter.cc index b866b8d..8d416d1 100644 --- a/cpp/src/address_formatter.cc +++ b/cpp/src/address_formatter.cc @@ -159,13 +159,16 @@ void GetFormattedNationalAddress( if (field == STREET_ADDRESS) { // The field "street address" represents the street address lines of an // address, so there can be multiple values. - if (!line.empty()) { - lines->push_back(line); - line.clear(); + if (!address_data.IsFieldEmpty(field)) { + line.append(address_data.address_line.front()); + if (address_data.address_line.size() > 1U) { + lines->push_back(line); + line.clear(); + lines->insert(lines->end(), + address_data.address_line.begin() + 1, + address_data.address_line.end()); + } } - lines->insert(lines->end(), - address_data.address_line.begin(), - address_data.address_line.end()); } else { line.append(address_data.GetFieldValue(field)); } diff --git a/cpp/test/address_formatter_test.cc b/cpp/test/address_formatter_test.cc index d20a344..5422492 100644 --- a/cpp/test/address_formatter_test.cc +++ b/cpp/test/address_formatter_test.cc @@ -205,4 +205,19 @@ TEST(AddressFormatterTest, GetFormattedNationalAddressMultilingualCountry) { EXPECT_EQ(expected, lines); } +TEST(AddressFormatterTest, GetFormattedNationalAddress_InlineStreetAddress) { + AddressData address; + address.region_code = "CI"; + address.address_line.push_back("32 Boulevard Carde"); + address.locality = "Abidjan"; + address.sorting_code = "64"; + + std::vector<std::string> expected; + expected.push_back("64 32 Boulevard Carde Abidjan 64"); + + std::vector<std::string> lines; + GetFormattedNationalAddress(address, &lines); + EXPECT_EQ(expected, lines); +} + } // namespace |