PersonTest.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace Faker\Test\Provider\sv_SE;
  3. use Faker\Calculator\Luhn;
  4. use Faker\Generator;
  5. use Faker\Provider\sv_SE\Person;
  6. use PHPUnit\Framework\TestCase;
  7. class PersonTest extends TestCase
  8. {
  9. /** @var Generator */
  10. protected $faker;
  11. public function setUp()
  12. {
  13. $faker = new Generator();
  14. $faker->addProvider(new Person($faker));
  15. $this->faker = $faker;
  16. }
  17. public function provideSeedAndExpectedReturn()
  18. {
  19. return array(
  20. array(1, '720727', '720727-5798'),
  21. array(2, '710414', '710414-5664'),
  22. array(3, '591012', '591012-4519'),
  23. array(4, '180307', '180307-0356'),
  24. array(5, '820904', '820904-7748')
  25. );
  26. }
  27. /**
  28. * @dataProvider provideSeedAndExpectedReturn
  29. */
  30. public function testPersonalIdentityNumberUsesBirthDateIfProvided($seed, $birthdate, $expected)
  31. {
  32. $faker = $this->faker;
  33. $faker->seed($seed);
  34. $pin = $faker->personalIdentityNumber(\DateTime::createFromFormat('ymd', $birthdate));
  35. $this->assertEquals($expected, $pin);
  36. }
  37. public function testPersonalIdentityNumberGeneratesLuhnCompliantNumbers()
  38. {
  39. $pin = str_replace('-', '', $this->faker->personalIdentityNumber());
  40. $this->assertTrue(Luhn::isValid($pin));
  41. }
  42. public function testPersonalIdentityNumberGeneratesOddValuesForMales()
  43. {
  44. $pin = $this->faker->personalIdentityNumber(null, 'male');
  45. $this->assertEquals(1, $pin{9} % 2);
  46. }
  47. public function testPersonalIdentityNumberGeneratesEvenValuesForFemales()
  48. {
  49. $pin = $this->faker->personalIdentityNumber(null, 'female');
  50. $this->assertEquals(0, $pin{9} % 2);
  51. }
  52. }