Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/Provider/zh_TW/Address.php
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ class Address extends \Faker\Provider\Address
'峨眉鄉', '尖石鄉', '五峰鄉',
],
'苗栗縣' => [
'苗栗市', '苑裡鎮', '通霄鎮', '竹南鎮', '頭份鎮',
'苗栗市', '苑裡鎮', '通霄鎮', '竹南鎮', '頭份市',
'後龍鎮', '卓蘭鎮', '大湖鄉', '公館鄉', '銅鑼鄉',
'南庄鄉', '頭屋鄉', '三義鄉', '西湖鄉', '造橋鄉',
'三灣鄉', '獅潭鄉', '泰安鄉',
Expand All @@ -202,7 +202,7 @@ class Address extends \Faker\Provider\Address
],
'彰化縣' => [
'彰化市', '鹿港鎮', '和美鎮', '線西鄉', '伸港鄉',
'福興鄉', '秀水鄉', '花壇鄉', '芬園鄉', '員林鎮',
'福興鄉', '秀水鄉', '花壇鄉', '芬園鄉', '員林市',
'溪湖鎮', '田中鎮', '大村鄉', '埔鹽鄉', '埔心鄉',
'永靖鄉', '社頭鄉', '二水鄉', '北斗鎮', '二林鎮',
'田尾鄉', '埤頭鄉', '芳苑鄉', '大城鄉', '竹塘鄉',
Expand Down Expand Up @@ -232,7 +232,7 @@ class Address extends \Faker\Provider\Address
'將軍區', '北門區', '新化區', '善化區', '新市區',
'安定區', '山上區', '玉井區', '楠西區', '南化區',
'左鎮區', '仁德區', '歸仁區', '關廟區', '龍崎區',
'永康區', '東區', '南區', '西區', '北區', '中區',
'永康區', '東區', '南區', '中西區', '北區',
'安南區', '安平區',
],
'高雄市' => [
Expand All @@ -241,7 +241,7 @@ class Address extends \Faker\Provider\Address
'田寮區', '阿蓮區', '路竹區', '湖內區', '茄萣區',
'永安區', '彌陀區', '梓官區', '旗山區', '美濃區',
'六龜區', '甲仙區', '杉林區', '內門區', '茂林區',
'桃源區', '三民區', '鹽埕區', '鼓山區', '左營區',
'桃源區', '那瑪夏區', '鹽埕區', '鼓山區', '左營區',
'楠梓區', '三民區', '新興區', '前金區', '苓雅區',
'前鎮區', '旗津區', '小港區',
],
Expand Down
59 changes: 59 additions & 0 deletions test/Provider/zh_TW/AddressTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

declare(strict_types=1);

namespace Faker\Test\Provider\zh_TW;

use Faker\Provider\zh_TW\Address;
use Faker\Test\TestCase;

/**
* @group legacy
*/
final class AddressTest extends TestCase
{
public function testAdministrativeDistrictNamesAreCurrent(): void
{
$city = $this->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<string, list<string>>
*/
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);
}
}
Loading