From 9fafb51e8cdbc23fe5c3460553bde7ade5238c95 Mon Sep 17 00:00:00 2001 From: Philip Liard Date: Thu, 24 Mar 2011 10:21:17 +0000 Subject: [PATCH] Cpp: Adding GetSupportedRegions(). --- cpp/src/phonenumberutil.cc | 9 +++++++++ cpp/src/phonenumberutil.h | 3 +++ cpp/src/phonenumberutil_test.cc | 18 ++++++++++++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/cpp/src/phonenumberutil.cc b/cpp/src/phonenumberutil.cc index 3f5eb4866..8c27478f6 100644 --- a/cpp/src/phonenumberutil.cc +++ b/cpp/src/phonenumberutil.cc @@ -752,6 +752,15 @@ PhoneNumberUtil* PhoneNumberUtil::GetInstance() { return Singleton::get(); } +void PhoneNumberUtil::GetSupportedRegions(set* regions) const { + DCHECK(regions); + for (map::const_iterator it = + country_to_metadata_map_->begin(); it != country_to_metadata_map_->end(); + ++it) { + regions->insert(it->first); + } +} + bool PhoneNumberUtil::IsValidRegionCode(const string& region_code) const { return (country_to_metadata_map_->find(region_code) != country_to_metadata_map_->end()); diff --git a/cpp/src/phonenumberutil.h b/cpp/src/phonenumberutil.h index 805bf7deb..97f43221b 100644 --- a/cpp/src/phonenumberutil.h +++ b/cpp/src/phonenumberutil.h @@ -551,6 +551,9 @@ class PhoneNumberUtil { explicit PhoneNumberUtil(MetadataProvider* provider = 0); ~PhoneNumberUtil(); + // Gets all the supported regions. + void GetSupportedRegions(set* regions) const; + // Helper function to check region code is not unknown or null. // // The region_code parameter is an ISO 3166-1 two-letter country code string. diff --git a/cpp/src/phonenumberutil_test.cc b/cpp/src/phonenumberutil_test.cc index 9a5650edf..4eb639547 100644 --- a/cpp/src/phonenumberutil_test.cc +++ b/cpp/src/phonenumberutil_test.cc @@ -16,13 +16,16 @@ // Author: Lara Rennie // Open-sourced by: Philippe Liard +#include +#include + #include #include -#include "phonenumberutil.h" -#include "test_metadata.h" #include "phonemetadata.pb.h" #include "phonenumber.pb.h" +#include "phonenumberutil.h" +#include "test_metadata.h" namespace i18n { namespace phonenumbers { @@ -49,6 +52,10 @@ class PhoneNumberUtilTest : public testing::Test { return phone_util_.GetMetadataForRegion(region_code); } + void GetSupportedRegions(set* regions) { + phone_util_.GetSupportedRegions(regions); + } + void ExtractPossibleNumber(const string& number, string* extracted_number) const { PhoneNumberUtil::ExtractPossibleNumber(number, extracted_number); @@ -96,6 +103,13 @@ class PhoneNumberUtilTest : public testing::Test { PhoneNumberUtil phone_util_; }; +TEST_F(PhoneNumberUtilTest, GetSupportedRegions) { + set regions; + + GetSupportedRegions(®ions); + EXPECT_GT(regions.size(), 0); +} + TEST_F(PhoneNumberUtilTest, GetInstanceLoadUSMetadata) { const PhoneMetadata* metadata = GetPhoneMetadata("US"); EXPECT_EQ("US", metadata->id());