diff options
| -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()); |
