aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrouslan@chromium.org <rouslan@chromium.org@38ededc0-08b8-5190-f2ac-b31f878777ad>2014-07-31 17:09:22 +0000
committerrouslan@chromium.org <rouslan@chromium.org@38ededc0-08b8-5190-f2ac-b31f878777ad>2014-07-31 17:09:22 +0000
commit3be90f9591d5839b396ca633c5816316e1e72bdd (patch)
tree4aac296fa7bb5c0a03a75eae470b50c3c39d2d88
parent0ddcd24a82f60578ab843feae5bea5545989cb96 (diff)
downloadsrc-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.cc15
-rw-r--r--cpp/test/address_formatter_test.cc15
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