1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
<?php
namespace Faker\Test\Provider\fi_FI;
use Faker\Provider\DateTime;
use Faker\Provider\fi_FI\Person;
use Faker\Test\TestCase;
/**
* @group legacy
*/
final class PersonTest extends TestCase
{
public function provideSeedAndExpectedReturn()
{
return [
[1, '1800-01-01', '010100+5207'],
[2, '1930-08-08', '080830-508R'],
[3, '1999-12-31', '311299-409D'],
[4, '2000-01-01', '010100A039P'],
[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));
self::assertEquals($expected, $pin);
}
public function testPersonalIdentityNumberGeneratesCompliantNumbers()
{
if (!$this->is32bitSystem()) {
$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);
self::assertMatchesRegularExpression('/^[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);
self::assertMatchesRegularExpression('/^[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);
self::assertMatchesRegularExpression('/^[0-9]{6}A[0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/', $pin);
}
}
public function testPersonalIdentityNumberGeneratesOddValuesForMales()
{
$pin = $this->faker->personalIdentityNumber(null, 'male');
self::assertEquals(1, $pin[9] % 2);
}
public function testPersonalIdentityNumberGeneratesEvenValuesForFemales()
{
$pin = $this->faker->personalIdentityNumber(null, 'female');
self::assertEquals(0, $pin[9] % 2);
}
protected function getProviders(): iterable
{
yield new Person($this->faker);
yield new DateTime($this->faker);
}
}
|