Browse Source

Cpp: Adding FormatInOriginalFormat().

pull/567/head
Philip Liard 15 years ago
committed by Mihaela Rosca
parent
commit
daa985805d
3 changed files with 80 additions and 0 deletions
  1. +27
    -0
      cpp/src/phonenumberutil.cc
  2. +9
    -0
      cpp/src/phonenumberutil.h
  3. +44
    -0
      cpp/src/phonenumberutil_test.cc

+ 27
- 0
cpp/src/phonenumberutil.cc View File

@ -999,6 +999,33 @@ void PhoneNumberUtil::FormatOutOfCountryCallingNumber(
}
}
void PhoneNumberUtil::FormatInOriginalFormat(const PhoneNumber& number,
const string& region_calling_from,
string* formatted_number) const {
DCHECK(formatted_number);
if (!number.has_country_code_source()) {
Format(number, NATIONAL, formatted_number);
return;
}
switch (number.country_code_source()) {
case PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN:
Format(number, INTERNATIONAL, formatted_number);
return;
case PhoneNumber::FROM_NUMBER_WITH_IDD:
FormatOutOfCountryCallingNumber(number, region_calling_from,
formatted_number);
return;
case PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN:
Format(number, INTERNATIONAL, formatted_number);
formatted_number->erase(formatted_number->begin());
return;
case PhoneNumber::FROM_DEFAULT_COUNTRY:
default:
Format(number, NATIONAL, formatted_number);
}
}
void PhoneNumberUtil::FormatOutOfCountryKeepingAlphaChars(
const PhoneNumber& number,
const string& calling_from,


+ 9
- 0
cpp/src/phonenumberutil.h View File

@ -286,6 +286,15 @@ class PhoneNumberUtil {
const string& calling_from,
string* formatted_number) const;
// Formats a phone number using the original phone number format that the
// number is parsed from. The original format is embedded in the
// country_code_source field of the PhoneNumber object passed in. If such
// information is missing, the number will be formatted into the NATIONAL
// format by default.
void FormatInOriginalFormat(const PhoneNumber& number,
const string& region_calling_from,
string* formatted_number) const;
// Formats a phone number for out-of-country dialing purpose.
// The calling_from parameter is an ISO 3166-1 two-letter country code string.
//


+ 44
- 0
cpp/src/phonenumberutil_test.cc View File

@ -1217,6 +1217,50 @@ TEST_F(PhoneNumberUtilTest, IsLeadingZeroCountry) {
EXPECT_FALSE(PhoneNumberUtil::IsLeadingZeroCountry(1)); // USA
}
TEST_F(PhoneNumberUtilTest, FormatUsingOriginalNumberFormat) {
PhoneNumber phone_number;
string formatted_number;
EXPECT_EQ(PhoneNumberUtil::NO_ERROR,
phone_util_.ParseAndKeepRawInput("+442087654321", "GB",
&phone_number));
phone_util_.FormatInOriginalFormat(phone_number, "GB",
&formatted_number);
EXPECT_EQ("+44 20 8765 4321", formatted_number);
phone_number.Clear();
formatted_number.clear();
EXPECT_EQ(PhoneNumberUtil::NO_ERROR,
phone_util_.ParseAndKeepRawInput("02087654321", "GB",
&phone_number));
phone_util_.FormatInOriginalFormat(phone_number, "GB",
&formatted_number);
EXPECT_EQ("(020) 8765 4321", formatted_number);
phone_number.Clear();
formatted_number.clear();
EXPECT_EQ(PhoneNumberUtil::NO_ERROR,
phone_util_.ParseAndKeepRawInput("011442087654321", "US",
&phone_number));
phone_util_.FormatInOriginalFormat(phone_number, "US", &formatted_number);
EXPECT_EQ("011 44 20 8765 4321", formatted_number);
phone_number.Clear();
formatted_number.clear();
EXPECT_EQ(PhoneNumberUtil::NO_ERROR,
phone_util_.ParseAndKeepRawInput("442087654321", "GB",
&phone_number));
phone_util_.FormatInOriginalFormat(phone_number, "GB", &formatted_number);
EXPECT_EQ("44 20 8765 4321", formatted_number);
phone_number.Clear();
formatted_number.clear();
EXPECT_EQ(PhoneNumberUtil::NO_ERROR,
phone_util_.Parse("+442087654321", "GB", &phone_number));
phone_util_.FormatInOriginalFormat(phone_number, "GB", &formatted_number);
EXPECT_EQ("(020) 8765 4321", formatted_number);
}
TEST_F(PhoneNumberUtilTest, IsPremiumRate) {
PhoneNumber number;
number.set_country_code(1);


Loading…
Cancel
Save