summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Drysdale <dmd@lurklurk.org>2013-09-03 15:16:02 +0100
committerDavid Drysdale <dmd@lurklurk.org>2013-09-03 15:16:02 +0100
commit438dd5c20f60537a81e8477266dce50242d250f5 (patch)
tree68e3bb3423bed68a8712c68cb0e335a6a3306d99
parentce364163a7c4352ec1e95c3aa607a9f34e7e86b3 (diff)
Restore 100% test coverage.
-rw-r--r--python/phonenumbers/shortnumberinfo.py2
-rw-r--r--python/tests/asyoutypetest.py7
-rw-r--r--python/tests/examplenumberstest.py18
-rw-r--r--python/tests/shortnumberinfotest.py18
4 files changed, 42 insertions, 3 deletions
diff --git a/python/phonenumbers/shortnumberinfo.py b/python/phonenumbers/shortnumberinfo.py
index 276a0316..af576d2c 100644
--- a/python/phonenumbers/shortnumberinfo.py
+++ b/python/phonenumbers/shortnumberinfo.py
@@ -92,7 +92,7 @@ def is_valid_short_number(short_number, region_dialing_from):
not _is_number_matching_desc(short_number, general_desc)):
return False
short_number_desc = metadata.short_code
- if short_number_desc.national_number_pattern is None:
+ if short_number_desc.national_number_pattern is None: # pragma no cover
return False
return _is_number_matching_desc(short_number, short_number_desc)
diff --git a/python/tests/asyoutypetest.py b/python/tests/asyoutypetest.py
index 1bb7a4dc..0719c9bd 100644
--- a/python/tests/asyoutypetest.py
+++ b/python/tests/asyoutypetest.py
@@ -1103,6 +1103,13 @@ class AsYouTypeFormatterTest(TestMetadataTestCase):
self.assertEqual("12", formatter.input_digit('2'))
self.assertEqual("1 22", formatter.input_digit('2'))
+ def testAYTFShortNumberFormatting_AR(self):
+ # Python version extra test: use real metadata
+ formatter = AsYouTypeFormatter("AR")
+ self.assertEqual("1", formatter.input_digit('1'))
+ self.assertEqual("10", formatter.input_digit('0'))
+ self.assertEqual("101", formatter.input_digit('1'))
+
def testEdgeCases(self):
# Python version extra tests for coverage
metadataXX = PhoneMetadata(id='XX', country_code=384, international_prefix='011',
diff --git a/python/tests/examplenumberstest.py b/python/tests/examplenumberstest.py
index 748b12ca..819a1cac 100644
--- a/python/tests/examplenumberstest.py
+++ b/python/tests/examplenumberstest.py
@@ -23,7 +23,7 @@ import unittest
from phonenumbers import PhoneNumberType, PhoneMetadata, NumberParseException
from phonenumbers import phonenumberutil, PhoneNumber, is_emergency_number
-from phonenumbers import shortnumberinfo, ShortNumberCost
+from phonenumbers import shortnumberinfo, ShortNumberCost, AsYouTypeFormatter
from phonenumbers.re_util import fullmatch
@@ -191,7 +191,6 @@ class ExampleNumbersTest(unittest.TestCase):
invalid_string_case = "region_code: %s, national_number: %s" % (regionCode, exampleShortNumber)
invalid_string_cases.append(invalid_string_case)
print >> sys.stderr, "Failed validation from string %s" % invalid_string_case
- print >> sys.stderr, "@@@@ Metadata = %s" % PhoneMetadata.short_metadata_for_region(regionCode)
phoneNumber = phonenumberutil.parse(exampleShortNumber, regionCode)
if not shortnumberinfo.is_valid_short_number_object(phoneNumber):
self.invalid_cases.append(phoneNumber)
@@ -208,6 +207,13 @@ class ExampleNumbersTest(unittest.TestCase):
self.assertEqual(0, len(self.invalid_cases))
self.assertEqual(0, len(self.wrong_type_cases))
+ def testIsCarrierSpecific(self):
+ # Python version extra test: hit is_carrier_specific entrypoint
+ esNumber = PhoneNumber(country_code=34, national_number=123)
+ self.assertTrue(shortnumberinfo.is_carrier_specific(esNumber))
+ esNumber.national_number = 512345678
+ self.assertFalse(shortnumberinfo.is_carrier_specific(esNumber))
+
# Extra tests that need access to the real metadata
def testBlankMetadata(self):
# Python version extra test
@@ -259,6 +265,14 @@ class ExampleNumbersTest(unittest.TestCase):
self.assertEqual("0612345678",
phonenumberutil.format_number_for_mobile_dialing(huNumberFixed, "HU", False))
+ def testAYTFShortNumberFormatting_AR(self):
+ # Python version extra test: use real metadata so that the check for accrued digits already
+ # matching a format fires.
+ formatter = AsYouTypeFormatter("AR")
+ self.assertEqual("1", formatter.input_digit('1'))
+ self.assertEqual("10", formatter.input_digit('0'))
+ self.assertEqual("101", formatter.input_digit('1'))
+
def testPrintShortMetadata(self):
# Python version extra test. Print string representation of short metadata.
short_metadata = PhoneMetadata.short_metadata_for_region("GB")
diff --git a/python/tests/shortnumberinfotest.py b/python/tests/shortnumberinfotest.py
index 3c0f301a..971defd7 100644
--- a/python/tests/shortnumberinfotest.py
+++ b/python/tests/shortnumberinfotest.py
@@ -25,6 +25,7 @@ from phonenumbers import shortnumberinfo, ShortNumberCost, PhoneNumber
from .testmetadatatest import TestMetadataTestCase
+# Note that these test use real metadata for short numbers, but test metadata o/w.
class ShortNumberInfoTest(TestMetadataTestCase):
"""Unit tests for shortnumberinfo.py"""
def testIsPossibleShortNumber(self):
@@ -36,6 +37,15 @@ class ShortNumberInfoTest(TestMetadataTestCase):
self.assertFalse(is_possible_short_number_object(impossibleNumber))
self.assertFalse(is_possible_short_number("9", "FR"))
+ # Python version extra test: check invalid region code
+ self.assertFalse(is_possible_short_number("123456", "XY"))
+ # Python version extra test: multiple regions with same calling code
+ self.assertTrue(is_possible_short_number_object(
+ PhoneNumber(country_code=44, national_number=18001)))
+ # Python version extra test: multiple regions with same calling code, hit none
+ self.assertFalse(is_possible_short_number_object(
+ PhoneNumber(country_code=44, national_number=58001)))
+
def testIsValidShortNumber(self):
self.assertTrue(is_valid_short_number_object(
PhoneNumber(country_code=33, national_number=1010)))
@@ -48,6 +58,11 @@ class ShortNumberInfoTest(TestMetadataTestCase):
self.assertTrue(is_valid_short_number_object(
PhoneNumber(country_code=44, national_number=18001)))
+ # Python version extra test: check invalid region code
+ self.assertFalse(is_valid_short_number("123456", "XY"))
+ # Python version extra test: not matching general desc
+ self.assertFalse(is_valid_short_number("2123456", "US"))
+
def testGetExpectedCost(self):
premiumRateNumber = PhoneNumber(country_code=33,
national_number=int(shortnumberinfo._example_short_number_for_cost("FR", ShortNumberCost.PREMIUM_RATE)))
@@ -193,3 +208,6 @@ class ShortNumberInfoTest(TestMetadataTestCase):
self.assertFalse(is_emergency_number("911", "ZW"))
self.assertFalse(is_emergency_number("01312345", "ZW"))
self.assertFalse(is_emergency_number("0711234567", "ZW"))
+
+ # Python version extra test: invalid region code
+ self.assertFalse(is_emergency_number("911", "XY"))