Browse Source

Merge 088ed31a84 into cf446565d9

pull/3358/merge
mandlil 4 days ago
committed by GitHub
parent
commit
cc0090e5dc
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 2 deletions
  1. +5
    -2
      java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java
  2. +18
    -0
      java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java

+ 5
- 2
java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java View File

@ -3048,9 +3048,12 @@ public class PhoneNumberUtil {
if (transformRule == null || transformRule.length() == 0
|| prefixMatcher.group(numOfGroups) == null) {
// If the original number was viable, and the resultant number is not, we return.
if (isViableOriginalNumber
if ((isViableOriginalNumber
&& !matcherApi.matchNationalNumber(
number.substring(prefixMatcher.end()), generalDesc, false)) {
number.substring(prefixMatcher.end()), generalDesc, false))||
(getNumberTypeHelper(number.toString(), metadata) != PhoneNumberType.UNKNOWN
&& getNumberTypeHelper(number.substring(prefixMatcher.end()), metadata)
== PhoneNumberType.UNKNOWN)) {
return false;
}
if (carrierCode != null && numOfGroups > 0 && prefixMatcher.group(numOfGroups) != null) {


+ 18
- 0
java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java View File

@ -1853,6 +1853,9 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
metadata
.getGeneralDescBuilder()
.setNationalNumberPattern("\\d{4,8}");
metadata
.getGeneralDescBuilder()
.addPossibleLength(6);
StringBuilder numberToStrip = new StringBuilder("34356778");
String strippedNumber = "356778";
assertTrue(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata.build(), null));
@ -1876,6 +1879,21 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
assertEquals("Should have had no change - after stripping, it wouldn't have matched "
+ "the national rule.",
strippedNumber, numberToStrip.toString());
metadata.setNationalPrefixForParsing("0|80?");
metadata.setPremiumRate(
metadata
.getGeneralDescBuilder()
.setNationalNumberPattern("(?:810|902)\\d{7}"));
metadata.setPremiumRate(metadata.getGeneralDescBuilder().addPossibleLength(10));
numberToStrip = new StringBuilder("8105261733");
strippedNumber = "8105261733";
assertFalse(
phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata.build(), null));
assertEquals(
"Should have had no change - after stripping, it wouldn't have matched "
+ "the national rule.",
strippedNumber,
numberToStrip.toString());
// Test extracting carrier selection code.
metadata.setNationalPrefixForParsing("0(81)?");
numberToStrip = new StringBuilder("08122123456");


Loading…
Cancel
Save