PhoneNumberTest.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace Faker\Test\Provider\en_ZA;
  3. use Faker\Generator;
  4. use Faker\Provider\en_ZA\PhoneNumber;
  5. use PHPUnit\Framework\TestCase;
  6. class PhoneNumberTest extends TestCase
  7. {
  8. private $faker;
  9. public function setUp()
  10. {
  11. $faker = new Generator();
  12. $faker->addProvider(new PhoneNumber($faker));
  13. $this->faker = $faker;
  14. }
  15. public function testPhoneNumber()
  16. {
  17. for ($i = 0; $i < 10; $i++) {
  18. $number = $this->faker->phoneNumber;
  19. $digits = array_values(array_filter(str_split($number), 'ctype_digit'));
  20. // 10 digits
  21. if($digits[0] = 2 && $digits[1] == 7) {
  22. $this->assertLessThanOrEqual(11, count($digits));
  23. } else {
  24. $this->assertGreaterThanOrEqual(10, count($digits));
  25. }
  26. }
  27. }
  28. public function testTollFreePhoneNumber()
  29. {
  30. for ($i = 0; $i < 10; $i++) {
  31. $number = $this->faker->tollFreeNumber;
  32. $digits = array_values(array_filter(str_split($number), 'ctype_digit'));
  33. if (count($digits) === 11) {
  34. $this->assertEquals('0', $digits[0]);
  35. }
  36. $areaCode = $digits[0] . $digits[1] . $digits[2] . $digits[3];
  37. $this->assertContains($areaCode, array('0800', '0860', '0861', '0862'));
  38. }
  39. }
  40. public function testCellPhoneNumber()
  41. {
  42. for ($i = 0; $i < 10; $i++) {
  43. $number = $this->faker->mobileNumber;
  44. $digits = array_values(array_filter(str_split($number), 'ctype_digit'));
  45. if($digits[0] = 2 && $digits[1] == 7) {
  46. $this->assertLessThanOrEqual(11, count($digits));
  47. } else {
  48. $this->assertGreaterThanOrEqual(10, count($digits));
  49. }
  50. $this->assertRegExp('/^(\+27|27)?(\()?0?([6][0-4]|[7][1-9]|[8][1-9])(\))?( |-|\.|_)?(\d{3})( |-|\.|_)?(\d{4})/', $number);
  51. }
  52. }
  53. }