assertEquals("650 253 0000 extn. 4567", phoneUtil.format(usNumberWithExtension,
PhoneNumberFormat.NATIONAL));
}
public void testFormatInOriginalFormat() throws Exception {
PhoneNumber number1 = phoneUtil.parseAndKeepRawInput("+442087654321", RegionCode.GB);
assertEquals("+44 20 8765 4321", phoneUtil.formatInOriginalFormat(number1, RegionCode.GB));
PhoneNumber number2 = phoneUtil.parseAndKeepRawInput("02087654321", RegionCode.GB);
assertEquals("(020) 8765 4321", phoneUtil.formatInOriginalFormat(number2, RegionCode.GB));
PhoneNumber number3 = phoneUtil.parseAndKeepRawInput("011442087654321", RegionCode.US);
assertEquals("011 44 20 8765 4321", phoneUtil.formatInOriginalFormat(number3, RegionCode.US));
PhoneNumber number4 = phoneUtil.parseAndKeepRawInput("442087654321", RegionCode.GB);
assertEquals("44 20 8765 4321", phoneUtil.formatInOriginalFormat(number4, RegionCode.GB));
PhoneNumber number5 = phoneUtil.parse("+442087654321", RegionCode.GB);
assertEquals("(020) 8765 4321", phoneUtil.formatInOriginalFormat(number5, RegionCode.GB));
// Invalid numbers that we have a formatting pattern for should be formatted properly. Note area
// codes starting with 7 are intentionally excluded in the test metadata for testing purposes.
PhoneNumber number6 = phoneUtil.parseAndKeepRawInput("7345678901", RegionCode.US);
assertEquals("734 567 8901", phoneUtil.formatInOriginalFormat(number6, RegionCode.US));
// US is not a leading zero country, and the presence of the leading zero leads us to format the
// number using raw_input.
PhoneNumber number7 = phoneUtil.parseAndKeepRawInput("0734567 8901", RegionCode.US);
assertEquals("0734567 8901", phoneUtil.formatInOriginalFormat(number7, RegionCode.US));
// This number is valid, but we don't have a formatting pattern for it. Fall back to the raw
// input.
PhoneNumber number8 = phoneUtil.parseAndKeepRawInput("02-4567-8900", RegionCode.KR);
assertEquals("02-4567-8900", phoneUtil.formatInOriginalFormat(number8, RegionCode.KR));
PhoneNumber number9 = phoneUtil.parseAndKeepRawInput("01180012345678", RegionCode.US);
assertEquals("011 800 1234 5678", phoneUtil.formatInOriginalFormat(number9, RegionCode.US));
PhoneNumber number10 = phoneUtil.parseAndKeepRawInput("+80012345678", RegionCode.KR);
assertEquals("+800 1234 5678", phoneUtil.formatInOriginalFormat(number10, RegionCode.KR));
// US local numbers are formatted correctly, as we have formatting patterns for them.
PhoneNumber localNumberUS = phoneUtil.parseAndKeepRawInput("2530000", RegionCode.US);
assertEquals("253 0000", phoneUtil.formatInOriginalFormat(localNumberUS, RegionCode.US));
PhoneNumber numberWithNationalPrefixUS =
phoneUtil.parseAndKeepRawInput("18003456789", RegionCode.US);
assertEquals("1 800 345 6789",
phoneUtil.formatInOriginalFormat(numberWithNationalPrefixUS, RegionCode.US));
PhoneNumber numberWithoutNationalPrefixGB =
phoneUtil.parseAndKeepRawInput("2087654321", RegionCode.GB);
assertEquals("20 8765 4321",
phoneUtil.formatInOriginalFormat(numberWithoutNationalPrefixGB, RegionCode.GB));
// Make sure no metadata is modified as a result of the previous function call.
assertEquals("(020) 8765 4321", phoneUtil.formatInOriginalFormat(number5, RegionCode.GB));
PhoneNumber numberWithNationalPrefixMX =
phoneUtil.parseAndKeepRawInput("013312345678", RegionCode.MX);
assertEquals("01 33 1234 5678",
phoneUtil.formatInOriginalFormat(numberWithNationalPrefixMX, RegionCode.MX));
PhoneNumber numberWithoutNationalPrefixMX =
phoneUtil.parseAndKeepRawInput("3312345678", RegionCode.MX);
assertEquals("33 1234 5678",
phoneUtil.formatInOriginalFormat(numberWithoutNationalPrefixMX, RegionCode.MX));
PhoneNumber italianFixedLineNumber =
phoneUtil.parseAndKeepRawInput("0212345678", RegionCode.IT);
assertEquals("02 1234 5678",
phoneUtil.formatInOriginalFormat(italianFixedLineNumber, RegionCode.IT));
PhoneNumber numberWithNationalPrefixJP =
phoneUtil.parseAndKeepRawInput("00777012", RegionCode.JP);
assertEquals("0077-7012",
phoneUtil.formatInOriginalFormat(numberWithNationalPrefixJP, RegionCode.JP));
PhoneNumber numberWithoutNationalPrefixJP =
phoneUtil.parseAndKeepRawInput("0777012", RegionCode.JP);
assertEquals("0777012",
phoneUtil.formatInOriginalFormat(numberWithoutNationalPrefixJP, RegionCode.JP));
PhoneNumber numberWithCarrierCodeBR =
phoneUtil.parseAndKeepRawInput("012 3121286979", RegionCode.BR);
assertEquals("012 3121286979",
phoneUtil.formatInOriginalFormat(numberWithCarrierCodeBR, RegionCode.BR));
// The default national prefix used in this case is 045. When a number with national prefix 044
// is entered, we return the raw input as we don't want to change the number entered.
PhoneNumber numberWithNationalPrefixMX1 =
phoneUtil.parseAndKeepRawInput("044(33)1234-5678", RegionCode.MX);
assertEquals("044(33)1234-5678",
phoneUtil.formatInOriginalFormat(numberWithNationalPrefixMX1, RegionCode.MX));
PhoneNumber numberWithNationalPrefixMX2 =
phoneUtil.parseAndKeepRawInput("045(33)1234-5678", RegionCode.MX);
assertEquals("045 33 1234 5678",
phoneUtil.formatInOriginalFormat(numberWithNationalPrefixMX2, RegionCode.MX));
// The default international prefix used in this case is 0011. When a number with international
// prefix 0012 is entered, we return the raw input as we don't want to change the number
// entered.
PhoneNumber outOfCountryNumberFromAU1 =
phoneUtil.parseAndKeepRawInput("0012 16502530000", RegionCode.AU);
assertEquals("0012 16502530000",
phoneUtil.formatInOriginalFormat(outOfCountryNumberFromAU1, RegionCode.AU));
PhoneNumber outOfCountryNumberFromAU2 =
phoneUtil.parseAndKeepRawInput("0011 16502530000", RegionCode.AU);
assertEquals("0011 1 650 253 0000",
phoneUtil.formatInOriginalFormat(outOfCountryNumberFromAU2, RegionCode.AU));
// Test the star sign is not removed from or added to the original input by this method.
PhoneNumber starNumber = phoneUtil.parseAndKeepRawInput("*1234", RegionCode.JP);
assertEquals("*1234", phoneUtil.formatInOriginalFormat(starNumber, RegionCode.JP));
PhoneNumber numberWithoutStar = phoneUtil.parseAndKeepRawInput("1234", RegionCode.JP);
assertEquals("1234", phoneUtil.formatInOriginalFormat(numberWithoutStar, RegionCode.JP));
}