You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

470 lines
21 KiB

/**
* @license
* Copyright (C) 2018 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.
*/
/**
* @fileoverview Unit tests for the ShortNumberInfo.
*
* Note that these tests use the test metadata for PhoneNumberUtil related
* operations, but the real short number metadata for testing ShortNumberInfo
* specific operations. This is not intentional, but mirrors the current state
* of the Java test suite.
*
* @author James Wright
*/
goog.provide('i18n.phonenumbers.ShortNumberInfoTest');
goog.setTestOnly();
goog.require('goog.testing.jsunit');
goog.require('i18n.phonenumbers.PhoneNumber');
goog.require('i18n.phonenumbers.PhoneNumberUtil');
goog.require('i18n.phonenumbers.RegionCode');
goog.require('i18n.phonenumbers.ShortNumberInfo');
/** @type {i18n.phonenumbers.ShortNumberInfo} */
var shortInfo = i18n.phonenumbers.ShortNumberInfo.getInstance();
/** @type {i18n.phonenumbers.PhoneNumberUtil} */
var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance();
var RegionCode = i18n.phonenumbers.RegionCode;
function testIsPossibleShortNumber() {
var possibleNumber = new i18n.phonenumbers.PhoneNumber();
possibleNumber.setCountryCode(33);
possibleNumber.setNationalNumber(123456);
assertTrue(shortInfo.isPossibleShortNumber(possibleNumber));
assertTrue(shortInfo.isPossibleShortNumberForRegion(
phoneUtil.parse('123456', RegionCode.FR), RegionCode.FR));
var impossibleNumber = new i18n.phonenumbers.PhoneNumber();
impossibleNumber.setCountryCode(33);
impossibleNumber.setNationalNumber(9);
assertFalse(shortInfo.isPossibleShortNumber(impossibleNumber));
// Note that GB and GG share the country calling code 44, and that this number
// is possible but not valid.
var impossibleUkNumber = new i18n.phonenumbers.PhoneNumber();
impossibleUkNumber.setCountryCode(44);
impossibleUkNumber.setNationalNumber(11001);
assertTrue(shortInfo.isPossibleShortNumber(impossibleUkNumber));
}
function testIsValidShortNumber() {
var shortNumber1 = new i18n.phonenumbers.PhoneNumber();
shortNumber1.setCountryCode(33);
shortNumber1.setNationalNumber(1010);
assertTrue(shortInfo.isValidShortNumber(shortNumber1));
assertTrue(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse('1010', RegionCode.FR), RegionCode.FR));
var shortNumber2 = new i18n.phonenumbers.PhoneNumber();
shortNumber2.setCountryCode(33);
shortNumber2.setNationalNumber(123456);
assertFalse(shortInfo.isValidShortNumber(shortNumber2));
assertFalse(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse('123456', RegionCode.FR), RegionCode.FR));
// Note that GB and GG share the country calling code 44.
var shortNumber3 = new i18n.phonenumbers.PhoneNumber();
shortNumber3.setCountryCode(44);
shortNumber3.setNationalNumber(18001);
assertTrue(shortInfo.isValidShortNumber(shortNumber3));
}
function testIsCarrierSpecific() {
var carrierSpecificNumber = new i18n.phonenumbers.PhoneNumber();
carrierSpecificNumber.setCountryCode(1);
carrierSpecificNumber.setNationalNumber(33669);
assertTrue(shortInfo.isCarrierSpecific(carrierSpecificNumber));
assertTrue(shortInfo.isCarrierSpecificForRegion(
phoneUtil.parse('33669', RegionCode.US), RegionCode.US));
var notCarrierSpecificNumber = new i18n.phonenumbers.PhoneNumber();
notCarrierSpecificNumber.setCountryCode(1);
notCarrierSpecificNumber.setNationalNumber(911);
assertFalse(shortInfo.isCarrierSpecific(notCarrierSpecificNumber));
assertFalse(shortInfo.isCarrierSpecificForRegion(
phoneUtil.parse('911', RegionCode.US), RegionCode.US));
var carrierSpecificNumberForSomeRegion = new i18n.phonenumbers.PhoneNumber();
carrierSpecificNumberForSomeRegion.setCountryCode(1);
carrierSpecificNumberForSomeRegion.setNationalNumber(211);
assertTrue(shortInfo.isCarrierSpecific(carrierSpecificNumberForSomeRegion));
assertTrue(shortInfo.isCarrierSpecificForRegion(
carrierSpecificNumberForSomeRegion, RegionCode.US));
assertFalse(shortInfo.isCarrierSpecificForRegion(
carrierSpecificNumberForSomeRegion, RegionCode.BB));
}
function testIsSmsService() {
var smsServiceNumberForSomeRegion = new i18n.phonenumbers.PhoneNumber();
smsServiceNumberForSomeRegion.setCountryCode(1);
smsServiceNumberForSomeRegion.setNationalNumber(21234);
assertTrue(shortInfo.isSmsServiceForRegion(
smsServiceNumberForSomeRegion, RegionCode.US));
assertFalse(shortInfo.isSmsServiceForRegion(
smsServiceNumberForSomeRegion, RegionCode.BB));
}
function testGetExpectedCost() {
var premiumRateExample = shortInfo.getExampleShortNumberForCost(
RegionCode.FR,
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.PREMIUM_RATE);
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.PREMIUM_RATE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse(premiumRateExample, RegionCode.FR), RegionCode.FR));
var premiumRateNumber = new i18n.phonenumbers.PhoneNumber();
premiumRateNumber.setCountryCode(33);
premiumRateNumber.setNationalNumber(parseInt(premiumRateExample, 10));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.PREMIUM_RATE,
shortInfo.getExpectedCost(premiumRateNumber));
var standardRateExample = shortInfo.getExampleShortNumberForCost(
RegionCode.FR,
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.STANDARD_RATE);
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.STANDARD_RATE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse(standardRateExample, RegionCode.FR), RegionCode.FR));
var standardRateNumber = new i18n.phonenumbers.PhoneNumber();
standardRateNumber.setCountryCode(33);
standardRateNumber.setNationalNumber(parseInt(standardRateExample, 10));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.STANDARD_RATE,
shortInfo.getExpectedCost(standardRateNumber));
var tollFreeExample = shortInfo.getExampleShortNumberForCost(
RegionCode.FR,
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE);
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse(tollFreeExample, RegionCode.FR), RegionCode.FR));
var tollFreeNumber = new i18n.phonenumbers.PhoneNumber();
tollFreeNumber.setCountryCode(33);
tollFreeNumber.setNationalNumber(parseInt(tollFreeExample, 10));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE,
shortInfo.getExpectedCost(tollFreeNumber));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse('12345', RegionCode.FR), RegionCode.FR));
var unknownCostNumber = new i18n.phonenumbers.PhoneNumber();
unknownCostNumber.setCountryCode(33);
unknownCostNumber.setNationalNumber(12345);
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCost(unknownCostNumber));
// Test that an invalid number may nevertheless have a cost other than
// UNKNOWN_COST.
assertFalse(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse('116123', RegionCode.FR), RegionCode.FR));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse('116123', RegionCode.FR), RegionCode.FR));
var invalidNumber = new i18n.phonenumbers.PhoneNumber();
invalidNumber.setCountryCode(33);
invalidNumber.setNationalNumber(116123);
assertFalse(shortInfo.isValidShortNumber(invalidNumber));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE,
shortInfo.getExpectedCost(invalidNumber));
// Test a nonexistent country code.
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse('911', RegionCode.US), RegionCode.ZZ));
unknownCostNumber = new i18n.phonenumbers.PhoneNumber();
unknownCostNumber.setCountryCode(123);
unknownCostNumber.setNationalNumber(911);
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCost(unknownCostNumber));
}
function testGetExpectedCostForSharedCountryCallingCode() {
// 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.
var ambiguousPremiumRateString = '1234';
var ambiguousPremiumRateNumber = new i18n.phonenumbers.PhoneNumber();
ambiguousPremiumRateNumber.setCountryCode(61);
ambiguousPremiumRateNumber.setNationalNumber(1234);
var ambiguousStandardRateString = '1194';
var ambiguousStandardRateNumber = new i18n.phonenumbers.PhoneNumber();
ambiguousStandardRateNumber.setCountryCode(61);
ambiguousStandardRateNumber.setNationalNumber(1194);
var ambiguousTollFreeString = '733';
var ambiguousTollFreeNumber = new i18n.phonenumbers.PhoneNumber();
ambiguousTollFreeNumber.setCountryCode(61);
ambiguousTollFreeNumber.setNationalNumber(733);
assertTrue(shortInfo.isValidShortNumber(ambiguousPremiumRateNumber));
assertTrue(shortInfo.isValidShortNumber(ambiguousStandardRateNumber));
assertTrue(shortInfo.isValidShortNumber(ambiguousTollFreeNumber));
assertTrue(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse(ambiguousPremiumRateString, RegionCode.AU),
RegionCode.AU));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.PREMIUM_RATE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse(ambiguousPremiumRateString, RegionCode.AU),
RegionCode.AU));
assertFalse(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse(ambiguousPremiumRateString, RegionCode.CX),
RegionCode.CX));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse(ambiguousPremiumRateString, RegionCode.CX),
RegionCode.CX));
// PREMIUM_RATE takes precedence over UNKNOWN_COST.
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.PREMIUM_RATE,
shortInfo.getExpectedCost(ambiguousPremiumRateNumber));
assertTrue(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse(ambiguousStandardRateString, RegionCode.AU),
RegionCode.AU));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.STANDARD_RATE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse(ambiguousStandardRateString, RegionCode.AU),
RegionCode.AU));
assertFalse(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse(ambiguousStandardRateString, RegionCode.CX),
RegionCode.CX));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse(ambiguousStandardRateString, RegionCode.CX),
RegionCode.CX));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCost(ambiguousStandardRateNumber));
assertTrue(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse(ambiguousTollFreeString, RegionCode.AU), RegionCode.AU));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse(ambiguousTollFreeString, RegionCode.AU),
RegionCode.AU));
assertFalse(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse(ambiguousTollFreeString, RegionCode.CX), RegionCode.CX));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse(ambiguousTollFreeString, RegionCode.CX),
RegionCode.CX));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCost(ambiguousTollFreeNumber));
}
function testExampleShortNumberPresence() {
assertNonEmptyString(shortInfo.getExampleShortNumber(RegionCode.AD));
assertNonEmptyString(shortInfo.getExampleShortNumber(RegionCode.FR));
assertEquals('', shortInfo.getExampleShortNumber(RegionCode.UN001));
assertEquals('', shortInfo.getExampleShortNumber(null));
}
function testConnectsToEmergencyNumber_US() {
assertTrue(shortInfo.connectsToEmergencyNumber('911', RegionCode.US));
assertTrue(shortInfo.connectsToEmergencyNumber('112', RegionCode.US));
assertFalse(shortInfo.connectsToEmergencyNumber('999', RegionCode.US));
}
function testConnectsToEmergencyNumberLongNumber_US() {
assertTrue(shortInfo.connectsToEmergencyNumber('9116666666', RegionCode.US));
assertTrue(shortInfo.connectsToEmergencyNumber('1126666666', RegionCode.US));
assertFalse(shortInfo.connectsToEmergencyNumber('9996666666', RegionCode.US));
}
function testConnectsToEmergencyNumberWithFormatting_US() {
assertTrue(shortInfo.connectsToEmergencyNumber('9-1-1', RegionCode.US));
assertTrue(shortInfo.connectsToEmergencyNumber('1-1-2', RegionCode.US));
assertFalse(shortInfo.connectsToEmergencyNumber('9-9-9', RegionCode.US));
}
function testConnectsToEmergencyNumberWithPlusSign_US() {
assertFalse(shortInfo.connectsToEmergencyNumber('+911', RegionCode.US));
assertFalse(shortInfo.connectsToEmergencyNumber('\uFF0B911', RegionCode.US));
assertFalse(shortInfo.connectsToEmergencyNumber(' +911', RegionCode.US));
assertFalse(shortInfo.connectsToEmergencyNumber('+112', RegionCode.US));
assertFalse(shortInfo.connectsToEmergencyNumber('+999', RegionCode.US));
}
function testConnectsToEmergencyNumber_BR() {
assertTrue(shortInfo.connectsToEmergencyNumber('911', RegionCode.BR));
assertTrue(shortInfo.connectsToEmergencyNumber('190', RegionCode.BR));
assertFalse(shortInfo.connectsToEmergencyNumber('999', RegionCode.BR));
}
function testConnectsToEmergencyNumberLongNumber_BR() {
// Brazilian emergency numbers don't work when additional digits are appended.
assertFalse(shortInfo.connectsToEmergencyNumber('9111', RegionCode.BR));
assertFalse(shortInfo.connectsToEmergencyNumber('1900', RegionCode.BR));
assertFalse(shortInfo.connectsToEmergencyNumber('9996', RegionCode.BR));
}
function testConnectsToEmergencyNumber_CL() {
assertTrue(shortInfo.connectsToEmergencyNumber('131', RegionCode.CL));
assertTrue(shortInfo.connectsToEmergencyNumber('133', RegionCode.CL));
}
function testConnectsToEmergencyNumberLongNumber_CL() {
// Chilean emergency numbers don't work when additional digits are appended.
assertFalse(shortInfo.connectsToEmergencyNumber('1313', RegionCode.CL));
assertFalse(shortInfo.connectsToEmergencyNumber('1330', RegionCode.CL));
}
function testConnectsToEmergencyNumber_AO() {
// Angola doesn't have any metadata for emergency numbers in the test
// metadata.
assertFalse(shortInfo.connectsToEmergencyNumber('911', RegionCode.AO));
assertFalse(shortInfo.connectsToEmergencyNumber('222123456', RegionCode.AO));
assertFalse(shortInfo.connectsToEmergencyNumber('923123456', RegionCode.AO));
}
function testConnectsToEmergencyNumber_ZW() {
// Zimbabwe doesn't have any metadata in the test metadata.
assertFalse(shortInfo.connectsToEmergencyNumber('911', RegionCode.ZW));
assertFalse(shortInfo.connectsToEmergencyNumber('01312345', RegionCode.ZW));
assertFalse(shortInfo.connectsToEmergencyNumber('0711234567', RegionCode.ZW));
}
function testIsEmergencyNumber_US() {
assertTrue(shortInfo.isEmergencyNumber('911', RegionCode.US));
assertTrue(shortInfo.isEmergencyNumber('112', RegionCode.US));
assertFalse(shortInfo.isEmergencyNumber('999', RegionCode.US));
}
function testIsEmergencyNumberLongNumber_US() {
assertFalse(shortInfo.isEmergencyNumber('9116666666', RegionCode.US));
assertFalse(shortInfo.isEmergencyNumber('1126666666', RegionCode.US));
assertFalse(shortInfo.isEmergencyNumber('9996666666', RegionCode.US));
}
function testIsEmergencyNumberWithFormatting_US() {
assertTrue(shortInfo.isEmergencyNumber('9-1-1', RegionCode.US));
assertTrue(shortInfo.isEmergencyNumber('*911', RegionCode.US));
assertTrue(shortInfo.isEmergencyNumber('1-1-2', RegionCode.US));
assertTrue(shortInfo.isEmergencyNumber('*112', RegionCode.US));
assertFalse(shortInfo.isEmergencyNumber('9-9-9', RegionCode.US));
assertFalse(shortInfo.isEmergencyNumber('*999', RegionCode.US));
}
function testIsEmergencyNumberWithPlusSign_US() {
assertFalse(shortInfo.isEmergencyNumber('+911', RegionCode.US));
assertFalse(shortInfo.isEmergencyNumber('\uFF0B911', RegionCode.US));
assertFalse(shortInfo.isEmergencyNumber(' +911', RegionCode.US));
assertFalse(shortInfo.isEmergencyNumber('+112', RegionCode.US));
assertFalse(shortInfo.isEmergencyNumber('+999', RegionCode.US));
}
function testIsEmergencyNumber_BR() {
assertTrue(shortInfo.isEmergencyNumber('911', RegionCode.BR));
assertTrue(shortInfo.isEmergencyNumber('190', RegionCode.BR));
assertFalse(shortInfo.isEmergencyNumber('999', RegionCode.BR));
}
function testIsEmergencyNumberLongNumber_BR() {
assertFalse(shortInfo.isEmergencyNumber('9111', RegionCode.BR));
assertFalse(shortInfo.isEmergencyNumber('1900', RegionCode.BR));
assertFalse(shortInfo.isEmergencyNumber('9996', RegionCode.BR));
}
function testIsEmergencyNumber_AO() {
// Angola doesn't have any metadata for emergency numbers in the test
// metadata.
assertFalse(shortInfo.isEmergencyNumber('911', RegionCode.AO));
assertFalse(shortInfo.isEmergencyNumber('222123456', RegionCode.AO));
assertFalse(shortInfo.isEmergencyNumber('923123456', RegionCode.AO));
}
function testIsEmergencyNumber_ZW() {
// Zimbabwe doesn't have any metadata in the test metadata.
assertFalse(shortInfo.isEmergencyNumber('911', RegionCode.ZW));
assertFalse(shortInfo.isEmergencyNumber('01312345', RegionCode.ZW));
assertFalse(shortInfo.isEmergencyNumber('0711234567', RegionCode.ZW));
}
function testEmergencyNumberForSharedCountryCallingCode() {
// Test the emergency number 112, which is valid in both Australia and the
// Christmas Islands.
assertTrue(shortInfo.isEmergencyNumber('112', RegionCode.AU));
assertTrue(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse('112', RegionCode.AU), RegionCode.AU));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse('112', RegionCode.AU), RegionCode.AU));
assertTrue(shortInfo.isEmergencyNumber('112', RegionCode.CX));
assertTrue(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse('112', RegionCode.CX), RegionCode.CX));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse('112', RegionCode.CX), RegionCode.CX));
var sharedEmergencyNumber = new i18n.phonenumbers.PhoneNumber();
sharedEmergencyNumber.setCountryCode(61);
sharedEmergencyNumber.setNationalNumber(112);
assertTrue(shortInfo.isValidShortNumber(sharedEmergencyNumber));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE,
shortInfo.getExpectedCost(sharedEmergencyNumber));
}
function testOverlappingNANPANumber() {
// 211 is an emergency number in Barbados, while it is a toll-free information
// line in Canada and the USA.
assertTrue(shortInfo.isEmergencyNumber('211', RegionCode.BB));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse('211', RegionCode.BB), RegionCode.BB));
assertFalse(shortInfo.isEmergencyNumber('211', RegionCode.US));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse('211', RegionCode.US), RegionCode.US));
assertFalse(shortInfo.isEmergencyNumber('211', RegionCode.CA));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.TOLL_FREE,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse('211', RegionCode.CA), RegionCode.CA));
}
function testCountryCallingCodeIsNotIgnored() {
// +46 is the country calling code for Sweden (SE), and 40404 is a valid short
// number in the US.
assertFalse(shortInfo.isPossibleShortNumberForRegion(
phoneUtil.parse('+4640404', RegionCode.SE), RegionCode.US));
assertFalse(shortInfo.isValidShortNumberForRegion(
phoneUtil.parse('+4640404', RegionCode.SE), RegionCode.US));
assertEquals(
i18n.phonenumbers.ShortNumberInfo.ShortNumberCost.UNKNOWN_COST,
shortInfo.getExpectedCostForRegion(
phoneUtil.parse('+4640404', RegionCode.SE), RegionCode.US));
}