From 98004f26188c588706a416ec6cad735312ba2817 Mon Sep 17 00:00:00 2001 From: avgkudey Date: Thu, 21 Nov 2024 20:39:41 +0300 Subject: [PATCH] Sri Lanka Provider Person and Phone Number --- src/Faker/Generator.php | 12 +++ src/Provider/en_SL/Person.php | 128 ++++++++++++++++++++++++ src/Provider/en_SL/PhoneNumber.php | 21 ++++ test/Provider/en_SL/PersonTest.php | 64 ++++++++++++ test/Provider/en_SL/PhoneNumberTest.php | 39 ++++++++ 5 files changed, 264 insertions(+) create mode 100644 src/Provider/en_SL/Person.php create mode 100644 src/Provider/en_SL/PhoneNumber.php create mode 100644 test/Provider/en_SL/PersonTest.php create mode 100644 test/Provider/en_SL/PhoneNumberTest.php diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index d1320312b1..0de42d3aca 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -481,6 +481,18 @@ * * @method string phoneNumber() * + * @property string $mobileNumber + * + * @method string mobileNumber() + * + * @property string $nicNumber + * + * @method string nicNumber() + * + * @property string $nicNumberOld + * + * @method string nicNumberOld() + * * @property string $e164PhoneNumber * * @method string e164PhoneNumber() diff --git a/src/Provider/en_SL/Person.php b/src/Provider/en_SL/Person.php new file mode 100644 index 0000000000..70f67be346 --- /dev/null +++ b/src/Provider/en_SL/Person.php @@ -0,0 +1,128 @@ +faker->nicNumberOld; + + self::assertSame(10, strlen($nic)); + self::assertMatchesRegularExpression('/^\d{9}[VX]$/', $nic); + } + } + + public function testMaleName(): void + { + for ($i = 0; $i < 100; ++$i) { + $name = $this->faker->name('male'); + + self::assertGreaterThan(0, strlen($name)); + } + } + public function testFeMaleName(): void + { + for ($i = 0; $i < 100; ++$i) { + $name = $this->faker->name('female'); + + self::assertGreaterThan(0, strlen($name)); + } + } + + public function testNicNumber(): void + { + for ($i = 0; $i < 100; ++$i) { + $nic = $this->faker->nicNumber; + + self::assertSame(12, strlen($nic), "NIC number should be 12 characters long: $nic"); + + self::assertTrue(in_array($nic[0], ['9', '0'], true)); + + $year = (int) substr($nic, 1, 4); + self::assertGreaterThanOrEqual(1900, $year); + self::assertLessThanOrEqual((int) date('Y'), $year); + + $midPart = substr($nic, 5, 5); + self::assertMatchesRegularExpression('/^\d{5}$/', $midPart); + + $lastPart = substr($nic, 10, 1); + self::assertMatchesRegularExpression('/^\d$/', $lastPart); + } + } + + protected function getProviders(): iterable + { + yield new Person($this->faker); + } +} diff --git a/test/Provider/en_SL/PhoneNumberTest.php b/test/Provider/en_SL/PhoneNumberTest.php new file mode 100644 index 0000000000..67bace8273 --- /dev/null +++ b/test/Provider/en_SL/PhoneNumberTest.php @@ -0,0 +1,39 @@ +faker->mobileNumber; + $digits = array_values(array_filter(str_split($number), 'ctype_digit')); + + // Check country code prefix for international format + if (strpos($number, '+94') === 0) { + $digits = array_slice($digits, 2); + } + // 10 digits total + self::assertCount(10, $digits); + + // Check area codes (071-079) + $areaCode = $digits[0] . $digits[1]; + + self::assertContains($areaCode, ['07', '07', '07', '07', '07', '07', '07', '07']); + + // Test format + self::assertMatchesRegularExpression('/^(\+94)?([ -]*\(07\d\)[ -]*\d{3}[-]?\d{4})$/', $number); + } + } + + protected function getProviders(): iterable + { + yield new PhoneNumber($this->faker); + } +}