diff options
author | David Drysdale <dmd@lurklurk.org> | 2013-09-03 15:16:02 +0100 |
---|---|---|
committer | David Drysdale <dmd@lurklurk.org> | 2013-09-03 15:16:02 +0100 |
commit | 438dd5c20f60537a81e8477266dce50242d250f5 (patch) | |
tree | 68e3bb3423bed68a8712c68cb0e335a6a3306d99 | |
parent | ce364163a7c4352ec1e95c3aa607a9f34e7e86b3 (diff) |
Restore 100% test coverage.
-rw-r--r-- | python/phonenumbers/shortnumberinfo.py | 2 | ||||
-rw-r--r-- | python/tests/asyoutypetest.py | 7 | ||||
-rw-r--r-- | python/tests/examplenumberstest.py | 18 | ||||
-rw-r--r-- | python/tests/shortnumberinfotest.py | 18 |
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")) |