Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(308)

Unified Diff: third_party/libaddressinput/chromium/cpp/test/rule_test.cc

Issue 131223004: [rac] Format an address for display. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments. Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/libaddressinput/chromium/cpp/test/rule_test.cc
diff --git a/third_party/libaddressinput/chromium/cpp/test/rule_test.cc b/third_party/libaddressinput/chromium/cpp/test/rule_test.cc
index da106802e6680ab6b3715221433a816bfcf3efaf..13403e0f6a0970b5c06ab1c67865ddde2475796a 100644
--- a/third_party/libaddressinput/chromium/cpp/test/rule_test.cc
+++ b/third_party/libaddressinput/chromium/cpp/test/rule_test.cc
@@ -30,6 +30,7 @@ namespace {
using i18n::addressinput::AddressField;
using i18n::addressinput::ADMIN_AREA;
using i18n::addressinput::COUNTRY;
+using i18n::addressinput::FormatElement;
using i18n::addressinput::LOCALITY;
using i18n::addressinput::ORGANIZATION;
using i18n::addressinput::POSTAL_CODE;
@@ -38,9 +39,11 @@ using i18n::addressinput::RegionDataConstants;
using i18n::addressinput::Rule;
using i18n::addressinput::STREET_ADDRESS;
-bool IsFormatEmpty(const std::vector<std::vector<AddressField> >& format) {
- for (std::vector<std::vector<AddressField> >::const_iterator
- it = format.begin(); it != format.end(); ++it) {
+bool IsFormatEmpty(const std::vector<std::vector<FormatElement> >& format) {
+ for (std::vector<std::vector<FormatElement> >::const_iterator
+ it = format.begin();
+ it != format.end();
+ ++it) {
if (!it->empty()) {
return false;
}
@@ -188,13 +191,22 @@ TEST(RuleTest, ParseFormatWithNewLines) {
Rule rule;
ASSERT_TRUE(
rule.ParseSerializedRule("{\"fmt\":\"%O%n%N%n%A%nAX-%Z %C%nÅLAND\"}"));
- std::vector<std::vector<AddressField> > expected_format;
- expected_format.push_back(std::vector<AddressField>(1, ORGANIZATION));
- expected_format.push_back(std::vector<AddressField>(1, RECIPIENT));
- expected_format.push_back(std::vector<AddressField>(1, STREET_ADDRESS));
- expected_format.push_back(std::vector<AddressField>(1, POSTAL_CODE));
- expected_format.back().push_back(LOCALITY);
- expected_format.push_back(std::vector<AddressField>());
+
+ std::vector<std::vector<FormatElement> > expected_format;
+ expected_format.push_back(
+ std::vector<FormatElement>(1, FormatElement(ORGANIZATION)));
+ expected_format.push_back(
+ std::vector<FormatElement>(1, FormatElement(RECIPIENT)));
+ expected_format.push_back(
+ std::vector<FormatElement>(1, FormatElement(STREET_ADDRESS)));
+ expected_format.push_back(
+ std::vector<FormatElement>(1, FormatElement("AX-")));
+ expected_format.back().push_back(FormatElement(POSTAL_CODE));
+ expected_format.back().push_back(FormatElement(" "));
+ expected_format.back().push_back(FormatElement(LOCALITY));
+ expected_format.push_back(
+ std::vector<FormatElement>(1, FormatElement("ÅLAND")));
+
EXPECT_EQ(expected_format, rule.GetFormat());
}
@@ -413,16 +425,52 @@ class RuleParseTest : public testing::TestWithParam<std::string> {
TEST_P(RuleParseTest, ConsecutiveLinesWithMultipleFields) {
ASSERT_TRUE(rule_.ParseSerializedRule(GetData()));
bool previous_line_has_single_field = true;
- for (std::vector<std::vector<AddressField> >::const_iterator
- line_it = rule_.GetFormat().begin();
+ for (std::vector<std::vector<FormatElement> >::const_iterator
+ line_it = rule_.GetFormat().begin();
line_it != rule_.GetFormat().end();
++line_it) {
- if (line_it->empty()) {
+ int num_fields = 0;
+ for (std::vector<FormatElement>::const_iterator
+ element_it = line_it->begin();
+ element_it != line_it->end();
+ ++element_it) {
+ if (element_it->IsField()) {
+ ++num_fields;
+ }
+ }
+ if (num_fields == 0) {
continue;
}
- ASSERT_TRUE(line_it->size() == 1 || previous_line_has_single_field)
+ ASSERT_TRUE(num_fields == 1 || previous_line_has_single_field)
<< GetParam() << ": " << GetData();
- previous_line_has_single_field = line_it->size() == 1;
+ previous_line_has_single_field = num_fields == 1;
+ }
+}
+
+// Verifies that a street line is surrounded by either newlines or spaces. A
+// different format will result in incorrect behavior in
+// AddressData::BuildDisplayLines().
+TEST_P(RuleParseTest, StreetAddressSurroundingElements) {
+ ASSERT_TRUE(rule_.ParseSerializedRule(GetData()));
+ for (std::vector<std::vector<FormatElement> >::const_iterator
+ line_it = rule_.GetFormat().begin();
+ line_it != rule_.GetFormat().end();
+ ++line_it) {
+ for (size_t i = 0; i < line_it->size(); ++i) {
+ const FormatElement& element = line_it->at(i);
+ if (element.IsField() && element.field == STREET_ADDRESS) {
+ bool surrounded_by_newlines = line_it->size() == 1;
+ bool surrounded_by_spaces =
+ i > 0 &&
+ i < line_it->size() - 1 &&
+ !line_it->at(i - 1).IsField() &&
+ line_it->at(i - 1).literal == " " &&
+ !line_it->at(i + 1).IsField() &&
+ line_it->at(i + 1).literal == " ";
+ EXPECT_TRUE(surrounded_by_newlines || surrounded_by_spaces)
+ << GetParam() << ": " << GetData();
+ }
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698