def testGetTimeZonesForNumber(self): # Test with invalid numbers even when their country code prefixes exist in the mapper. self.assertEqual(_UNKNOWN_TIME_ZONE_LIST, time_zones_for_number(US_INVALID_NUMBER)) self.assertEqual(_UNKNOWN_TIME_ZONE_LIST, time_zones_for_number(KO_INVALID_NUMBER)) # Test with valid prefixes. self.assertEqual((_SYDNEY_TZ, ), time_zones_for_number(AU_NUMBER)) self.assertEqual((_SEOUL_TZ, ), time_zones_for_number(KO_NUMBER)) self.assertEqual((_WINNIPEG_TZ, ), time_zones_for_number(CA_NUMBER)) self.assertEqual((_LOS_ANGELES_TZ, ), time_zones_for_number(US_NUMBER1)) self.assertEqual((_NEW_YORK_TZ, ), time_zones_for_number(US_NUMBER2)) # Test with an invalid country code. self.assertEqual( _UNKNOWN_TIME_ZONE_LIST, time_zones_for_number(NUMBER_WITH_INVALID_COUNTRY_CODE)) # Test with a non geographical phone number. self.assertEqual(_UNKNOWN_TIME_ZONE_LIST, time_zones_for_number(INTERNATIONAL_TOLL_FREE)) # Python version extra test: check a number that can't geocoded; falls back to per-country kr_mobile_number = FrozenPhoneNumber(country_code=82, national_number=801234567) self.assertEqual((_SEOUL_TZ, ), time_zones_for_number(kr_mobile_number))
def testFrozenPhoneNumber(self): # Python version extra tests gb_mobile = PhoneNumber(country_code=44, national_number=7912345678) it_number = PhoneNumber(country_code=39, national_number=236618300, italian_leading_zero=True) frozen_gb_mobile1 = FrozenPhoneNumber(country_code=44, national_number=7912345678) frozen_it_number1 = FrozenPhoneNumber(country_code=39, national_number=236618300, italian_leading_zero=True) frozen_gb_mobile2 = FrozenPhoneNumber(gb_mobile) frozen_it_number2 = FrozenPhoneNumber(it_number) self.assertEqual(frozen_gb_mobile1, gb_mobile) self.assertEqual(frozen_gb_mobile2, gb_mobile) self.assertEqual(frozen_gb_mobile1, frozen_gb_mobile2) self.assertEqual(frozen_it_number1, it_number) self.assertEqual(frozen_it_number2, it_number) self.assertEqual(frozen_it_number1, frozen_it_number2) self.assertEqual(hash(frozen_it_number1), hash(frozen_it_number2)) self.assertNotEqual(hash(frozen_it_number1), hash(frozen_gb_mobile1)) phonedict = {frozen_it_number1: 1, frozen_gb_mobile1: 2} self.assertEqual(phonedict[frozen_it_number1], 1) try: frozen_gb_mobile1.country_code = 12 self.fail("Should not be able to modify FrozenPhoneNubmer") except TypeError: pass try: frozen_gb_mobile2.raw_input = "" self.fail("Should not be able to modify FrozenPhoneNubmer") except TypeError: pass try: frozen_gb_mobile1.clear() self.fail("Should not be able to modify FrozenPhoneNubmer") except TypeError: pass try: frozen_gb_mobile1.merge_from(frozen_it_number1) self.fail("Should not be able to modify FrozenPhoneNubmer") except TypeError: pass try: del frozen_gb_mobile1.country_code self.fail("Should not be able to modify FrozenPhoneNubmer") except TypeError: pass # Coverage test frozen_gb_mobile1._mutable = True del frozen_gb_mobile1.country_code
def testCoverage(self): # Python version extra tests invalid_number = PhoneNumber(country_code=210, national_number=123456) self.assertEqual("", country_name_for_number(invalid_number, "en")) # Ensure we exercise all public entrypoints directly self.assertEqual("CA", _prefix_description_for_number(TEST_GEOCODE_DATA, TEST_GEOCODE_LONGEST_PREFIX, US_NUMBER1, "en")) self.assertEqual("CA", description_for_valid_number(US_NUMBER1, "en")) self.assertEqual("", description_for_valid_number(US_INVALID_NUMBER, "en")) # Add in some script and region specific fictional names TEST_GEOCODE_DATA['1650960'] = {'en': u("Mountain View, CA"), "en_GB": u("Mountain View California"), "en_US": u("Mountain View, Sunny California"), "en_Xyzz_US": u("MTV - xyzz"), "en_Latn": u("MountainView")} # The following test might one day return "Mountain View California" self.assertEqual("United States", description_for_number(US_NUMBER2, _ENGLISH, region="GB")) self.assertEqual("Mountain View, Sunny California", description_for_number(US_NUMBER2, _ENGLISH, region="US")) self.assertEqual("MountainView", description_for_number(US_NUMBER2, _ENGLISH, script="Latn")) self.assertEqual("United States", description_for_number(US_NUMBER2, _ENGLISH, script="Latn", region="GB")) self.assertEqual("MTV - xyzz", description_for_number(US_NUMBER2, _ENGLISH, script="Xyzz", region="US")) self.assertEqual("Mountain View, Sunny California", description_for_number(US_NUMBER2, _ENGLISH, script="Zazz", region="US")) # Get a different result when there is a script-specific variant self.assertEqual("MountainView", description_for_number(US_NUMBER2, _ENGLISH, script="Latn", region="US")) TEST_GEOCODE_DATA['1650960'] = {'en': u("Mountain View, CA")} # Test the locale mapping TEST_GEOCODE_DATA['8862'] = {'zh': u("Chinese"), 'zh_Hant': u("Hant-specific")} tw_number = FrozenPhoneNumber(country_code=886, national_number=221234567) self.assertEqual("Hant-specific", description_for_number(tw_number, "zh", region="TW")) del TEST_GEOCODE_DATA['8862']
def reinstate_real_tzdata(): """Reinstate real phone number timezone metadata""" timezone.TIMEZONE_DATA = REAL_TIMEZONE_DATA timezone.TIMEZONE_LONGEST_PREFIX = REAL_TIMEZONE_LONGEST_PREFIX def insert_test_tzdata(): """Insert test timezone metadata into library""" timezone.TIMEZONE_DATA = TEST_TIMEZONE_DATA timezone.TIMEZONE_LONGEST_PREFIX = TEST_TIMEZONE_LONGEST_PREFIX # Set up some test numbers to re-use. AU_NUMBER = FrozenPhoneNumber(country_code=61, national_number=236618300) CA_NUMBER = FrozenPhoneNumber(country_code=1, national_number=6048406565) KO_NUMBER = FrozenPhoneNumber(country_code=82, national_number=22123456) KO_INVALID_NUMBER = FrozenPhoneNumber(country_code=82, national_number=1234) US_NUMBER1 = FrozenPhoneNumber(country_code=1, national_number=6509600000) US_NUMBER2 = FrozenPhoneNumber(country_code=1, national_number=2128120000) US_NUMBER3 = FrozenPhoneNumber(country_code=1, national_number=6174240000) US_INVALID_NUMBER = FrozenPhoneNumber(country_code=1, national_number=123456789) NUMBER_WITH_INVALID_COUNTRY_CODE = FrozenPhoneNumber( country_code=999, national_number=2423651234) INTERNATIONAL_TOLL_FREE = FrozenPhoneNumber(country_code=800, national_number=12345678) # NANPA time zones. _CHICAGO_TZ = "America/Chicago"
def reinstate_real_geodata(): """Reinstate real phone number geocoding metadata""" geocoder.GEOCODE_DATA = REAL_GEOCODE_DATA geocoder.GEOCODE_LONGEST_PREFIX = REAL_GEOCODE_LONGEST_PREFIX def insert_test_geodata(): """Insert test geocoding metadata into library""" geocoder.GEOCODE_DATA = TEST_GEOCODE_DATA geocoder.GEOCODE_LONGEST_PREFIX = TEST_GEOCODE_LONGEST_PREFIX # Set up some test numbers to re-use. KO_NUMBER1 = FrozenPhoneNumber(country_code=82, national_number=22123456L) KO_NUMBER2 = FrozenPhoneNumber(country_code=82, national_number=322123456L) KO_NUMBER3 = FrozenPhoneNumber(country_code=82, national_number=6421234567L) KO_INVALID_NUMBER = FrozenPhoneNumber(country_code=82, national_number=1234L) US_NUMBER1 = FrozenPhoneNumber(country_code=1, national_number=6502530000L) US_NUMBER2 = FrozenPhoneNumber(country_code=1, national_number=6509600000L) US_NUMBER3 = FrozenPhoneNumber(country_code=1, national_number=2128120000L) US_NUMBER4 = FrozenPhoneNumber(country_code=1, national_number=6174240000L) US_INVALID_NUMBER = FrozenPhoneNumber(country_code=1, national_number=123456789L) BS_NUMBER1 = FrozenPhoneNumber(country_code=1, national_number=2423651234L) AU_NUMBER = FrozenPhoneNumber(country_code=61, national_number=236618300L) NUMBER_WITH_INVALID_COUNTRY_CODE = FrozenPhoneNumber( country_code=999, national_number=2423651234L) INTERNATIONAL_TOLL_FREE = FrozenPhoneNumber(country_code=800, national_number=12345678L)
def reinstate_real_carrierdata(): """Reinstate real phone number carrier metadata""" carrier.CARRIER_DATA = REAL_CARRIER_DATA carrier.CARRIER_LONGEST_PREFIX = REAL_CARRIER_LONGEST_PREFIX def insert_test_carrierdata(): """Insert test carrier metadata into library""" carrier.CARRIER_DATA = TEST_CARRIER_DATA carrier.CARRIER_LONGEST_PREFIX = TEST_CARRIER_LONGEST_PREFIX # Set up some test numbers to re-use. AO_MOBILE1 = FrozenPhoneNumber(country_code=244, national_number=917654321) AO_MOBILE2 = FrozenPhoneNumber(country_code=244, national_number=927654321) AO_FIXED1 = FrozenPhoneNumber(country_code=244, national_number=22254321) AO_FIXED2 = FrozenPhoneNumber(country_code=244, national_number=26254321) AO_INVALID_NUMBER = FrozenPhoneNumber(country_code=244, national_number=101234) UK_MOBILE1 = FrozenPhoneNumber(country_code=44, national_number=7387654321) UK_MOBILE2 = FrozenPhoneNumber(country_code=44, national_number=7487654321) UK_FIXED1 = FrozenPhoneNumber(country_code=44, national_number=1123456789) UK_FIXED2 = FrozenPhoneNumber(country_code=44, national_number=2987654321) UK_INVALID_NUMBER = FrozenPhoneNumber(country_code=44, national_number=7301234) UK_PAGER = FrozenPhoneNumber(country_code=44, national_number=7601234567) US_FIXED_OR_MOBILE = FrozenPhoneNumber(country_code=1, national_number=6502123456) NUMBER_WITH_INVALID_COUNTRY_CODE = FrozenPhoneNumber(country_code=999, national_number=2423651234) INTERNATIONAL_TOLL_FREE = FrozenPhoneNumber(country_code=800, national_number=12345678) # Language/country codes
def reinstate_real_geodata(): """Reinstate real phone number geocoding metadata""" geocoder.GEOCODE_DATA = REAL_GEOCODE_DATA geocoder.GEOCODE_LONGEST_PREFIX = REAL_GEOCODE_LONGEST_PREFIX def insert_test_geodata(): """Insert test geocoding metadata into library""" geocoder.GEOCODE_DATA = TEST_GEOCODE_DATA geocoder.GEOCODE_LONGEST_PREFIX = TEST_GEOCODE_LONGEST_PREFIX # Set up some test numbers to re-use. KO_NUMBER1 = FrozenPhoneNumber(country_code=82, national_number=22123456) KO_NUMBER2 = FrozenPhoneNumber(country_code=82, national_number=322123456) KO_NUMBER3 = FrozenPhoneNumber(country_code=82, national_number=6421234567) KO_INVALID_NUMBER = FrozenPhoneNumber(country_code=82, national_number=1234) KO_MOBILE = FrozenPhoneNumber(country_code=82, national_number=101234567) US_NUMBER1 = FrozenPhoneNumber(country_code=1, national_number=6502530000) US_NUMBER2 = FrozenPhoneNumber(country_code=1, national_number=6509600000) US_NUMBER3 = FrozenPhoneNumber(country_code=1, national_number=2128120000) US_NUMBER4 = FrozenPhoneNumber(country_code=1, national_number=6174240000) US_INVALID_NUMBER = FrozenPhoneNumber(country_code=1, national_number=123456789) NANPA_TOLL_FREE = FrozenPhoneNumber(country_code=1, national_number=8002431234) BS_NUMBER1 = FrozenPhoneNumber(country_code=1, national_number=2423651234) AU_NUMBER = FrozenPhoneNumber(country_code=61, national_number=236618300) AR_MOBILE_NUMBER = FrozenPhoneNumber(country_code=54, national_number=92214000000)