PersonTest.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace Faker\Test\Provider\ms_MY;
  3. use Faker\Generator;
  4. use Faker\Provider\ms_MY\Person;
  5. use PHPUnit\Framework\TestCase;
  6. class PersonTest extends TestCase
  7. {
  8. /**
  9. * @var Generator
  10. */
  11. private $faker;
  12. public function setUp()
  13. {
  14. $faker = new Generator();
  15. $faker->addProvider(new Person($faker));
  16. $this->faker = $faker;
  17. }
  18. /**
  19. * @link https://en.wikipedia.org/wiki/Malaysian_identity_card#Structure_of_the_National_Registration_Identity_Card_Number_(NRIC)
  20. */
  21. public function testPersonalIdentityCardNumber()
  22. {
  23. $myKadNumber = $this->faker->myKadNumber;
  24. $yy = substr($myKadNumber, 0, 2);
  25. //match any year from 00-99
  26. $this->assertRegExp("/^[0-9]{2}$/", $yy);
  27. $mm = substr($myKadNumber, 2, 2);
  28. //match any month from 01-12
  29. $this->assertRegExp("/^0[1-9]|1[0-2]$/", $mm);
  30. $dd = substr($myKadNumber, 4, 2);
  31. //match any date from 01-31
  32. $this->assertRegExp("/^0[1-9]|1[0-9]|2[0-9]|3[0-1]$/", $dd);
  33. $pb = substr($myKadNumber, 6, 2);
  34. //match any valid place of birth code from 01-59 except 17-20
  35. $this->assertRegExp("/^(0[1-9]|1[0-6])|(2[1-9]|3[0-9]|4[0-9]|5[0-9])$/", $pb);
  36. $nnnn = substr($myKadNumber, 8, 4);
  37. //match any number from 0000-9999
  38. $this->assertRegExp("/^[0-9]{4}$/", $nnnn);
  39. }
  40. }