summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlararennie@google.com <lararennie@google.com@ee073f10-1060-11df-b6a4-87a95322a99c>2012-09-12 08:09:05 +0000
committerlararennie@google.com <lararennie@google.com@ee073f10-1060-11df-b6a4-87a95322a99c>2012-09-12 08:09:05 +0000
commit933f9216fb5771aa7b7752bac965310427242c88 (patch)
tree5a9d6ee683db8a8644b6664a7e1af60df07ead6c
parent791ae910793ba870a1355bc32b90f85535883b63 (diff)
downloadandroid_external_libphonenumbergoogle-933f9216fb5771aa7b7752bac965310427242c88.tar.gz
android_external_libphonenumbergoogle-933f9216fb5771aa7b7752bac965310427242c88.tar.bz2
android_external_libphonenumbergoogle-933f9216fb5771aa7b7752bac965310427242c88.zip
Java/CPP: libphonenumber v5.1.2 - AYTF fix for numbers in national format in countries with no national prefix.
git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@524 ee073f10-1060-11df-b6a4-87a95322a99c
-rw-r--r--cpp/src/phonenumbers/asyoutypeformatter.cc5
-rw-r--r--cpp/test/phonenumbers/asyoutypeformatter_test.cc11
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java6
-rw-r--r--java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java11
-rw-r--r--java/release_notes.txt5
5 files changed, 34 insertions, 4 deletions
diff --git a/cpp/src/phonenumbers/asyoutypeformatter.cc b/cpp/src/phonenumbers/asyoutypeformatter.cc
index df3489f..1111fde 100644
--- a/cpp/src/phonenumbers/asyoutypeformatter.cc
+++ b/cpp/src/phonenumbers/asyoutypeformatter.cc
@@ -198,10 +198,11 @@ void AsYouTypeFormatter::GetAvailableFormats(
current_metadata_->intl_number_format().size() > 0)
? current_metadata_->intl_number_format()
: current_metadata_->number_format();
-
+ bool national_prefix_used_by_country =
+ current_metadata_->has_national_prefix();
for (RepeatedPtrField<NumberFormat>::const_iterator it = format_list.begin();
it != format_list.end(); ++it) {
- if (is_complete_number_ ||
+ if (!national_prefix_used_by_country || is_complete_number_ ||
it->national_prefix_optional_when_formatting() ||
phone_util_.FormattingRuleHasFirstGroupOnly(
it->national_prefix_formatting_rule())) {
diff --git a/cpp/test/phonenumbers/asyoutypeformatter_test.cc b/cpp/test/phonenumbers/asyoutypeformatter_test.cc
index ad5d78d..c9457d0 100644
--- a/cpp/test/phonenumbers/asyoutypeformatter_test.cc
+++ b/cpp/test/phonenumbers/asyoutypeformatter_test.cc
@@ -1126,6 +1126,17 @@ TEST_F(AsYouTypeFormatterTest, AYTF_ShortNumberFormattingFix_MX) {
EXPECT_EQ("+52 800 123 4567", formatter_->InputDigit('7', &result_));
}
+TEST_F(AsYouTypeFormatterTest, AYTF_NoNationalPrefix) {
+ formatter_.reset(phone_util_.GetAsYouTypeFormatter(RegionCode::IT()));
+
+ EXPECT_EQ("3", formatter_->InputDigit('3', &result_));
+ EXPECT_EQ("33", formatter_->InputDigit('3', &result_));
+ EXPECT_EQ("333", formatter_->InputDigit('3', &result_));
+ EXPECT_EQ("333 3", formatter_->InputDigit('3', &result_));
+ EXPECT_EQ("333 33", formatter_->InputDigit('3', &result_));
+ EXPECT_EQ("333 333", formatter_->InputDigit('3', &result_));
+}
+
TEST_F(AsYouTypeFormatterTest, AYTF_ShortNumberFormattingFix_US) {
// For the US, an initial 1 is treated specially.
formatter_.reset(phone_util_.GetAsYouTypeFormatter(RegionCode::US()));
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java b/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java
index dfe49d4..c1ea69f 100644
--- a/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java
@@ -177,8 +177,10 @@ public class AsYouTypeFormatter {
(isCompleteNumber && currentMetaData.intlNumberFormatSize() > 0)
? currentMetaData.intlNumberFormats()
: currentMetaData.numberFormats();
+ boolean nationalPrefixIsUsedByCountry = currentMetaData.hasNationalPrefix();
for (NumberFormat format : formatList) {
- if (isCompleteNumber || format.isNationalPrefixOptionalWhenFormatting() ||
+ if (!nationalPrefixIsUsedByCountry || isCompleteNumber ||
+ format.isNationalPrefixOptionalWhenFormatting() ||
phoneUtil.formattingRuleHasFirstGroupOnly(format.getNationalPrefixFormattingRule())) {
if (isFormatEligible(format.getFormat())) {
possibleFormats.add(format);
@@ -520,7 +522,7 @@ public class AsYouTypeFormatter {
isCompleteNumber = true;
} else if (currentMetaData.hasNationalPrefixForParsing()) {
Pattern nationalPrefixForParsing =
- regexCache.getPatternForRegex(currentMetaData.getNationalPrefixForParsing());
+ regexCache.getPatternForRegex(currentMetaData.getNationalPrefixForParsing());
Matcher m = nationalPrefixForParsing.matcher(nationalNumber);
if (m.lookingAt()) {
// When the national prefix is detected, we use international formatting rules instead of
diff --git a/java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java b/java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java
index c8143d9..a9f7346 100644
--- a/java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java
+++ b/java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java
@@ -1071,6 +1071,17 @@ public class AsYouTypeFormatterTest extends TestMetadataTestCase {
assertEquals("+52 800 123 4567", formatter.inputDigit('7'));
}
+ public void testAYTFNoNationalPrefix() {
+ AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.IT);
+
+ assertEquals("3", formatter.inputDigit('3'));
+ assertEquals("33", formatter.inputDigit('3'));
+ assertEquals("333", formatter.inputDigit('3'));
+ assertEquals("333 3", formatter.inputDigit('3'));
+ assertEquals("333 33", formatter.inputDigit('3'));
+ assertEquals("333 333", formatter.inputDigit('3'));
+ }
+
public void testAYTFShortNumberFormattingFix_US() {
// For the US, an initial 1 is treated specially.
AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
diff --git a/java/release_notes.txt b/java/release_notes.txt
index ab720e8..30a705c 100644
--- a/java/release_notes.txt
+++ b/java/release_notes.txt
@@ -1,3 +1,8 @@
+Sep 11, 2010: libphonenumber-5.1.2
+* Bug fix:
+ - Fixing regression in AsYouTypeFormatter where it no longer worked for numbers entered in national
+ format for countries with no national prefix, e.g. Spain.
+
Sep 5, 2010: libphonenumber-5.1.1
* Code changes:
- Added better logging/exception handling for catching cases where metadata is invalid/missing.