From eccb652a29aa0cb5365291d1bcaaff797566f075 Mon Sep 17 00:00:00 2001 From: Shaopeng Jia Date: Thu, 20 May 2010 18:23:03 +0000 Subject: [PATCH] Fix a bug where NANPA numbers starting with 1 were incorrectly formatted. --- .../i18n/phonenumbers/AsYouTypeFormatter.java | 5 ++++- .../i18n/phonenumbers/AsYouTypeFormatterTest.java | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/java/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java b/java/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java index c5999bf37..e4e26d795 100644 --- a/java/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java +++ b/java/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java @@ -251,7 +251,10 @@ public class AsYouTypeFormatter { private void removeNationalPrefixFromNationalNumber() { int startOfNationalNumber = 0; - if (currentMetaData.hasNationalPrefix()) { + if (currentMetaData.getCountryCode() == 1 && nationalNumber.charAt(0) == '1') { + startOfNationalNumber = 1; + prefixBeforeNationalNumber.append("1 "); + } else if (currentMetaData.hasNationalPrefix()) { Matcher m = nationalPrefixForParsing.matcher(nationalNumber); if (m.lookingAt()) { startOfNationalNumber = m.end(); diff --git a/java/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java b/java/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java index cefb3ec16..838b97e3e 100644 --- a/java/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java +++ b/java/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java @@ -53,6 +53,19 @@ public class AsYouTypeFormatterTest extends TestCase { assertEquals("650 253 222", formatter.inputDigit('2')); assertEquals("650 253 2222", formatter.inputDigit('2')); + formatter.clear(); + assertEquals("1", formatter.inputDigit('1')); + assertEquals("16", formatter.inputDigit('6')); + assertEquals("165", formatter.inputDigit('5')); + assertEquals("1650", formatter.inputDigit('0')); + assertEquals("16502", formatter.inputDigit('2')); + assertEquals("1 650 25", formatter.inputDigit('5')); + assertEquals("1 650 253", formatter.inputDigit('3')); + assertEquals("1 650 253 2", formatter.inputDigit('2')); + assertEquals("1 650 253 22", formatter.inputDigit('2')); + assertEquals("1 650 253 222", formatter.inputDigit('2')); + assertEquals("1 650 253 2222", formatter.inputDigit('2')); + formatter.clear(); assertEquals("6", formatter.inputDigit('6')); assertEquals("65", formatter.inputDigit('5')); @@ -262,7 +275,7 @@ public class AsYouTypeFormatterTest extends TestCase { assertEquals("0301", formatter.inputDigit('1')); assertEquals("03012", formatter.inputDigit('2')); assertEquals("030 123", formatter.inputDigit('3')); - assertEquals("030 1234", formatter.inputDigit('4')); + assertEquals("030 1234", formatter.inputDigit('4')); } public void testAsYouTypeFormatterAR() {