From 12ebfe678ed2554fb5902c60d99a53414bec0ad1 Mon Sep 17 00:00:00 2001 From: Li Zhineng Date: Mon, 12 May 2025 19:01:57 +0800 Subject: first commit --- tests/RegistrationNumberTest.php | 141 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 tests/RegistrationNumberTest.php (limited to 'tests/RegistrationNumberTest.php') diff --git a/tests/RegistrationNumberTest.php b/tests/RegistrationNumberTest.php new file mode 100644 index 0000000..dfb3dd3 --- /dev/null +++ b/tests/RegistrationNumberTest.php @@ -0,0 +1,141 @@ +assertSame($registrationNumber, $instance->registrationNumber); + } + + #[DataProvider('provide_invalid_registration_numbers')] + #[DataProvider('provide_invalid_clean_energy_registration_numbers')] + public function test_invalid_registration_number(string $registrationNumber): void + { + $this->expectException(RegistrationNumberException::class); + $this->expectExceptionMessage(sprintf('The registration number "%s" is invalid.', $registrationNumber)); + RegistrationNumber::make($registrationNumber); + } + + /** + * @return string[] + */ + public static function provide_valid_registration_numbers(): array + { + return [ + ['粤E1234'], + ['粤EA123'], + ['粤E1A23'], + ['粤E12A3'], + ['粤E123A'], + ['粤EAB12'], + ['粤E12AB'], + ['粤E1AB2'], + ['粤E1A2B'], + ['粤EA12B'], + ['粤EA1B2'], + ['粤E12345'], + ['粤EA1234'], + ['粤E1A234'], + ['粤E12A34'], + ['粤E123A4'], + ['粤E1234A'], + + // Authority code "O" (the 2nd character) is for internal + ['粤O12345'], + + // Authority code "Z" (the 2nd character) is for internal in Guangdong province + ['粤Z12345'], + + // Authority code "W" (the 2nd character) is for internal in Shandong province + ['鲁W12345'], + ]; + } + + /** + * @return string[] + */ + public static function provide_valid_clean_energy_registration_numbers(): array + { + return [ + ['粤ED12345'], + ['粤EDA1234'], + + // Authority code "O" (the 2nd character) is for internal + ['粤OD12345'], + + // Authority code "Z" (the 2nd character) is for internal in Guangdong province + ['粤ZD12345'], + + // Authority code "W" (the 2nd character) is for internal in Shandong province + ['鲁WD12345'], + ]; + } + + /** + * @return string[] + */ + public static function provide_invalid_registration_numbers(): array + { + return [ + ['假E12345'], + ['粤I12345'], + ['粤EABC1'], + ['粤E123+'], + ['粤E1234+'], + ['粤EABC12'], + + // Sequence could not contain "O" or "I" + ['粤EO123'], + ['粤E1O23'], + ['粤E12O3'], + ['粤E123O'], + ['粤EI123'], + ['粤E1I23'], + ['粤E12I3'], + ['粤E123I'], + ['粤EO1234'], + ['粤E1O234'], + ['粤E12O34'], + ['粤E123O4'], + ['粤E1234O'], + ['粤EI1234'], + ['粤E1I234'], + ['粤E12I34'], + ['粤E123I4'], + ['粤E1234I'], + ]; + } + + /** + * @return string[] + */ + public static function provide_invalid_clean_energy_registration_numbers(): array + { + return [ + ['粤ED1A234'], + ['粤ED12A34'], + ['粤ED123A4'], + ['粤ED1234A'], + ['粤EZ12345'], + ['粤ED1234+'], + + // Sequence could not contain "O" or "I" + ['粤EDO1234'], + ['粤EDI1234'], + ]; + } +} -- cgit v1.2.3