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())) {
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()));
(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);
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
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);
+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.