diff --git a/src/Provider/zh_TW/Address.php b/src/Provider/zh_TW/Address.php index a7ad6caa10..321bc88bd7 100644 --- a/src/Provider/zh_TW/Address.php +++ b/src/Provider/zh_TW/Address.php @@ -187,7 +187,7 @@ class Address extends \Faker\Provider\Address '峨眉鄉', '尖石鄉', '五峰鄉', ], '苗栗縣' => [ - '苗栗市', '苑裡鎮', '通霄鎮', '竹南鎮', '頭份鎮', + '苗栗市', '苑裡鎮', '通霄鎮', '竹南鎮', '頭份市', '後龍鎮', '卓蘭鎮', '大湖鄉', '公館鄉', '銅鑼鄉', '南庄鄉', '頭屋鄉', '三義鄉', '西湖鄉', '造橋鄉', '三灣鄉', '獅潭鄉', '泰安鄉', @@ -202,7 +202,7 @@ class Address extends \Faker\Provider\Address ], '彰化縣' => [ '彰化市', '鹿港鎮', '和美鎮', '線西鄉', '伸港鄉', - '福興鄉', '秀水鄉', '花壇鄉', '芬園鄉', '員林鎮', + '福興鄉', '秀水鄉', '花壇鄉', '芬園鄉', '員林市', '溪湖鎮', '田中鎮', '大村鄉', '埔鹽鄉', '埔心鄉', '永靖鄉', '社頭鄉', '二水鄉', '北斗鎮', '二林鎮', '田尾鄉', '埤頭鄉', '芳苑鄉', '大城鄉', '竹塘鄉', @@ -232,7 +232,7 @@ class Address extends \Faker\Provider\Address '將軍區', '北門區', '新化區', '善化區', '新市區', '安定區', '山上區', '玉井區', '楠西區', '南化區', '左鎮區', '仁德區', '歸仁區', '關廟區', '龍崎區', - '永康區', '東區', '南區', '西區', '北區', '中區', + '永康區', '東區', '南區', '中西區', '北區', '安南區', '安平區', ], '高雄市' => [ @@ -241,7 +241,7 @@ class Address extends \Faker\Provider\Address '田寮區', '阿蓮區', '路竹區', '湖內區', '茄萣區', '永安區', '彌陀區', '梓官區', '旗山區', '美濃區', '六龜區', '甲仙區', '杉林區', '內門區', '茂林區', - '桃源區', '三民區', '鹽埕區', '鼓山區', '左營區', + '桃源區', '那瑪夏區', '鹽埕區', '鼓山區', '左營區', '楠梓區', '三民區', '新興區', '前金區', '苓雅區', '前鎮區', '旗津區', '小港區', ], diff --git a/test/Provider/zh_TW/AddressTest.php b/test/Provider/zh_TW/AddressTest.php new file mode 100644 index 0000000000..968d27d3d3 --- /dev/null +++ b/test/Provider/zh_TW/AddressTest.php @@ -0,0 +1,59 @@ +getCityData(); + + self::assertContains('頭份市', $city['苗栗縣']); + self::assertNotContains('頭份鎮', $city['苗栗縣']); + + self::assertContains('員林市', $city['彰化縣']); + self::assertNotContains('員林鎮', $city['彰化縣']); + + self::assertContains('中西區', $city['臺南市']); + self::assertNotContains('中區', $city['臺南市']); + self::assertNotContains('西區', $city['臺南市']); + + self::assertContains('那瑪夏區', $city['高雄市']); + } + + public function testAdministrativeDistrictNamesAreUniqueWithinEachCounty(): void + { + foreach ($this->getCityData() as $county => $districts) { + self::assertSame( + $districts, + array_values(array_unique($districts)), + sprintf('%s contains duplicate administrative districts.', $county), + ); + } + } + + /** + * @return array> + */ + private function getCityData(): array + { + $reflection = new \ReflectionClass(Address::class); + $property = $reflection->getProperty('city'); + $property->setAccessible(true); + + return $property->getValue(); + } + + protected function getProviders(): iterable + { + yield new Address($this->faker); + } +}