Exemplo n.º 1
0
class TestEnPh(unittest.TestCase):
    num_sample_runs = 1000

    def setUp(self):
        self.mobile_number_pattern = re.compile(
            r'^(?:0|\+63)(\d+)-\d{3}-\d{4}$')
        self.area2_landline_number_pattern = re.compile(
            r'^(?:0|\+63)2-(\d{4})-\d{4}')
        self.non_area2_landline_number_pattern = re.compile(
            r'^(?:0|\+63)(\d{2})-(\d{3})-\d{4}')
        self.setup_constants()
        self.setup_faker()

    def setup_faker(self):
        self.fake = Faker('en_PH')
        Faker.seed(0)

    def setup_constants(self):
        from faker.providers.phone_number.en_PH import Provider
        self.globe_mobile_number_prefixes = Provider.globe_mobile_number_prefixes
        self.smart_mobile_number_prefixes = Provider.smart_mobile_number_prefixes
        self.sun_mobile_number_prefixes = Provider.sun_mobile_number_prefixes
        self.mobile_number_prefixes = (self.globe_mobile_number_prefixes +
                                       self.smart_mobile_number_prefixes +
                                       self.sun_mobile_number_prefixes)
        self.bayantel_landline_identifiers = Provider.bayantel_landline_identifiers
        self.misc_landline_identifiers = Provider.misc_landline_identifiers
        self.non_area2_landline_area_codes = Provider.non_area2_landline_area_codes

    def test_PH_globe_mobile_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.globe_mobile_number()
            match = self.mobile_number_pattern.match(number)
            assert match and match.group(
                1) in self.globe_mobile_number_prefixes

    def test_PH_smart_mobile_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.smart_mobile_number()
            match = self.mobile_number_pattern.match(number)
            assert match and match.group(
                1) in self.smart_mobile_number_prefixes

    def test_PH_sun_mobile_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.sun_mobile_number()
            match = self.mobile_number_pattern.match(number)
            assert match and match.group(1) in self.sun_mobile_number_prefixes

    def test_PH_mobile_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.mobile_number()
            match = self.mobile_number_pattern.match(number)
            assert match and match.group(1) in self.mobile_number_prefixes

    def test_PH_globe_area2_landline_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.globe_area2_landline_number()
            match = self.area2_landline_number_pattern.match(number)
            assert match and match.group(1).startswith('7')

    def test_PH_pldt_area2_landline_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.pldt_area2_landline_number()
            match = self.area2_landline_number_pattern.match(number)
            assert match and match.group(1).startswith('8')

    def test_PH_bayantel_area2_landline_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.bayantel_area2_landline_number()
            match = self.area2_landline_number_pattern.match(number)
            assert match and match.group(
                1) in self.bayantel_landline_identifiers

    def test_PH_misc_area2_landline_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.misc_area2_landline_number()
            match = self.area2_landline_number_pattern.match(number)
            assert match and match.group(1) in self.misc_landline_identifiers

    def test_PH_area2_landline_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.area2_landline_number()
            match = self.area2_landline_number_pattern.match(number)
            assert match and any([
                match.group(1).startswith('7'),
                match.group(1).startswith('8'),
                match.group(1) in self.bayantel_landline_identifiers,
                match.group(1) in self.misc_landline_identifiers,
            ])

    def test_PH_non_area2_landline_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.non_area2_landline_number()
            match = self.non_area2_landline_number_pattern.match(number)
            assert match and match.group(
                1) in self.non_area2_landline_area_codes

    def test_PH_landline_number(self):
        for i in range(self.num_sample_runs):
            number = self.fake.landline_number()
            area2_match = self.area2_landline_number_pattern.match(number)
            non_area2_match = self.non_area2_landline_number_pattern.match(
                number)
            assert area2_match or non_area2_match
            if area2_match:
                assert any([
                    area2_match.group(1).startswith('7'),
                    area2_match.group(1).startswith('8'),
                    area2_match.group(1) in self.bayantel_landline_identifiers,
                    area2_match.group(1) in self.misc_landline_identifiers,
                ])
            elif non_area2_match:
                assert non_area2_match.group(
                    1) in self.non_area2_landline_area_codes