diff options
author | Rouslan Solomakhin <rouslan@chromium.org> | 2014-07-31 17:09:22 +0000 |
---|---|---|
committer | Fredrik Roubert <roubert@google.com> | 2014-09-01 19:20:50 +0200 |
commit | e4436a028dc6a5f01edef5a1bea178b4298596bb (patch) | |
tree | 4195d75e12a9f97f16bbed3313c1f0b42c0593d4 | |
parent | 59b20e695cb50911845a55ea17e222db6fecd57a (diff) | |
download | src-e4436a028dc6a5f01edef5a1bea178b4298596bb.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
-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 |