diff options
| author | Li Zhineng <[email protected]> | 2025-05-14 13:27:59 +0800 |
|---|---|---|
| committer | Li Zhineng <[email protected]> | 2025-05-14 13:27:59 +0800 |
| commit | 665c8bc91124aff065b37e7767acf35e538198f9 (patch) | |
| tree | 6a2750eb352c5beccc7a6310c1d6369649a23016 | |
| parent | c09fdd361c8ca9fe75aaba744c85c82f21b9ac68 (diff) | |
| download | vehicle-license-china-665c8bc91124aff065b37e7767acf35e538198f9.tar.gz vehicle-license-china-665c8bc91124aff065b37e7767acf35e538198f9.zip | |
registration number components
| -rw-r--r-- | src/RegistrationNumber.php | 7 | ||||
| -rw-r--r-- | tests/RegistrationNumberTest.php | 90 |
2 files changed, 97 insertions, 0 deletions
diff --git a/src/RegistrationNumber.php b/src/RegistrationNumber.php index abc1364..678633d 100644 --- a/src/RegistrationNumber.php +++ b/src/RegistrationNumber.php @@ -550,6 +550,9 @@ final readonly class RegistrationNumber $this->agencyNumber = $agency; $this->sequence = $sequence; $this->suffix = $suffix; + + $this->region = ''; + $this->authority = ''; } private function parseConsulateRegistrationNumber(string $registrationNumber): void @@ -560,6 +563,8 @@ final readonly class RegistrationNumber $this->agencyNumber = $agency; $this->sequence = $sequence; $this->suffix = $suffix; + + $this->authority = ''; } private function parseRegistrationNumber(string $registrationNumber): void @@ -570,6 +575,8 @@ final readonly class RegistrationNumber $this->authority = $authority; $this->sequence = $sequence; $this->suffix = $suffix; + + $this->agencyNumber = ''; } public function isEmbassy(): bool diff --git a/tests/RegistrationNumberTest.php b/tests/RegistrationNumberTest.php index 9a599b6..7829027 100644 --- a/tests/RegistrationNumberTest.php +++ b/tests/RegistrationNumberTest.php @@ -38,6 +38,96 @@ final class RegistrationNumberTest extends TestCase RegistrationNumber::make($registrationNumber); } + public function test_embassy_vehicle_registration_number(): void + { + $number = RegistrationNumber::make('224578使'); + $this->assertSame('224', $number->agencyNumber); + $this->assertSame('578', $number->sequence); + $this->assertSame('使', $number->suffix); + $this->assertSame('', $number->region); + $this->assertSame('', $number->authority); + } + + public function test_consulate_vehicle_registration_number(): void + { + $number = RegistrationNumber::make('沪22478领'); + $this->assertSame('沪', $number->region); + $this->assertSame('224', $number->agencyNumber); + $this->assertSame('78', $number->sequence); + $this->assertSame('领', $number->suffix); + $this->assertSame('', $number->authority); + } + + public function test_police_vehicle_registration_number(): void + { + $number = RegistrationNumber::make('京A0006警'); + $this->assertSame('京', $number->region); + $this->assertSame('A', $number->authority); + $this->assertSame('0006', $number->sequence); + $this->assertSame('警', $number->suffix); + $this->assertSame('', $number->agencyNumber); + } + + public function test_coach_vehicle_registration_number(): void + { + $number = RegistrationNumber::make('粤E12345学'); + $this->assertSame('粤', $number->region); + $this->assertSame('E', $number->authority); + $this->assertSame('12345', $number->sequence); + $this->assertSame('学', $number->suffix); + $this->assertSame('', $number->agencyNumber); + } + + public function test_trailer_registration_number(): void + { + $number = RegistrationNumber::make('粤E12345挂'); + $this->assertSame('粤', $number->region); + $this->assertSame('E', $number->authority); + $this->assertSame('12345', $number->sequence); + $this->assertSame('挂', $number->suffix); + $this->assertSame('', $number->agencyNumber); + } + + public function test_hong_kong_vehicle_registration_number(): void + { + $number = RegistrationNumber::make('粤Z1234港'); + $this->assertSame('粤', $number->region); + $this->assertSame('Z', $number->authority); + $this->assertSame('1234', $number->sequence); + $this->assertSame('港', $number->suffix); + $this->assertSame('', $number->agencyNumber); + } + + public function test_macau_vehicle_registration_number(): void + { + $number = RegistrationNumber::make('粤Z1234澳'); + $this->assertSame('粤', $number->region); + $this->assertSame('Z', $number->authority); + $this->assertSame('1234', $number->sequence); + $this->assertSame('澳', $number->suffix); + $this->assertSame('', $number->agencyNumber); + } + + public function test_test_vehicle_registration_number(): void + { + $number = RegistrationNumber::make('粤E12345试'); + $this->assertSame('粤', $number->region); + $this->assertSame('E', $number->authority); + $this->assertSame('12345', $number->sequence); + $this->assertSame('试', $number->suffix); + $this->assertSame('', $number->agencyNumber); + } + + public function test_special_vehicle_registration_number(): void + { + $number = RegistrationNumber::make('粤E12345超'); + $this->assertSame('粤', $number->region); + $this->assertSame('E', $number->authority); + $this->assertSame('12345', $number->sequence); + $this->assertSame('超', $number->suffix); + $this->assertSame('', $number->agencyNumber); + } + public function test_is_embassy_deteremins_if_registration_number_is_used_by_embassies(): void { $this->assertTrue(RegistrationNumber::make('224578使')->isEmbassy()); |
