diff --git a/cpp/src/phonenumbers/parsingOptions.cc b/cpp/src/phonenumbers/parsingOptions.cc new file mode 100644 index 000000000..1a955bc0a --- /dev/null +++ b/cpp/src/phonenumbers/parsingOptions.cc @@ -0,0 +1,20 @@ +#include "i18n/phonenumbers/parsingoptions.h" + +#include "i18n/identifiers/regioncode.h" + +namespace i18n { +namespace phonenumbers { + +ParsingOptions& ParsingOptions::SetDefaultRegion( + i18n_identifiers::RegionCode default_region) { + default_region_ = default_region; + return *this; +} + +ParsingOptions& ParsingOptions::SetKeepRawInput(bool keep_raw_input) { + keep_raw_input_ = keep_raw_input; + return *this; +} + +} // namespace phonenumbers +} // namespace i18n \ No newline at end of file diff --git a/cpp/src/phonenumbers/parsingOptions.h b/cpp/src/phonenumbers/parsingOptions.h new file mode 100644 index 000000000..917a11526 --- /dev/null +++ b/cpp/src/phonenumbers/parsingOptions.h @@ -0,0 +1,43 @@ +#ifndef I18N_PHONENUMBERS_PARSINGOPTIONS_H_ +#define I18N_PHONENUMBERS_PARSINGOPTIONS_H_ + +#include "i18n/identifiers/regioncode.h" + +namespace i18n { +namespace phonenumbers { + +// Options for parsing a phone number. To be used with the ParseWithOptions +// method. +// Example: +// ParsingOptions().SetDefaultRegion(RegionCode::US()).SetKeepRawInput(true); +class ParsingOptions { + public: + ParsingOptions() = default; + + // Set the value for default_region_. + ParsingOptions& SetDefaultRegion( + i18n_identifiers::RegionCode default_region); + + // Set the value for keep_raw_input_. + ParsingOptions& SetKeepRawInput(bool keep_raw_input); + + private: + friend class PhoneNumberUtil; + + // The region we are expecting the number to be from. This is ignored if the + // number being parsed is written in international format. In case of national + // format, the country_code will be set to the one of this default region. If + // the number is guaranteed to start with a '+' followed by the country + // calling code, then RegionCode.ZZ or null can be supplied. + i18n_identifiers::RegionCode default_region_ = + i18n_identifiers::RegionCode::ZZ(); + + // Whether the raw input should be kept in the PhoneNumber object. If true, + // the raw_input field and country_code_source fields will be populated. + bool keep_raw_input_ = false; +}; + +} // namespace phonenumbers +} // namespace i18n + +#endif // I1 \ No newline at end of file diff --git a/cpp/src/phonenumbers/phonenumberutil.cc b/cpp/src/phonenumbers/phonenumberutil.cc index f1442974f..2bcfe2154 100644 --- a/cpp/src/phonenumbers/phonenumberutil.cc +++ b/cpp/src/phonenumbers/phonenumberutil.cc @@ -37,6 +37,7 @@ #include "phonenumbers/phonemetadata.pb.h" #include "phonenumbers/phonenumber.h" #include "phonenumbers/phonenumber.pb.h" +#include "phonenumbers/parsingoptions.h" #include "phonenumbers/regex_based_matcher.h" #include "phonenumbers/regexp_adapter.h" #include "phonenumbers/regexp_cache.h" @@ -47,6 +48,7 @@ #include "phonenumbers/utf/unicodetext.h" #include "phonenumbers/utf/utf.h" + namespace i18n { namespace phonenumbers { @@ -2127,15 +2129,17 @@ PhoneNumberUtil::ErrorType PhoneNumberUtil::Parse(const string& number_to_parse, const string& default_region, PhoneNumber* number) const { DCHECK(number); - return ParseHelper(number_to_parse, default_region, false, true, number); + return ParseWithOptions(number_to_parse, + ParsingOptions().SetDefaultRegion(default_region), + number); } -PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseAndKeepRawInput( - const string& number_to_parse, - const string& default_region, +PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseWithOptions( + absl::string_view number_to_parse, const ParsingOptions& options, PhoneNumber* number) const { DCHECK(number); - return ParseHelper(number_to_parse, default_region, true, true, number); + return ParseHelper(number_to_parse, options.default_region_, + options.keep_raw_input_, /*check_region=*/true, number); } // Checks to see that the region code used is valid, or if it is not valid, that diff --git a/cpp/src/phonenumbers/phonenumberutil.h b/cpp/src/phonenumbers/phonenumberutil.h index 14cfc670c..d5e7e3639 100644 --- a/cpp/src/phonenumbers/phonenumberutil.h +++ b/cpp/src/phonenumbers/phonenumberutil.h @@ -29,9 +29,10 @@ #include "phonenumbers/base/memory/scoped_ptr.h" #include "phonenumbers/base/memory/singleton.h" #include "phonenumbers/phonenumber.pb.h" - +#include "phonenumbers/parsingoptions.h" #include "absl/container/node_hash_set.h" #include "absl/container/node_hash_map.h" +#include "third_party/absl/base/macros.h" class TelephoneNumber; @@ -700,13 +701,29 @@ class PhoneNumberUtil : public Singleton { ErrorType Parse(const string& number_to_parse, const string& default_region, PhoneNumber* number) const; + // Parses a string and returns it in proto buffer format. This method differs // from Parse() in that it always populates the raw_input field of the // protocol buffer with number_to_parse as well as the country_code_source // field. - ErrorType ParseAndKeepRawInput(const string& number_to_parse, - const string& default_region, - PhoneNumber* number) const; + ABSL_DEPRECATE_AND_INLINE() + ErrorType ParseAndKeepRawInput( + absl::string_view number_to_parse, + i18n_identifiers::RegionCode default_region + PhoneNumber* number) const { + return ParseWithOptions(number_to_parse, + ParsingOptions() + .SetDefaultRegion(default_region) + .SetKeepRawInput(true), + number); + } + + // Parses a string and returns it in proto buffer format. This method differs + // from Parse() in that it allows the caller to change the behavior of the + // parser. See ParsingOptions for more details. + ErrorType ParseWithOptions(absl::string_view number_to_parse, + const ParsingOptions& options, + PhoneNumber* number) const; // Takes two phone numbers and compares them for equality. // diff --git a/cpp/test/phonenumbers/phonenumberutil_test.cc b/cpp/test/phonenumbers/phonenumberutil_test.cc index 4f6990349..75824b347 100644 --- a/cpp/test/phonenumbers/phonenumberutil_test.cc +++ b/cpp/test/phonenumbers/phonenumberutil_test.cc @@ -64,9 +64,9 @@ class PhoneNumberUtilTest : public testing::Test { return phone_util_.GetMetadataForRegion(region_code); } - const PhoneMetadata* GetMetadataForNonGeographicalRegion( + const PhoneMetadata* GetMetadataForNonGeographicalEntity( int country_code) const { - return phone_util_.GetMetadataForNonGeographicalRegion(country_code); + return phone_util_.GetMetadataForNonGeographicalEntity(country_code); } void ExtractPossibleNumber(const string& number, @@ -341,7 +341,7 @@ TEST_F(PhoneNumberUtilTest, GetInstanceLoadARMetadata) { } TEST_F(PhoneNumberUtilTest, GetInstanceLoadInternationalTollFreeMetadata) { - const PhoneMetadata* metadata = GetMetadataForNonGeographicalRegion(800); + const PhoneMetadata* metadata = GetMetadataForNonGeographicalEntity(800); EXPECT_FALSE(metadata == NULL); EXPECT_EQ("001", metadata->id()); EXPECT_EQ(800, metadata->country_code()); @@ -2408,7 +2408,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { string formatted_number; EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("+442087654321", RegionCode::GB(), + phone_util_.ParseWithOptions("+442087654321", ParsingOptions().SetDefaultRegion(RegionCode::GB()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(), &formatted_number); @@ -2417,7 +2418,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("02087654321", RegionCode::GB(), + phone_util_.ParseWithOptions("02087654321", ParsingOptions().SetDefaultRegion(RegionCode::GB()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(), &formatted_number); @@ -2426,8 +2428,9 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("011442087654321", - RegionCode::US(), &phone_number)); + phone_util_.ParseWithOptions("011442087654321", ParsingOptions().SetDefaultRegion(RegionCode::US(),) + SetKeepRawInput(true), + &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::US(), &formatted_number); EXPECT_EQ("011 44 20 8765 4321", formatted_number); @@ -2435,7 +2438,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("442087654321", RegionCode::GB(), + phone_util_.ParseWithOptions("442087654321", ParsingOptions().SetDefaultRegion(RegionCode::GB()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(), &formatted_number); @@ -2456,7 +2460,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("7345678901", RegionCode::US(), + phone_util_.ParseWithOptions("7345678901", ParsingOptions().SetDefaultRegion(RegionCode::US()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::US(), &formatted_number); @@ -2467,7 +2472,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("0734567 8901", RegionCode::US(), + phone_util_.ParseWithOptions("0734567 8901", ParsingOptions().SetDefaultRegion(RegionCode::US()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::US(), &formatted_number); @@ -2478,7 +2484,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("02-4567-8900", RegionCode::KR(), + phone_util_.ParseWithOptions("02-4567-8900", ParsingOptions().SetDefaultRegion(RegionCode::KR()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::KR(), &formatted_number); @@ -2487,8 +2494,9 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("01180012345678", - RegionCode::US(), &phone_number)); + phone_util_.ParseWithOptions("01180012345678", ParsingOptions().SetDefaultRegion(RegionCode::US(),) + SetKeepRawInput(true), + &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::US(), &formatted_number); EXPECT_EQ("011 800 1234 5678", formatted_number); @@ -2496,7 +2504,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("+80012345678", RegionCode::KR(), + phone_util_.ParseWithOptions("+80012345678", ParsingOptions().SetDefaultRegion(RegionCode::KR()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::KR(), &formatted_number); @@ -2507,7 +2516,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("2530000", RegionCode::US(), + phone_util_.ParseWithOptions("2530000", ParsingOptions().SetDefaultRegion(RegionCode::US()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::US(), &formatted_number); @@ -2517,7 +2527,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { formatted_number.clear(); // Number with national prefix in the US. EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("18003456789", RegionCode::US(), + phone_util_.ParseWithOptions("18003456789", ParsingOptions().SetDefaultRegion(RegionCode::US()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::US(), &formatted_number); @@ -2527,7 +2538,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { formatted_number.clear(); // Number without national prefix in the UK. EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("2087654321", RegionCode::GB(), + phone_util_.ParseWithOptions("2087654321", ParsingOptions().SetDefaultRegion(RegionCode::GB()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::GB(), &formatted_number); @@ -2547,7 +2559,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { formatted_number.clear(); // Number with national prefix in Mexico. EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("013312345678", RegionCode::MX(), + phone_util_.ParseWithOptions("013312345678", ParsingOptions().SetDefaultRegion(RegionCode::MX()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::MX(), &formatted_number); @@ -2557,7 +2570,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { formatted_number.clear(); // Number without national prefix in Mexico. EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("3312345678", RegionCode::MX(), + phone_util_.ParseWithOptions("3312345678", ParsingOptions().SetDefaultRegion(RegionCode::MX()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::MX(), &formatted_number); @@ -2567,7 +2581,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { formatted_number.clear(); // Italian fixed-line number. EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("0212345678", RegionCode::IT(), + phone_util_.ParseWithOptions("0212345678", ParsingOptions().SetDefaultRegion(RegionCode::IT()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::IT(), &formatted_number); @@ -2577,7 +2592,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { formatted_number.clear(); // Number with national prefix in Japan. EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("00777012", RegionCode::JP(), + phone_util_.ParseWithOptions("00777012", ParsingOptions().SetDefaultRegion(RegionCode::JP()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::JP(), &formatted_number); @@ -2587,7 +2603,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { formatted_number.clear(); // Number without national prefix in Japan. EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("0777012", RegionCode::JP(), + phone_util_.ParseWithOptions("0777012", ParsingOptions().SetDefaultRegion(RegionCode::JP()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::JP(), &formatted_number); @@ -2597,7 +2614,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { formatted_number.clear(); // Number with carrier code in Brazil. EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("012 3121286979", RegionCode::BR(), + phone_util_.ParseWithOptions("012 3121286979", ParsingOptions().SetDefaultRegion(RegionCode::BR()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::BR(), &formatted_number); @@ -2609,8 +2627,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { // national prefix 044 is entered, we return the raw input as we don't want to // change the number entered. EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("044(33)1234-5678", - RegionCode::MX(), + phone_util_.ParseWithOptions("044(33)1234-5678", ParsingOptions().SetDefaultRegion(RegionCode::MX()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::MX(), &formatted_number); @@ -2619,8 +2637,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("045(33)1234-5678", - RegionCode::MX(), + phone_util_.ParseWithOptions("045(33)1234-5678", ParsingOptions().SetDefaultRegion(RegionCode::MX()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::MX(), &formatted_number); @@ -2632,8 +2650,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("0012 16502530000", - RegionCode::AU(), + phone_util_.ParseWithOptions("0012 16502530000", ParsingOptions().SetDefaultRegion(RegionCode::AU()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::AU(), &formatted_number); @@ -2642,8 +2660,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("0011 16502530000", - RegionCode::AU(), + phone_util_.ParseWithOptions("0011 16502530000", ParsingOptions().SetDefaultRegion(RegionCode::AU()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::AU(), &formatted_number); @@ -2654,8 +2672,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("*1234", - RegionCode::JP(), + phone_util_.ParseWithOptions("*1234", ParsingOptions().SetDefaultRegion(RegionCode::JP()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::JP(), &formatted_number); @@ -2663,8 +2681,8 @@ TEST_F(PhoneNumberUtilTest, FormatInOriginalFormat) { phone_number.Clear(); formatted_number.clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("1234", - RegionCode::JP(), + phone_util_.ParseWithOptions("1234", ParsingOptions().SetDefaultRegion(RegionCode::JP()), + SetKeepRawInput(true), &phone_number)); phone_util_.FormatInOriginalFormat(phone_number, RegionCode::JP(), &formatted_number); @@ -3575,7 +3593,7 @@ TEST_F(PhoneNumberUtilTest, ParseNationalNumber) { EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, phone_util_.Parse("033316005", RegionCode::NZ(), &test_number)); EXPECT_EQ(nz_number, test_number); - // Some fields are not filled in by Parse, but only by ParseAndKeepRawInput. + // Some fields are not filled in by Parse, but only by ParseWithOptions. EXPECT_FALSE(nz_number.has_country_code_source()); EXPECT_EQ(PhoneNumber::UNSPECIFIED, nz_number.country_code_source()); @@ -4170,8 +4188,8 @@ TEST_F(PhoneNumberUtilTest, ParseNumbersWithPlusWithNoRegion) { nz_number.set_country_code_source(PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN); result_proto.Clear(); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("+64 3 331 6005", - RegionCode::GetUnknown(), + phone_util_.ParseWithOptions("+64 3 331 6005", ParsingOptions().SetDefaultRegion( RegionCode::GetUnknown()), + SetKeepRawInput(true), &result_proto)); EXPECT_EQ(nz_number, result_proto); } @@ -4621,7 +4639,8 @@ TEST_F(PhoneNumberUtilTest, ParseAndKeepRaw) { PhoneNumber test_number; EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("800 six-flags", RegionCode::US(), + phone_util_.ParseWithOptions("800 six-flags", ParsingOptions().SetDefaultRegion(RegionCode::US()), + SetKeepRawInput(true), &test_number)); EXPECT_EQ(alpha_numeric_number, test_number); @@ -4630,7 +4649,8 @@ TEST_F(PhoneNumberUtilTest, ParseAndKeepRaw) { alpha_numeric_number.set_country_code_source( PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("1800 six-flag", RegionCode::US(), + phone_util_.ParseWithOptions("1800 six-flag", ParsingOptions().SetDefaultRegion(RegionCode::US()), + SetKeepRawInput(true), &test_number)); EXPECT_EQ(alpha_numeric_number, test_number); @@ -4638,7 +4658,8 @@ TEST_F(PhoneNumberUtilTest, ParseAndKeepRaw) { alpha_numeric_number.set_country_code_source( PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("+1800 six-flag", RegionCode::CN(), + phone_util_.ParseWithOptions("+1800 six-flag", ParsingOptions().SetDefaultRegion(RegionCode::CN()), + SetKeepRawInput(true), &test_number)); EXPECT_EQ(alpha_numeric_number, test_number); @@ -4646,8 +4667,8 @@ TEST_F(PhoneNumberUtilTest, ParseAndKeepRaw) { alpha_numeric_number.set_country_code_source( PhoneNumber::FROM_NUMBER_WITH_IDD); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("001800 six-flag", - RegionCode::NZ(), + phone_util_.ParseWithOptions("001800 six-flag", ParsingOptions().SetDefaultRegion( RegionCode::NZ()), + SetKeepRawInput(true), &test_number)); EXPECT_EQ(alpha_numeric_number, test_number); @@ -4665,8 +4686,8 @@ TEST_F(PhoneNumberUtilTest, ParseAndKeepRaw) { korean_number.set_country_code_source(PhoneNumber::FROM_DEFAULT_COUNTRY); korean_number.set_preferred_domestic_carrier_code("81"); EXPECT_EQ(PhoneNumberUtil::NO_PARSING_ERROR, - phone_util_.ParseAndKeepRawInput("08122123456", - RegionCode::KR(), + phone_util_.ParseWithOptions("08122123456", ParsingOptions().SetDefaultRegion( RegionCode::KR()), + SetKeepRawInput(true), &test_number)); EXPECT_EQ(korean_number, test_number); }