summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Zhineng <[email protected]>2025-05-14 13:27:59 +0800
committerLi Zhineng <[email protected]>2025-05-14 13:27:59 +0800
commit665c8bc91124aff065b37e7767acf35e538198f9 (patch)
tree6a2750eb352c5beccc7a6310c1d6369649a23016
parentc09fdd361c8ca9fe75aaba744c85c82f21b9ac68 (diff)
downloadvehicle-license-china-665c8bc91124aff065b37e7767acf35e538198f9.tar.gz
vehicle-license-china-665c8bc91124aff065b37e7767acf35e538198f9.zip
registration number components
-rw-r--r--src/RegistrationNumber.php7
-rw-r--r--tests/RegistrationNumberTest.php90
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());