1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- namespace Faker\Test\Provider\fi_FI;
- use Faker\Generator;
- use Faker\Provider\DateTime;
- use Faker\Provider\fi_FI\Person;
- use PHPUnit\Framework\TestCase;
- class PersonTest extends TestCase
- {
- /** @var Generator */
- protected $faker;
- public function setUp()
- {
- $faker = new Generator();
- $faker->addProvider(new DateTime($faker));
- $faker->addProvider(new Person($faker));
- $this->faker = $faker;
- }
- public function provideSeedAndExpectedReturn()
- {
- return array(
- array(1, '1800-01-01', '010100+5207'),
- array(2, '1930-08-08', '080830-508R'),
- array(3, '1999-12-31', '311299-409D'),
- array(4, '2000-01-01', '010100A039P'),
- array(5, '2015-06-17', '170615A690X')
- );
- }
- /**
- * @dataProvider provideSeedAndExpectedReturn
- */
- public function testPersonalIdentityNumberUsesBirthDateIfProvided($seed, $birthdate, $expected)
- {
- $faker = $this->faker;
- $faker->seed($seed);
- $pin = $faker->personalIdentityNumber(\DateTime::createFromFormat('Y-m-d', $birthdate));
- $this->assertEquals($expected, $pin);
- }
- public function testPersonalIdentityNumberGeneratesCompliantNumbers()
- {
- if (strtotime('1800-01-01 00:00:00')) {
- $min="1900";
- $max="2099";
- for ($i = 0; $i < 10; $i++) {
- $birthdate = $this->faker->dateTimeBetween('1800-01-01 00:00:00', '1899-12-31 23:59:59');
- $pin = $this->faker->personalIdentityNumber($birthdate, NULL, true);
- $this->assertRegExp('/^[0-9]{6}\+[0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/', $pin);
- }
- } else { // timestamp limit for 32-bit computer
- $min="1902";
- $max="2037";
- }
- for ($i = 0; $i < 10; $i++) {
- $birthdate = $this->faker->dateTimeBetween("$min-01-01 00:00:00", '1999-12-31 23:59:59');
- $pin = $this->faker->personalIdentityNumber($birthdate);
- $this->assertRegExp('/^[0-9]{6}-[0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/', $pin);
- }
- for ($i = 0; $i < 10; $i++) {
- $birthdate = $this->faker->dateTimeBetween('2000-01-01 00:00:00', "$max-12-31 23:59:59");
- $pin = $this->faker->personalIdentityNumber($birthdate);
- $this->assertRegExp('/^[0-9]{6}A[0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/', $pin);
- }
- }
- public function testPersonalIdentityNumberGeneratesOddValuesForMales()
- {
- $pin = $this->faker->personalIdentityNumber(null, 'male');
- $this->assertEquals(1, $pin{9} % 2);
- }
- public function testPersonalIdentityNumberGeneratesEvenValuesForFemales()
- {
- $pin = $this->faker->personalIdentityNumber(null, 'female');
- $this->assertEquals(0, $pin{9} % 2);
- }
- }
|