aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad>2014-06-04 11:01:44 +0000
committerroubert@google.com <roubert@google.com@38ededc0-08b8-5190-f2ac-b31f878777ad>2014-06-04 11:01:44 +0000
commitb470ed6975ed95aba244369d74d758755d976738 (patch)
treefbe7af78993e643276fa4646bc6e5f7e16b604d6
parenta135825cf2f13931bb067f0f11b6c66dd203e961 (diff)
downloadsrc-b470ed6975ed95aba244369d74d758755d976738.tar.gz
Make IsFieldRequired and IsFieldUsed always return true for COUNTRY.
Author: davinci@google.com git-svn-id: http://libaddressinput.googlecode.com/svn/trunk@265 38ededc0-08b8-5190-f2ac-b31f878777ad
-rw-r--r--cpp/include/libaddressinput/address_metadata.h6
-rw-r--r--cpp/src/address_metadata.cc8
-rw-r--r--cpp/test/address_metadata_test.cc13
3 files changed, 25 insertions, 2 deletions
diff --git a/cpp/include/libaddressinput/address_metadata.h b/cpp/include/libaddressinput/address_metadata.h
index c379781..269f982 100644
--- a/cpp/include/libaddressinput/address_metadata.h
+++ b/cpp/include/libaddressinput/address_metadata.h
@@ -21,11 +21,13 @@ namespace i18n {
namespace addressinput {
// Checks whether |field| is a required field for |region_code|. Returns false
-// also if no data could be found for region_code.
+// also if no data could be found for region_code. Note: COUNTRY is always
+// required.
bool IsFieldRequired(AddressField field, const std::string& region_code);
// Checks whether |field| is a field that is used for |region_code|. Returns
-// false also if no data could be found for region_code.
+// false also if no data could be found for region_code. Note: COUNTRY is always
+// used.
bool IsFieldUsed(AddressField field, const std::string& region_code);
} // namespace addressinput
diff --git a/cpp/src/address_metadata.cc b/cpp/src/address_metadata.cc
index 093ebdf..59030ef 100644
--- a/cpp/src/address_metadata.cc
+++ b/cpp/src/address_metadata.cc
@@ -25,6 +25,10 @@ namespace i18n {
namespace addressinput {
bool IsFieldRequired(AddressField field, const std::string& region_code) {
+ if (field == COUNTRY) {
+ return true;
+ }
+
Rule rule;
rule.CopyFrom(Rule::GetDefault());
if (!rule.ParseSerializedRule(
@@ -38,6 +42,10 @@ bool IsFieldRequired(AddressField field, const std::string& region_code) {
}
bool IsFieldUsed(AddressField field, const std::string& region_code) {
+ if (field == COUNTRY) {
+ return true;
+ }
+
Rule rule;
rule.CopyFrom(Rule::GetDefault());
if (!rule.ParseSerializedRule(
diff --git a/cpp/test/address_metadata_test.cc b/cpp/test/address_metadata_test.cc
index bf17a3b..e1959cd 100644
--- a/cpp/test/address_metadata_test.cc
+++ b/cpp/test/address_metadata_test.cc
@@ -20,12 +20,25 @@
namespace {
+using i18n::addressinput::COUNTRY;
using i18n::addressinput::ADMIN_AREA;
using i18n::addressinput::DEPENDENT_LOCALITY;
using i18n::addressinput::IsFieldRequired;
using i18n::addressinput::IsFieldUsed;
+TEST(AddressMetadataTest, IsFieldRequiredCountry) {
+ EXPECT_TRUE(IsFieldRequired(COUNTRY, "US"));
+ EXPECT_TRUE(IsFieldRequired(COUNTRY, "CH"));
+ EXPECT_TRUE(IsFieldRequired(COUNTRY, "rrr"));
+}
+
+TEST(AddressMetadataTest, IsUsedRequiredCountry) {
+ EXPECT_TRUE(IsFieldUsed(COUNTRY, "US"));
+ EXPECT_TRUE(IsFieldUsed(COUNTRY, "CH"));
+ EXPECT_TRUE(IsFieldUsed(COUNTRY, "rrr"));
+}
+
TEST(AddressMetadataTest, IsFieldRequiredAdminAreaUS) {
EXPECT_TRUE(IsFieldRequired(ADMIN_AREA, "US"));
}