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