// Copyright (C) 2009 The Libphonenumber Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Author: David Yonge-Mallo // Note that these tests use the test metadata, not the normal metadata file, so // should not be used for regression test purposes - these tests are // illustrative only and test functionality. #include "phonenumbers/shortnumberinfo.h" #include #include "phonenumbers/base/logging.h" #include "phonenumbers/default_logger.h" #include "phonenumbers/phonenumberutil.h" #include "phonenumbers/stringutil.h" #include "phonenumbers/test_util.h" namespace i18n { namespace phonenumbers { class ShortNumberInfoTest : public testing::Test { protected: PhoneNumber ParseNumberForTesting(const string& number, const string& region_code) { PhoneNumber phone_number; PhoneNumberUtil::ErrorType error_type = phone_util_.Parse( number, region_code, &phone_number); CHECK_EQ(error_type, PhoneNumberUtil::NO_PARSING_ERROR); IGNORE_UNUSED(error_type); return phone_number; } ShortNumberInfoTest() : short_info_() { PhoneNumberUtil::GetInstance()->SetLogger(new StdoutLogger()); } const PhoneNumberUtil phone_util_; const ShortNumberInfo short_info_; private: DISALLOW_COPY_AND_ASSIGN(ShortNumberInfoTest); }; TEST_F(ShortNumberInfoTest, IsPossibleShortNumber) { PhoneNumber possible_number; possible_number.set_country_code(33); possible_number.set_national_number(uint64{123456}); EXPECT_TRUE(short_info_.IsPossibleShortNumber(possible_number)); EXPECT_TRUE(short_info_.IsPossibleShortNumberForRegion( ParseNumberForTesting("123456", RegionCode::FR()), RegionCode::FR())); PhoneNumber impossible_number; impossible_number.set_country_code(33); impossible_number.set_national_number(uint64{9}); EXPECT_FALSE(short_info_.IsPossibleShortNumber(impossible_number)); // Note that GB and GG share the country calling code 44, and that this // number is possible but not valid. PhoneNumber shared_number; shared_number.set_country_code(44); shared_number.set_national_number(uint64{11001}); EXPECT_TRUE(short_info_.IsPossibleShortNumber(shared_number)); } TEST_F(ShortNumberInfoTest, IsValidShortNumber) { PhoneNumber valid_number; valid_number.set_country_code(33); valid_number.set_national_number(uint64{1010}); EXPECT_TRUE(short_info_.IsValidShortNumber(valid_number)); EXPECT_TRUE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting("1010", RegionCode::FR()), RegionCode::FR())); PhoneNumber invalid_number; invalid_number.set_country_code(33); invalid_number.set_national_number(uint64{123456}); EXPECT_FALSE(short_info_.IsValidShortNumber(invalid_number)); EXPECT_FALSE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting("123456", RegionCode::FR()), RegionCode::FR())); // Note that GB and GG share the country calling code 44. PhoneNumber shared_number; shared_number.set_country_code(44); shared_number.set_national_number(uint64{18001}); EXPECT_TRUE(short_info_.IsValidShortNumber(shared_number)); } TEST_F(ShortNumberInfoTest, IsCarrierSpecific) { PhoneNumber carrier_specific_number; carrier_specific_number.set_country_code(1); carrier_specific_number.set_national_number(uint64{33669}); EXPECT_TRUE(short_info_.IsCarrierSpecific(carrier_specific_number)); EXPECT_TRUE(short_info_.IsCarrierSpecificForRegion( ParseNumberForTesting("33669", RegionCode::US()), RegionCode::US())); PhoneNumber not_carrier_specific_number; not_carrier_specific_number.set_country_code(1); not_carrier_specific_number.set_national_number(uint64{911}); EXPECT_FALSE(short_info_.IsCarrierSpecific(not_carrier_specific_number)); EXPECT_FALSE(short_info_.IsCarrierSpecificForRegion( ParseNumberForTesting("911", RegionCode::US()), RegionCode::US())); PhoneNumber carrier_specific_number_for_some_region; carrier_specific_number_for_some_region.set_country_code(1); carrier_specific_number_for_some_region.set_national_number(uint64{211}); EXPECT_TRUE(short_info_.IsCarrierSpecific( carrier_specific_number_for_some_region)); EXPECT_TRUE(short_info_.IsCarrierSpecificForRegion( carrier_specific_number_for_some_region, RegionCode::US())); EXPECT_FALSE(short_info_.IsCarrierSpecificForRegion( carrier_specific_number_for_some_region, RegionCode::BB())); } TEST_F(ShortNumberInfoTest, IsSmsService) { PhoneNumber sms_service_number_for_some_region; sms_service_number_for_some_region.set_country_code(1); sms_service_number_for_some_region.set_national_number(uint64{21234}); EXPECT_TRUE(short_info_.IsSmsServiceForRegion( sms_service_number_for_some_region, RegionCode::US())); EXPECT_FALSE(short_info_.IsSmsServiceForRegion( sms_service_number_for_some_region, RegionCode::BB())); } TEST_F(ShortNumberInfoTest, GetExpectedCost) { uint64 national_number; const string& premium_rate_example = short_info_.GetExampleShortNumberForCost( RegionCode::FR(), ShortNumberInfo::PREMIUM_RATE); EXPECT_EQ(ShortNumberInfo::PREMIUM_RATE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting(premium_rate_example, RegionCode::FR()), RegionCode::FR())); PhoneNumber premium_rate_number; premium_rate_number.set_country_code(33); safe_strtou64(premium_rate_example, &national_number); premium_rate_number.set_national_number(national_number); EXPECT_EQ(ShortNumberInfo::PREMIUM_RATE, short_info_.GetExpectedCost(premium_rate_number)); const string& standard_rate_example = short_info_.GetExampleShortNumberForCost( RegionCode::FR(), ShortNumberInfo::STANDARD_RATE); EXPECT_EQ(ShortNumberInfo::STANDARD_RATE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting(standard_rate_example, RegionCode::FR()), RegionCode::FR())); PhoneNumber standard_rate_number; standard_rate_number.set_country_code(33); safe_strtou64(standard_rate_example, &national_number); standard_rate_number.set_national_number(national_number); EXPECT_EQ(ShortNumberInfo::STANDARD_RATE, short_info_.GetExpectedCost(standard_rate_number)); const string& toll_free_example = short_info_.GetExampleShortNumberForCost( RegionCode::FR(), ShortNumberInfo::TOLL_FREE); EXPECT_EQ(ShortNumberInfo::TOLL_FREE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting(toll_free_example, RegionCode::FR()), RegionCode::FR())); PhoneNumber toll_free_number; toll_free_number.set_country_code(33); safe_strtou64(toll_free_example, &national_number); toll_free_number.set_national_number(national_number); EXPECT_EQ(ShortNumberInfo::TOLL_FREE, short_info_.GetExpectedCost(toll_free_number)); EXPECT_EQ( ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCostForRegion( ParseNumberForTesting("12345", RegionCode::FR()), RegionCode::FR())); PhoneNumber unknown_cost_number; unknown_cost_number.set_country_code(33); unknown_cost_number.set_national_number(uint64{12345}); EXPECT_EQ(ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCost(unknown_cost_number)); // Test that an invalid number may nevertheless have a cost other than // UNKNOWN_COST. EXPECT_FALSE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting("116123", RegionCode::FR()), RegionCode::FR())); EXPECT_EQ( ShortNumberInfo::TOLL_FREE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting("116123", RegionCode::FR()), RegionCode::FR())); PhoneNumber invalid_number; invalid_number.set_country_code(33); invalid_number.set_national_number(uint64{116123}); EXPECT_FALSE(short_info_.IsValidShortNumber(invalid_number)); EXPECT_EQ(ShortNumberInfo::TOLL_FREE, short_info_.GetExpectedCost(invalid_number)); // Test a nonexistent country code. EXPECT_EQ( ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCostForRegion( ParseNumberForTesting("911", RegionCode::US()), RegionCode::ZZ())); unknown_cost_number.Clear(); unknown_cost_number.set_country_code(123); unknown_cost_number.set_national_number(uint64{911}); EXPECT_EQ(ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCost(unknown_cost_number)); } TEST_F(ShortNumberInfoTest, GetExpectedCostForSharedCountryCallingCode) { // Test some numbers which have different costs in countries sharing the same // country calling code. In Australia, 1234 is premium-rate, 1194 is // standard-rate, and 733 is toll-free. These are not known to be valid // numbers in the Christmas Islands. string ambiguous_premium_rate_string("1234"); PhoneNumber ambiguous_premium_rate_number; ambiguous_premium_rate_number.set_country_code(61); ambiguous_premium_rate_number.set_national_number(uint64{1234}); string ambiguous_standard_rate_string("1194"); PhoneNumber ambiguous_standard_rate_number; ambiguous_standard_rate_number.set_country_code(61); ambiguous_standard_rate_number.set_national_number(uint64{1194}); string ambiguous_toll_free_string("733"); PhoneNumber ambiguous_toll_free_number; ambiguous_toll_free_number.set_country_code(61); ambiguous_toll_free_number.set_national_number(uint64{733}); EXPECT_TRUE(short_info_.IsValidShortNumber(ambiguous_premium_rate_number)); EXPECT_TRUE(short_info_.IsValidShortNumber(ambiguous_standard_rate_number)); EXPECT_TRUE(short_info_.IsValidShortNumber(ambiguous_toll_free_number)); EXPECT_TRUE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting(ambiguous_premium_rate_string, RegionCode::AU()), RegionCode::AU())); EXPECT_EQ(ShortNumberInfo::PREMIUM_RATE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting(ambiguous_premium_rate_string, RegionCode::AU()), RegionCode::AU())); EXPECT_FALSE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting(ambiguous_premium_rate_string, RegionCode::CX()), RegionCode::CX())); EXPECT_EQ(ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCostForRegion( ParseNumberForTesting(ambiguous_premium_rate_string, RegionCode::CX()), RegionCode::CX())); // PREMIUM_RATE takes precedence over UNKNOWN_COST. EXPECT_EQ(ShortNumberInfo::PREMIUM_RATE, short_info_.GetExpectedCost(ambiguous_premium_rate_number)); EXPECT_TRUE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting(ambiguous_standard_rate_string, RegionCode::AU()), RegionCode::AU())); EXPECT_EQ(ShortNumberInfo::STANDARD_RATE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting(ambiguous_standard_rate_string, RegionCode::AU()), RegionCode::AU())); EXPECT_FALSE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting(ambiguous_standard_rate_string, RegionCode::CX()), RegionCode::CX())); EXPECT_EQ(ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCostForRegion( ParseNumberForTesting(ambiguous_standard_rate_string, RegionCode::CX()), RegionCode::CX())); EXPECT_EQ(ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCost(ambiguous_standard_rate_number)); EXPECT_TRUE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting(ambiguous_toll_free_string, RegionCode::AU()), RegionCode::AU())); EXPECT_EQ( ShortNumberInfo::TOLL_FREE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting(ambiguous_toll_free_string, RegionCode::AU()), RegionCode::AU())); EXPECT_FALSE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting(ambiguous_toll_free_string, RegionCode::CX()), RegionCode::CX())); EXPECT_EQ( ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCostForRegion( ParseNumberForTesting(ambiguous_toll_free_string, RegionCode::CX()), RegionCode::CX())); EXPECT_EQ(ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCost(ambiguous_toll_free_number)); } TEST_F(ShortNumberInfoTest, GetExampleShortNumber) { EXPECT_FALSE(short_info_.GetExampleShortNumber(RegionCode::AD()).empty()); EXPECT_FALSE(short_info_.GetExampleShortNumber(RegionCode::FR()).empty()); EXPECT_TRUE(short_info_.GetExampleShortNumber(RegionCode::UN001()).empty()); EXPECT_TRUE( short_info_.GetExampleShortNumber(RegionCode::GetUnknown()).empty()); } TEST_F(ShortNumberInfoTest, ConnectsToEmergencyNumber_US) { EXPECT_TRUE(short_info_.ConnectsToEmergencyNumber("911", RegionCode::US())); EXPECT_TRUE(short_info_.ConnectsToEmergencyNumber("112", RegionCode::US())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("999", RegionCode::US())); } TEST_F(ShortNumberInfoTest, ConnectsToEmergencyNumberLongNumber_US) { EXPECT_TRUE(short_info_.ConnectsToEmergencyNumber("9116666666", RegionCode::US())); EXPECT_TRUE(short_info_.ConnectsToEmergencyNumber("1126666666", RegionCode::US())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("9996666666", RegionCode::US())); } TEST_F(ShortNumberInfoTest, ConnectsToEmergencyNumberWithFormatting_US) { EXPECT_TRUE(short_info_.ConnectsToEmergencyNumber("9-1-1", RegionCode::US())); EXPECT_TRUE(short_info_.ConnectsToEmergencyNumber("1-1-2", RegionCode::US())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("9-9-9", RegionCode::US())); } TEST_F(ShortNumberInfoTest, ConnectsToEmergencyNumberWithPlusSign_US) { EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("+911", RegionCode::US())); // This hex sequence is the full-width plus sign U+FF0B. EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("\xEF\xBC\x8B" "911", RegionCode::US())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber(" +911", RegionCode::US())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("+112", RegionCode::US())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("+999", RegionCode::US())); } TEST_F(ShortNumberInfoTest, ConnectsToEmergencyNumber_BR) { EXPECT_TRUE(short_info_.ConnectsToEmergencyNumber("911", RegionCode::BR())); EXPECT_TRUE(short_info_.ConnectsToEmergencyNumber("190", RegionCode::BR())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("999", RegionCode::BR())); } TEST_F(ShortNumberInfoTest, ConnectsToEmergencyNumberLongNumber_BR) { // Brazilian emergency numbers don't work when additional digits are appended. EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("9111", RegionCode::BR())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("1900", RegionCode::BR())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("9996", RegionCode::BR())); } TEST_F(ShortNumberInfoTest, ConnectsToEmergencyNumber_CL) { EXPECT_TRUE(short_info_.ConnectsToEmergencyNumber("131", RegionCode::CL())); EXPECT_TRUE(short_info_.ConnectsToEmergencyNumber("133", RegionCode::CL())); } TEST_F(ShortNumberInfoTest, ConnectsToEmergencyNumberLongNumber_CL) { // Chilean emergency numbers don't work when additional digits are appended. EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("1313", RegionCode::CL())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("1330", RegionCode::CL())); } TEST_F(ShortNumberInfoTest, ConnectsToEmergencyNumber_AO) { // Angola doesn't have any metadata for emergency numbers in the test // metadata. EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("911", RegionCode::AO())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("222123456", RegionCode::AO())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("923123456", RegionCode::AO())); } TEST_F(ShortNumberInfoTest, ConnectsToEmergencyNumber_ZW) { // Zimbabwe doesn't have any metadata in the test metadata. EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("911", RegionCode::ZW())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("01312345", RegionCode::ZW())); EXPECT_FALSE(short_info_.ConnectsToEmergencyNumber("0711234567", RegionCode::ZW())); } TEST_F(ShortNumberInfoTest, IsEmergencyNumber_US) { EXPECT_TRUE(short_info_.IsEmergencyNumber("911", RegionCode::US())); EXPECT_TRUE(short_info_.IsEmergencyNumber("112", RegionCode::US())); EXPECT_FALSE(short_info_.IsEmergencyNumber("999", RegionCode::US())); } TEST_F(ShortNumberInfoTest, IsEmergencyNumberLongNumber_US) { EXPECT_FALSE(short_info_.IsEmergencyNumber("9116666666", RegionCode::US())); EXPECT_FALSE(short_info_.IsEmergencyNumber("1126666666", RegionCode::US())); EXPECT_FALSE(short_info_.IsEmergencyNumber("9996666666", RegionCode::US())); } TEST_F(ShortNumberInfoTest, IsEmergencyNumberWithFormatting_US) { EXPECT_TRUE(short_info_.IsEmergencyNumber("9-1-1", RegionCode::US())); EXPECT_TRUE(short_info_.IsEmergencyNumber("*911", RegionCode::US())); EXPECT_TRUE(short_info_.IsEmergencyNumber("1-1-2", RegionCode::US())); EXPECT_TRUE(short_info_.IsEmergencyNumber("*112", RegionCode::US())); EXPECT_FALSE(short_info_.IsEmergencyNumber("9-9-9", RegionCode::US())); EXPECT_FALSE(short_info_.IsEmergencyNumber("*999", RegionCode::US())); } TEST_F(ShortNumberInfoTest, IsEmergencyNumberWithPlusSign_US) { EXPECT_FALSE(short_info_.IsEmergencyNumber("+911", RegionCode::US())); // This hex sequence is the full-width plus sign U+FF0B. EXPECT_FALSE(short_info_.IsEmergencyNumber("\xEF\xBC\x8B" "911", RegionCode::US())); EXPECT_FALSE(short_info_.IsEmergencyNumber(" +911", RegionCode::US())); EXPECT_FALSE(short_info_.IsEmergencyNumber("+112", RegionCode::US())); EXPECT_FALSE(short_info_.IsEmergencyNumber("+999", RegionCode::US())); } TEST_F(ShortNumberInfoTest, IsEmergencyNumber_BR) { EXPECT_TRUE(short_info_.IsEmergencyNumber("911", RegionCode::BR())); EXPECT_TRUE(short_info_.IsEmergencyNumber("190", RegionCode::BR())); EXPECT_FALSE(short_info_.IsEmergencyNumber("999", RegionCode::BR())); } TEST_F(ShortNumberInfoTest, EmergencyNumberLongNumber_BR) { EXPECT_FALSE(short_info_.IsEmergencyNumber("9111", RegionCode::BR())); EXPECT_FALSE(short_info_.IsEmergencyNumber("1900", RegionCode::BR())); EXPECT_FALSE(short_info_.IsEmergencyNumber("9996", RegionCode::BR())); } TEST_F(ShortNumberInfoTest, IsEmergencyNumber_AO) { // Angola doesn't have any metadata for emergency numbers in the test // metadata. EXPECT_FALSE(short_info_.IsEmergencyNumber("911", RegionCode::AO())); EXPECT_FALSE(short_info_.IsEmergencyNumber("222123456", RegionCode::AO())); EXPECT_FALSE(short_info_.IsEmergencyNumber("923123456", RegionCode::AO())); } TEST_F(ShortNumberInfoTest, IsEmergencyNumber_ZW) { // Zimbabwe doesn't have any metadata in the test metadata. EXPECT_FALSE(short_info_.IsEmergencyNumber("911", RegionCode::ZW())); EXPECT_FALSE(short_info_.IsEmergencyNumber("01312345", RegionCode::ZW())); EXPECT_FALSE(short_info_.IsEmergencyNumber("0711234567", RegionCode::ZW())); } TEST_F(ShortNumberInfoTest, EmergencyNumberForSharedCountryCallingCode) { // Test the emergency number 112, which is valid in both Australia and the // Christmas Islands. EXPECT_TRUE(short_info_.IsEmergencyNumber("112", RegionCode::AU())); EXPECT_TRUE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting("112", RegionCode::AU()), RegionCode::AU())); EXPECT_EQ( ShortNumberInfo::TOLL_FREE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting("112", RegionCode::AU()), RegionCode::AU())); EXPECT_TRUE(short_info_.IsEmergencyNumber("112", RegionCode::CX())); EXPECT_TRUE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting("112", RegionCode::CX()), RegionCode::CX())); EXPECT_EQ( ShortNumberInfo::TOLL_FREE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting("112", RegionCode::CX()), RegionCode::CX())); PhoneNumber shared_emergency_number; shared_emergency_number.set_country_code(61); shared_emergency_number.set_national_number(uint64{112}); EXPECT_TRUE(short_info_.IsValidShortNumber(shared_emergency_number)); EXPECT_EQ(ShortNumberInfo::TOLL_FREE, short_info_.GetExpectedCost(shared_emergency_number)); } TEST_F(ShortNumberInfoTest, OverlappingNANPANumber) { // 211 is an emergency number in Barbados, while it is a toll-free // information line in Canada and the USA. EXPECT_TRUE(short_info_.IsEmergencyNumber("211", RegionCode::BB())); EXPECT_EQ( ShortNumberInfo::TOLL_FREE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting("211", RegionCode::BB()), RegionCode::BB())); EXPECT_FALSE(short_info_.IsEmergencyNumber("211", RegionCode::US())); EXPECT_EQ( ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCostForRegion( ParseNumberForTesting("211", RegionCode::US()), RegionCode::US())); EXPECT_FALSE(short_info_.IsEmergencyNumber("211", RegionCode::CA())); EXPECT_EQ( ShortNumberInfo::TOLL_FREE, short_info_.GetExpectedCostForRegion( ParseNumberForTesting("211", RegionCode::CA()), RegionCode::CA())); } TEST_F(ShortNumberInfoTest, CountryCallingCodeIsNotIgnored) { // +46 is the country calling code for Sweden (SE), and 40404 is a valid short // number in the US. EXPECT_FALSE(short_info_.IsPossibleShortNumberForRegion( ParseNumberForTesting("+4640404", RegionCode::SE()), RegionCode::US())); EXPECT_FALSE(short_info_.IsValidShortNumberForRegion( ParseNumberForTesting("+4640404", RegionCode::SE()), RegionCode::US())); EXPECT_EQ(ShortNumberInfo::UNKNOWN_COST, short_info_.GetExpectedCostForRegion( ParseNumberForTesting("+4640404", RegionCode::SE()), RegionCode::US())); } } // namespace phonenumbers } // namespace i18n