Example #1
0
 def testEmergencyNumberForSharedCountryCallingCode(self):
     # Test the emergency number 112, which is valid in both Australia and
     # the Christmas Islands.
     self.assertTrue(is_emergency_number("112", "AU"))
     self.assertTrue(
         shortnumberinfo.is_valid_short_number_for_region(
             _parse("112", "AU"), "AU"))
     self.assertEqual(
         ShortNumberCost.TOLL_FREE,
         shortnumberinfo.expected_cost_for_region(_parse("112", "AU"),
                                                  "AU"))
     self.assertTrue(is_emergency_number("112", "CX"))
     self.assertTrue(
         shortnumberinfo.is_valid_short_number_for_region(
             _parse("112", "CX"), "CX"))
     self.assertEqual(
         ShortNumberCost.TOLL_FREE,
         shortnumberinfo.expected_cost_for_region(_parse("112", "CX"),
                                                  "CX"))
     sharedEmergencyNumber = PhoneNumber(country_code=61,
                                         national_number=112)
     self.assertTrue(
         shortnumberinfo.is_valid_short_number(sharedEmergencyNumber))
     self.assertEqual(ShortNumberCost.TOLL_FREE,
                      shortnumberinfo.expected_cost(sharedEmergencyNumber))
 def testEmergencyNumberForSharedCountryCallingCode(self):
     # Test the emergency number 112, which is valid in both Australia and
     # the Christmas Islands.
     self.assertTrue(is_emergency_number("112", "AU"))
     self.assertTrue(shortnumberinfo.is_valid_short_number_for_region(_parse("112", "AU"), "AU"))
     self.assertEqual(ShortNumberCost.TOLL_FREE,
                      shortnumberinfo.expected_cost_for_region(_parse("112", "AU"), "AU"))
     self.assertTrue(is_emergency_number("112", "CX"))
     self.assertTrue(shortnumberinfo.is_valid_short_number_for_region(_parse("112", "CX"), "CX"))
     self.assertEqual(ShortNumberCost.TOLL_FREE,
                      shortnumberinfo.expected_cost_for_region(_parse("112", "CX"), "CX"))
     sharedEmergencyNumber = PhoneNumber(country_code=61, national_number=112)
     self.assertTrue(shortnumberinfo.is_valid_short_number(sharedEmergencyNumber))
     self.assertEqual(ShortNumberCost.TOLL_FREE,
                      shortnumberinfo.expected_cost(sharedEmergencyNumber))
 def testShortNumbersValidAndCorrectCost(self):
     invalid_string_cases = []
     for regionCode in phonenumberutil.SUPPORTED_SHORT_REGIONS:
         exampleShortNumber = shortnumberinfo._example_short_number(
             regionCode)
         phoneNumber = phonenumberutil.parse(exampleShortNumber, regionCode)
         if not shortnumberinfo.is_valid_short_number_for_region(
                 phoneNumber, regionCode):
             invalid_string_case = "region_code: %s, national_number: %s" % (
                 regionCode, exampleShortNumber)
             invalid_string_cases.append(invalid_string_case)
             prnt("Failed validation from string %s" % invalid_string_case,
                  file=sys.stderr)
         if not shortnumberinfo.is_valid_short_number(phoneNumber):
             self.invalid_cases.append(phoneNumber)
             prnt("Failed validation for %s" % phoneNumber, file=sys.stderr)
         for cost in [
                 ShortNumberCost.TOLL_FREE, ShortNumberCost.STANDARD_RATE,
                 ShortNumberCost.PREMIUM_RATE, ShortNumberCost.UNKNOWN_COST
         ]:
             exampleShortNumber = shortnumberinfo._example_short_number_for_cost(
                 regionCode, cost)
             if exampleShortNumber != "":
                 phoneNumber = phonenumberutil.parse(
                     exampleShortNumber, regionCode)
                 exampleCost = shortnumberinfo.expected_cost_for_region(
                     phoneNumber, regionCode)
                 if cost != exampleCost:
                     self.wrong_type_cases.append(phoneNumber)
                     prnt("Wrong cost for %s: got %s, expected: %s" %
                          (phoneNumber, exampleCost, cost),
                          file=sys.stderr)
     self.assertEqual(0, len(invalid_string_cases))
     self.assertEqual(0, len(self.invalid_cases))
     self.assertEqual(0, len(self.wrong_type_cases))
 def testShortNumbersValidAndCorrectCost(self):
     invalid_string_cases = []
     for regionCode in phonenumberutil.SUPPORTED_SHORT_REGIONS:
         exampleShortNumber = shortnumberinfo._example_short_number(regionCode)
         phoneNumber = phonenumberutil.parse(exampleShortNumber, regionCode)
         if not shortnumberinfo.is_valid_short_number_for_region(phoneNumber, regionCode):
             invalid_string_case = "region_code: %s, national_number: %s" % (regionCode, exampleShortNumber)
             invalid_string_cases.append(invalid_string_case)
             prnt("Failed validation from string %s" % invalid_string_case, file=sys.stderr)
         if not shortnumberinfo.is_valid_short_number(phoneNumber):
             self.invalid_cases.append(phoneNumber)
             prnt("Failed validation for %s" % phoneNumber, file=sys.stderr)
         for cost in [ShortNumberCost.TOLL_FREE, ShortNumberCost.STANDARD_RATE,
                      ShortNumberCost.PREMIUM_RATE, ShortNumberCost.UNKNOWN_COST]:
             exampleShortNumber = shortnumberinfo._example_short_number_for_cost(regionCode, cost)
             if exampleShortNumber != "":
                 phoneNumber = phonenumberutil.parse(exampleShortNumber, regionCode)
                 if cost != shortnumberinfo.expected_cost_for_region(phoneNumber, regionCode):
                     self.wrong_type_cases.append(phoneNumber)
                     prnt("Wrong cost for %s" % phoneNumber, file=sys.stderr)
     self.assertEqual(0, len(invalid_string_cases))
     self.assertEqual(0, len(self.invalid_cases))
     self.assertEqual(0, len(self.wrong_type_cases))
    def testGetExpectedCostForSharedCountryCallingCode(self):
        # Test some numbers which have different costs in countries sharing
        # the same country calling code. In Australia, 1234 is premium-rate,
        # 1194 is standard-rate, and 733 is toll-free. These are not known to
        # be valid numbers in the Christmas Islands.
        ambiguousPremiumRateString = "1234"
        ambiguousPremiumRateNumber = PhoneNumber(country_code=61, national_number=1234)
        ambiguousStandardRateString = "1194"
        ambiguousStandardRateNumber = PhoneNumber(country_code=61, national_number=1194)
        ambiguousTollFreeString = "733"
        ambiguousTollFreeNumber = PhoneNumber(country_code=61, national_number=733)

        self.assertTrue(shortnumberinfo.is_valid_short_number(ambiguousPremiumRateNumber))
        self.assertTrue(shortnumberinfo.is_valid_short_number(ambiguousStandardRateNumber))
        self.assertTrue(shortnumberinfo.is_valid_short_number(ambiguousTollFreeNumber))

        self.assertTrue(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousPremiumRateString, "AU"), "AU"))
        self.assertEqual(ShortNumberCost.PREMIUM_RATE,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousPremiumRateString, "AU"), "AU"))
        self.assertFalse(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousPremiumRateString, "CX"), "CX"))
        self.assertEqual(ShortNumberCost.UNKNOWN_COST,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousPremiumRateString, "CX"), "CX"))
        # PREMIUM_RATE takes precedence over UNKNOWN_COST.
        self.assertEqual(ShortNumberCost.PREMIUM_RATE,
                         shortnumberinfo.expected_cost(ambiguousPremiumRateNumber))

        self.assertTrue(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousStandardRateString, "AU"), "AU"))
        self.assertEqual(ShortNumberCost.STANDARD_RATE,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousStandardRateString, "AU"), "AU"))
        self.assertFalse(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousStandardRateString, "CX"), "CX"))
        self.assertEqual(ShortNumberCost.UNKNOWN_COST,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousStandardRateString, "CX"), "CX"))
        self.assertEqual(ShortNumberCost.UNKNOWN_COST,
                         shortnumberinfo.expected_cost(ambiguousStandardRateNumber))

        self.assertTrue(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousTollFreeString, "AU"), "AU"))
        self.assertEqual(ShortNumberCost.TOLL_FREE,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousTollFreeString, "AU"), "AU"))
        self.assertFalse(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousTollFreeString, "CX"), "CX"))
        self.assertEqual(ShortNumberCost.UNKNOWN_COST,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousTollFreeString, "CX"), "CX"))
        self.assertEqual(ShortNumberCost.UNKNOWN_COST,
                         shortnumberinfo.expected_cost(ambiguousTollFreeNumber))
    def testGetExpectedCostForSharedCountryCallingCode(self):
        # Test some numbers which have different costs in countries sharing
        # the same country calling code. In Australia, 1234 is premium-rate,
        # 1194 is standard-rate, and 733 is toll-free. These are not known to
        # be valid numbers in the Christmas Islands.
        ambiguousPremiumRateString = "1234"
        ambiguousPremiumRateNumber = PhoneNumber(country_code=61, national_number=1234)
        ambiguousStandardRateString = "1194"
        ambiguousStandardRateNumber = PhoneNumber(country_code=61, national_number=1194)
        ambiguousTollFreeString = "733"
        ambiguousTollFreeNumber = PhoneNumber(country_code=61, national_number=733)

        self.assertTrue(shortnumberinfo.is_valid_short_number(ambiguousPremiumRateNumber))
        self.assertTrue(shortnumberinfo.is_valid_short_number(ambiguousStandardRateNumber))
        self.assertTrue(shortnumberinfo.is_valid_short_number(ambiguousTollFreeNumber))

        self.assertTrue(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousPremiumRateString, "AU"), "AU"))
        self.assertEqual(ShortNumberCost.PREMIUM_RATE,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousPremiumRateString, "AU"), "AU"))
        self.assertFalse(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousPremiumRateString, "CX"), "CX"))
        self.assertEqual(ShortNumberCost.UNKNOWN_COST,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousPremiumRateString, "CX"), "CX"))
        # PREMIUM_RATE takes precedence over UNKNOWN_COST.
        self.assertEqual(ShortNumberCost.PREMIUM_RATE,
                         shortnumberinfo.expected_cost(ambiguousPremiumRateNumber))

        self.assertTrue(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousStandardRateString, "AU"), "AU"))
        self.assertEqual(ShortNumberCost.STANDARD_RATE,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousStandardRateString, "AU"), "AU"))
        self.assertFalse(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousStandardRateString, "CX"), "CX"))
        self.assertEqual(ShortNumberCost.UNKNOWN_COST,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousStandardRateString, "CX"), "CX"))
        self.assertEqual(ShortNumberCost.UNKNOWN_COST,
                         shortnumberinfo.expected_cost(ambiguousStandardRateNumber))

        self.assertTrue(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousTollFreeString, "AU"), "AU"))
        self.assertEqual(ShortNumberCost.TOLL_FREE,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousTollFreeString, "AU"), "AU"))
        self.assertFalse(shortnumberinfo.is_valid_short_number_for_region(_parse(ambiguousTollFreeString, "CX"), "CX"))
        self.assertEqual(ShortNumberCost.UNKNOWN_COST,
                         shortnumberinfo.expected_cost_for_region(_parse(ambiguousTollFreeString, "CX"), "CX"))
        self.assertEqual(ShortNumberCost.UNKNOWN_COST,
                         shortnumberinfo.expected_cost(ambiguousTollFreeNumber))