PersonTest.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace Faker\Test\Provider\en_ZA;
  3. use Faker\Generator;
  4. use Faker\Provider\en_ZA\Person;
  5. use Faker\Provider\DateTime;
  6. use PHPUnit\Framework\TestCase;
  7. class PersonTest extends TestCase
  8. {
  9. private $faker;
  10. public function setUp()
  11. {
  12. $faker = new Generator();
  13. $faker->addProvider(new Person($faker));
  14. $faker->addProvider(new DateTime($faker));
  15. $this->faker = $faker;
  16. }
  17. public function testIdNumberWithDefaults()
  18. {
  19. $idNumber = $this->faker->idNumber();
  20. $this->assertEquals(13, strlen($idNumber));
  21. $this->assertRegExp('#^\d{13}$#', $idNumber);
  22. $this->assertInternalType('string', $idNumber);
  23. }
  24. public function testIdNumberForMales()
  25. {
  26. $idNumber = $this->faker->idNumber(new \DateTime(), true, 'male');
  27. $genderDigit = substr($idNumber, 6, 1);
  28. $this->assertContains($genderDigit, array('5', '6', '7', '8', '9'));
  29. }
  30. public function testIdNumberForFemales()
  31. {
  32. $idNumber = $this->faker->idNumber(new \DateTime(), true, 'female');
  33. $genderDigit = substr($idNumber, 6, 1);
  34. $this->assertContains($genderDigit, array('0', '1', '2', '3', '4'));
  35. }
  36. public function testLicenceCode()
  37. {
  38. $validLicenceCodes = array('A', 'A1', 'B', 'C', 'C1', 'C2', 'EB', 'EC', 'EC1', 'I', 'L', 'L1');
  39. $this->assertContains($this->faker->licenceCode, $validLicenceCodes);
  40. }
  41. public function testMaleTitles()
  42. {
  43. $validMaleTitles = array('Mr.', 'Dr.', 'Prof.', 'Rev.', 'Hon.');
  44. $this->assertContains(Person::titleMale(), $validMaleTitles);
  45. }
  46. public function testFemaleTitles()
  47. {
  48. $validateFemaleTitles = array('Mrs.', 'Ms.', 'Miss', 'Dr.', 'Prof.', 'Rev.', 'Hon.');
  49. $this->assertContains(Person::titleFemale(), $validateFemaleTitles);
  50. }
  51. }