Skip to content
This repository was archived by the owner on Feb 12, 2026. It is now read-only.

Commit 438dd5c

Browse files
committed
Restore 100% test coverage.
1 parent ce36416 commit 438dd5c

4 files changed

Lines changed: 42 additions & 3 deletions

File tree

python/phonenumbers/shortnumberinfo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def is_valid_short_number(short_number, region_dialing_from):
9292
not _is_number_matching_desc(short_number, general_desc)):
9393
return False
9494
short_number_desc = metadata.short_code
95-
if short_number_desc.national_number_pattern is None:
95+
if short_number_desc.national_number_pattern is None: # pragma no cover
9696
return False
9797
return _is_number_matching_desc(short_number, short_number_desc)
9898

python/tests/asyoutypetest.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,6 +1103,13 @@ def testAYTFShortNumberFormattingFix_US(self):
11031103
self.assertEqual("12", formatter.input_digit('2'))
11041104
self.assertEqual("1 22", formatter.input_digit('2'))
11051105

1106+
def testAYTFShortNumberFormatting_AR(self):
1107+
# Python version extra test: use real metadata
1108+
formatter = AsYouTypeFormatter("AR")
1109+
self.assertEqual("1", formatter.input_digit('1'))
1110+
self.assertEqual("10", formatter.input_digit('0'))
1111+
self.assertEqual("101", formatter.input_digit('1'))
1112+
11061113
def testEdgeCases(self):
11071114
# Python version extra tests for coverage
11081115
metadataXX = PhoneMetadata(id='XX', country_code=384, international_prefix='011',

python/tests/examplenumberstest.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
from phonenumbers import PhoneNumberType, PhoneMetadata, NumberParseException
2525
from phonenumbers import phonenumberutil, PhoneNumber, is_emergency_number
26-
from phonenumbers import shortnumberinfo, ShortNumberCost
26+
from phonenumbers import shortnumberinfo, ShortNumberCost, AsYouTypeFormatter
2727
from phonenumbers.re_util import fullmatch
2828

2929

@@ -191,7 +191,6 @@ def testShortNumbersValidAndCorrectCost(self):
191191
invalid_string_case = "region_code: %s, national_number: %s" % (regionCode, exampleShortNumber)
192192
invalid_string_cases.append(invalid_string_case)
193193
print >> sys.stderr, "Failed validation from string %s" % invalid_string_case
194-
print >> sys.stderr, "@@@@ Metadata = %s" % PhoneMetadata.short_metadata_for_region(regionCode)
195194
phoneNumber = phonenumberutil.parse(exampleShortNumber, regionCode)
196195
if not shortnumberinfo.is_valid_short_number_object(phoneNumber):
197196
self.invalid_cases.append(phoneNumber)
@@ -208,6 +207,13 @@ def testShortNumbersValidAndCorrectCost(self):
208207
self.assertEqual(0, len(self.invalid_cases))
209208
self.assertEqual(0, len(self.wrong_type_cases))
210209

210+
def testIsCarrierSpecific(self):
211+
# Python version extra test: hit is_carrier_specific entrypoint
212+
esNumber = PhoneNumber(country_code=34, national_number=123)
213+
self.assertTrue(shortnumberinfo.is_carrier_specific(esNumber))
214+
esNumber.national_number = 512345678
215+
self.assertFalse(shortnumberinfo.is_carrier_specific(esNumber))
216+
211217
# Extra tests that need access to the real metadata
212218
def testBlankMetadata(self):
213219
# Python version extra test
@@ -259,6 +265,14 @@ def testFormatNumberForMobile(self):
259265
self.assertEqual("0612345678",
260266
phonenumberutil.format_number_for_mobile_dialing(huNumberFixed, "HU", False))
261267

268+
def testAYTFShortNumberFormatting_AR(self):
269+
# Python version extra test: use real metadata so that the check for accrued digits already
270+
# matching a format fires.
271+
formatter = AsYouTypeFormatter("AR")
272+
self.assertEqual("1", formatter.input_digit('1'))
273+
self.assertEqual("10", formatter.input_digit('0'))
274+
self.assertEqual("101", formatter.input_digit('1'))
275+
262276
def testPrintShortMetadata(self):
263277
# Python version extra test. Print string representation of short metadata.
264278
short_metadata = PhoneMetadata.short_metadata_for_region("GB")

python/tests/shortnumberinfotest.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from .testmetadatatest import TestMetadataTestCase
2626

2727

28+
# Note that these test use real metadata for short numbers, but test metadata o/w.
2829
class ShortNumberInfoTest(TestMetadataTestCase):
2930
"""Unit tests for shortnumberinfo.py"""
3031
def testIsPossibleShortNumber(self):
@@ -36,6 +37,15 @@ def testIsPossibleShortNumber(self):
3637
self.assertFalse(is_possible_short_number_object(impossibleNumber))
3738
self.assertFalse(is_possible_short_number("9", "FR"))
3839

40+
# Python version extra test: check invalid region code
41+
self.assertFalse(is_possible_short_number("123456", "XY"))
42+
# Python version extra test: multiple regions with same calling code
43+
self.assertTrue(is_possible_short_number_object(
44+
PhoneNumber(country_code=44, national_number=18001)))
45+
# Python version extra test: multiple regions with same calling code, hit none
46+
self.assertFalse(is_possible_short_number_object(
47+
PhoneNumber(country_code=44, national_number=58001)))
48+
3949
def testIsValidShortNumber(self):
4050
self.assertTrue(is_valid_short_number_object(
4151
PhoneNumber(country_code=33, national_number=1010)))
@@ -48,6 +58,11 @@ def testIsValidShortNumber(self):
4858
self.assertTrue(is_valid_short_number_object(
4959
PhoneNumber(country_code=44, national_number=18001)))
5060

61+
# Python version extra test: check invalid region code
62+
self.assertFalse(is_valid_short_number("123456", "XY"))
63+
# Python version extra test: not matching general desc
64+
self.assertFalse(is_valid_short_number("2123456", "US"))
65+
5166
def testGetExpectedCost(self):
5267
premiumRateNumber = PhoneNumber(country_code=33,
5368
national_number=int(shortnumberinfo._example_short_number_for_cost("FR", ShortNumberCost.PREMIUM_RATE)))
@@ -193,3 +208,6 @@ def testIsEmergencyNumber_ZW(self):
193208
self.assertFalse(is_emergency_number("911", "ZW"))
194209
self.assertFalse(is_emergency_number("01312345", "ZW"))
195210
self.assertFalse(is_emergency_number("0711234567", "ZW"))
211+
212+
# Python version extra test: invalid region code
213+
self.assertFalse(is_emergency_number("911", "XY"))

0 commit comments

Comments
 (0)