123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Intl\Tests\Data\Provider;
- use PHPUnit\Framework\TestCase;
- use Symfony\Component\Intl\Data\Bundle\Reader\BundleEntryReader;
- use Symfony\Component\Intl\Data\Bundle\Reader\BundleReaderInterface;
- use Symfony\Component\Intl\Locale;
- /**
- * @author Bernhard Schussek <bschussek@gmail.com>
- */
- abstract class AbstractDataProviderTest extends TestCase
- {
- // Include the locales statically so that the data providers are decoupled
- // from the Intl class. Otherwise tests will fail if the intl extension is
- // not loaded, because it is NOT possible to skip the execution of data
- // providers.
- private static $locales = array(
- 'af',
- 'af_NA',
- 'af_ZA',
- 'agq',
- 'agq_CM',
- 'ak',
- 'ak_GH',
- 'am',
- 'am_ET',
- 'ar',
- 'ar_001',
- 'ar_AE',
- 'ar_BH',
- 'ar_DJ',
- 'ar_DZ',
- 'ar_EG',
- 'ar_EH',
- 'ar_ER',
- 'ar_IL',
- 'ar_IQ',
- 'ar_JO',
- 'ar_KM',
- 'ar_KW',
- 'ar_LB',
- 'ar_LY',
- 'ar_MA',
- 'ar_MR',
- 'ar_OM',
- 'ar_PS',
- 'ar_QA',
- 'ar_SA',
- 'ar_SD',
- 'ar_SO',
- 'ar_SS',
- 'ar_SY',
- 'ar_TD',
- 'ar_TN',
- 'ar_YE',
- 'as',
- 'as_IN',
- 'asa',
- 'asa_TZ',
- 'az',
- 'az_AZ',
- 'az_Cyrl',
- 'az_Cyrl_AZ',
- 'az_Latn',
- 'az_Latn_AZ',
- 'bas',
- 'bas_CM',
- 'be',
- 'be_BY',
- 'bem',
- 'bem_ZM',
- 'bez',
- 'bez_TZ',
- 'bg',
- 'bg_BG',
- 'bm',
- 'bm_ML',
- 'bn',
- 'bn_BD',
- 'bn_IN',
- 'bo',
- 'bo_CN',
- 'bo_IN',
- 'br',
- 'br_FR',
- 'brx',
- 'brx_IN',
- 'bs',
- 'bs_BA',
- 'bs_Cyrl',
- 'bs_Cyrl_BA',
- 'bs_Latn',
- 'bs_Latn_BA',
- 'ca',
- 'ca_AD',
- 'ca_ES',
- 'ca_FR',
- 'ca_IT',
- 'cgg',
- 'cgg_UG',
- 'chr',
- 'chr_US',
- 'cs',
- 'cs_CZ',
- 'cy',
- 'cy_GB',
- 'da',
- 'da_DK',
- 'da_GL',
- 'dav',
- 'dav_KE',
- 'de',
- 'de_AT',
- 'de_BE',
- 'de_CH',
- 'de_DE',
- 'de_LI',
- 'de_LU',
- 'dje',
- 'dje_NE',
- 'dua',
- 'dua_CM',
- 'dyo',
- 'dyo_SN',
- 'dz',
- 'dz_BT',
- 'ebu',
- 'ebu_KE',
- 'ee',
- 'ee_GH',
- 'ee_TG',
- 'el',
- 'el_CY',
- 'el_GR',
- 'en',
- 'en_001',
- 'en_150',
- 'en_AG',
- 'en_AI',
- 'en_AS',
- 'en_AU',
- 'en_BB',
- 'en_BE',
- 'en_BM',
- 'en_BS',
- 'en_BW',
- 'en_BZ',
- 'en_CA',
- 'en_CC',
- 'en_CK',
- 'en_CM',
- 'en_CX',
- 'en_DG',
- 'en_DM',
- 'en_ER',
- 'en_FJ',
- 'en_FK',
- 'en_FM',
- 'en_GB',
- 'en_GD',
- 'en_GG',
- 'en_GH',
- 'en_GI',
- 'en_GM',
- 'en_GU',
- 'en_GY',
- 'en_HK',
- 'en_IE',
- 'en_IM',
- 'en_IN',
- 'en_IO',
- 'en_JE',
- 'en_JM',
- 'en_KE',
- 'en_KI',
- 'en_KN',
- 'en_KY',
- 'en_LC',
- 'en_LR',
- 'en_LS',
- 'en_MG',
- 'en_MH',
- 'en_MO',
- 'en_MP',
- 'en_MS',
- 'en_MT',
- 'en_MU',
- 'en_MW',
- 'en_NA',
- 'en_NF',
- 'en_NG',
- 'en_NH',
- 'en_NR',
- 'en_NU',
- 'en_NZ',
- 'en_PG',
- 'en_PH',
- 'en_PK',
- 'en_PN',
- 'en_PR',
- 'en_PW',
- 'en_RH',
- 'en_RW',
- 'en_SB',
- 'en_SC',
- 'en_SD',
- 'en_SG',
- 'en_SH',
- 'en_SL',
- 'en_SS',
- 'en_SX',
- 'en_SZ',
- 'en_TC',
- 'en_TK',
- 'en_TO',
- 'en_TT',
- 'en_TV',
- 'en_TZ',
- 'en_UG',
- 'en_UM',
- 'en_US',
- 'en_US_POSIX',
- 'en_VC',
- 'en_VG',
- 'en_VI',
- 'en_VU',
- 'en_WS',
- 'en_ZA',
- 'en_ZM',
- 'en_ZW',
- 'eo',
- 'es',
- 'es_419',
- 'es_AR',
- 'es_BO',
- 'es_CL',
- 'es_CO',
- 'es_CR',
- 'es_CU',
- 'es_DO',
- 'es_EA',
- 'es_EC',
- 'es_ES',
- 'es_GQ',
- 'es_GT',
- 'es_HN',
- 'es_IC',
- 'es_MX',
- 'es_NI',
- 'es_PA',
- 'es_PE',
- 'es_PH',
- 'es_PR',
- 'es_PY',
- 'es_SV',
- 'es_US',
- 'es_UY',
- 'es_VE',
- 'et',
- 'et_EE',
- 'eu',
- 'eu_ES',
- 'ewo',
- 'ewo_CM',
- 'fa',
- 'fa_AF',
- 'fa_IR',
- 'ff',
- 'ff_SN',
- 'fi',
- 'fi_FI',
- 'fil',
- 'fil_PH',
- 'fo',
- 'fo_FO',
- 'fr',
- 'fr_BE',
- 'fr_BF',
- 'fr_BI',
- 'fr_BJ',
- 'fr_BL',
- 'fr_CA',
- 'fr_CD',
- 'fr_CF',
- 'fr_CG',
- 'fr_CH',
- 'fr_CI',
- 'fr_CM',
- 'fr_DJ',
- 'fr_DZ',
- 'fr_FR',
- 'fr_GA',
- 'fr_GF',
- 'fr_GN',
- 'fr_GP',
- 'fr_GQ',
- 'fr_HT',
- 'fr_KM',
- 'fr_LU',
- 'fr_MA',
- 'fr_MC',
- 'fr_MF',
- 'fr_MG',
- 'fr_ML',
- 'fr_MQ',
- 'fr_MR',
- 'fr_MU',
- 'fr_NC',
- 'fr_NE',
- 'fr_PF',
- 'fr_PM',
- 'fr_RE',
- 'fr_RW',
- 'fr_SC',
- 'fr_SN',
- 'fr_SY',
- 'fr_TD',
- 'fr_TG',
- 'fr_TN',
- 'fr_VU',
- 'fr_WF',
- 'fr_YT',
- 'ga',
- 'ga_IE',
- 'gl',
- 'gl_ES',
- 'gsw',
- 'gsw_CH',
- 'gsw_LI',
- 'gu',
- 'gu_IN',
- 'guz',
- 'guz_KE',
- 'gv',
- 'gv_IM',
- 'ha',
- 'ha_GH',
- 'ha_Latn',
- 'ha_Latn_GH',
- 'ha_Latn_NE',
- 'ha_Latn_NG',
- 'ha_NE',
- 'ha_NG',
- 'haw',
- 'haw_US',
- 'he',
- 'he_IL',
- 'hi',
- 'hi_IN',
- 'hr',
- 'hr_BA',
- 'hr_HR',
- 'hu',
- 'hu_HU',
- 'hy',
- 'hy_AM',
- 'id',
- 'id_ID',
- 'ig',
- 'ig_NG',
- 'ii',
- 'ii_CN',
- 'in',
- 'in_ID',
- 'is',
- 'is_IS',
- 'it',
- 'it_CH',
- 'it_IT',
- 'it_SM',
- 'iw',
- 'iw_IL',
- 'ja',
- 'ja_JP',
- 'ja_JP_TRADITIONAL',
- 'jgo',
- 'jgo_CM',
- 'jmc',
- 'jmc_TZ',
- 'ka',
- 'ka_GE',
- 'kab',
- 'kab_DZ',
- 'kam',
- 'kam_KE',
- 'kde',
- 'kde_TZ',
- 'kea',
- 'kea_CV',
- 'khq',
- 'khq_ML',
- 'ki',
- 'ki_KE',
- 'kk',
- 'kk_Cyrl',
- 'kk_Cyrl_KZ',
- 'kk_KZ',
- 'kkj',
- 'kkj_CM',
- 'kl',
- 'kl_GL',
- 'kln',
- 'kln_KE',
- 'km',
- 'km_KH',
- 'kn',
- 'kn_IN',
- 'ko',
- 'ko_KP',
- 'ko_KR',
- 'kok',
- 'kok_IN',
- 'ks',
- 'ks_Arab',
- 'ks_Arab_IN',
- 'ks_IN',
- 'ksb',
- 'ksb_TZ',
- 'ksf',
- 'ksf_CM',
- 'kw',
- 'kw_GB',
- 'ky',
- 'ky_Cyrl',
- 'ky_Cyrl_KG',
- 'ky_KG',
- 'lag',
- 'lag_TZ',
- 'lg',
- 'lg_UG',
- 'lkt',
- 'lkt_US',
- 'ln',
- 'ln_AO',
- 'ln_CD',
- 'ln_CF',
- 'ln_CG',
- 'lo',
- 'lo_LA',
- 'lt',
- 'lt_LT',
- 'lu',
- 'lu_CD',
- 'luo',
- 'luo_KE',
- 'luy',
- 'luy_KE',
- 'lv',
- 'lv_LV',
- 'mas',
- 'mas_KE',
- 'mas_TZ',
- 'mer',
- 'mer_KE',
- 'mfe',
- 'mfe_MU',
- 'mg',
- 'mg_MG',
- 'mgh',
- 'mgh_MZ',
- 'mgo',
- 'mgo_CM',
- 'mk',
- 'mk_MK',
- 'ml',
- 'ml_IN',
- 'mn',
- 'mn_Cyrl',
- 'mn_Cyrl_MN',
- 'mn_MN',
- 'mo',
- 'mr',
- 'mr_IN',
- 'ms',
- 'ms_BN',
- 'ms_Latn',
- 'ms_Latn_BN',
- 'ms_Latn_MY',
- 'ms_Latn_SG',
- 'ms_MY',
- 'ms_SG',
- 'mt',
- 'mt_MT',
- 'mua',
- 'mua_CM',
- 'my',
- 'my_MM',
- 'naq',
- 'naq_NA',
- 'nb',
- 'nb_NO',
- 'nb_SJ',
- 'nd',
- 'nd_ZW',
- 'ne',
- 'ne_IN',
- 'ne_NP',
- 'nl',
- 'nl_AW',
- 'nl_BE',
- 'nl_BQ',
- 'nl_CW',
- 'nl_NL',
- 'nl_SR',
- 'nl_SX',
- 'nmg',
- 'nmg_CM',
- 'nn',
- 'nn_NO',
- 'nnh',
- 'nnh_CM',
- 'no',
- 'no_NO',
- 'no_NO_NY',
- 'nus',
- 'nus_SD',
- 'nyn',
- 'nyn_UG',
- 'om',
- 'om_ET',
- 'om_KE',
- 'or',
- 'or_IN',
- 'pa',
- 'pa_Arab',
- 'pa_Arab_PK',
- 'pa_Guru',
- 'pa_Guru_IN',
- 'pa_IN',
- 'pa_PK',
- 'pl',
- 'pl_PL',
- 'ps',
- 'ps_AF',
- 'pt',
- 'pt_AO',
- 'pt_BR',
- 'pt_CV',
- 'pt_GW',
- 'pt_MO',
- 'pt_MZ',
- 'pt_PT',
- 'pt_ST',
- 'pt_TL',
- 'rm',
- 'rm_CH',
- 'rn',
- 'rn_BI',
- 'ro',
- 'ro_MD',
- 'ro_RO',
- 'rof',
- 'rof_TZ',
- 'ru',
- 'ru_BY',
- 'ru_KG',
- 'ru_KZ',
- 'ru_MD',
- 'ru_RU',
- 'ru_UA',
- 'rw',
- 'rw_RW',
- 'rwk',
- 'rwk_TZ',
- 'saq',
- 'saq_KE',
- 'sbp',
- 'sbp_TZ',
- 'seh',
- 'seh_MZ',
- 'ses',
- 'ses_ML',
- 'sg',
- 'sg_CF',
- 'sh',
- 'sh_BA',
- 'sh_CS',
- 'sh_YU',
- 'shi',
- 'shi_Latn',
- 'shi_Latn_MA',
- 'shi_MA',
- 'shi_Tfng',
- 'shi_Tfng_MA',
- 'si',
- 'si_LK',
- 'sk',
- 'sk_SK',
- 'sl',
- 'sl_SI',
- 'sn',
- 'sn_ZW',
- 'so',
- 'so_DJ',
- 'so_ET',
- 'so_KE',
- 'so_SO',
- 'sq',
- 'sq_AL',
- 'sq_MK',
- 'sq_XK',
- 'sr',
- 'sr_BA',
- 'sr_CS',
- 'sr_Cyrl',
- 'sr_Cyrl_BA',
- 'sr_Cyrl_CS',
- 'sr_Cyrl_ME',
- 'sr_Cyrl_RS',
- 'sr_Cyrl_XK',
- 'sr_Cyrl_YU',
- 'sr_Latn',
- 'sr_Latn_BA',
- 'sr_Latn_CS',
- 'sr_Latn_ME',
- 'sr_Latn_RS',
- 'sr_Latn_XK',
- 'sr_Latn_YU',
- 'sr_ME',
- 'sr_RS',
- 'sr_XK',
- 'sr_YU',
- 'sv',
- 'sv_AX',
- 'sv_FI',
- 'sv_SE',
- 'sw',
- 'sw_KE',
- 'sw_TZ',
- 'sw_UG',
- 'swc',
- 'swc_CD',
- 'ta',
- 'ta_IN',
- 'ta_LK',
- 'ta_MY',
- 'ta_SG',
- 'te',
- 'te_IN',
- 'teo',
- 'teo_KE',
- 'teo_UG',
- 'th',
- 'th_TH',
- 'th_TH_TRADITIONAL',
- 'ti',
- 'ti_ER',
- 'ti_ET',
- 'tl',
- 'tl_PH',
- 'to',
- 'to_TO',
- 'tr',
- 'tr_CY',
- 'tr_TR',
- 'twq',
- 'twq_NE',
- 'tzm',
- 'tzm_Latn',
- 'tzm_Latn_MA',
- 'tzm_MA',
- 'ug',
- 'ug_Arab',
- 'ug_Arab_CN',
- 'ug_CN',
- 'uk',
- 'uk_UA',
- 'ur',
- 'ur_IN',
- 'ur_PK',
- 'uz',
- 'uz_AF',
- 'uz_Arab',
- 'uz_Arab_AF',
- 'uz_Cyrl',
- 'uz_Cyrl_UZ',
- 'uz_Latn',
- 'uz_Latn_UZ',
- 'uz_UZ',
- 'vai',
- 'vai_LR',
- 'vai_Latn',
- 'vai_Latn_LR',
- 'vai_Vaii',
- 'vai_Vaii_LR',
- 'vi',
- 'vi_VN',
- 'vun',
- 'vun_TZ',
- 'xog',
- 'xog_UG',
- 'yav',
- 'yav_CM',
- 'yo',
- 'yo_BJ',
- 'yo_NG',
- 'zgh',
- 'zgh_MA',
- 'zh',
- 'zh_CN',
- 'zh_HK',
- 'zh_Hans',
- 'zh_Hans_CN',
- 'zh_Hans_HK',
- 'zh_Hans_MO',
- 'zh_Hans_SG',
- 'zh_Hant',
- 'zh_Hant_HK',
- 'zh_Hant_MO',
- 'zh_Hant_TW',
- 'zh_MO',
- 'zh_SG',
- 'zh_TW',
- 'zu',
- 'zu_ZA',
- );
- private static $localeAliases = array(
- 'az_AZ' => 'az_Latn_AZ',
- 'bs_BA' => 'bs_Latn_BA',
- 'en_NH' => 'en_VU',
- 'en_RH' => 'en_ZW',
- 'ha_GH' => 'ha_Latn_GH',
- 'ha_NE' => 'ha_Latn_NE',
- 'ha_NG' => 'ha_Latn_NG',
- 'in' => 'id',
- 'in_ID' => 'id_ID',
- 'iw' => 'he',
- 'iw_IL' => 'he_IL',
- 'kk_KZ' => 'kk_Cyrl_KZ',
- 'ks_IN' => 'ks_Arab_IN',
- 'ky_KG' => 'ky_Cyrl_KG',
- 'mn_MN' => 'mn_Cyrl_MN',
- 'mo' => 'ro_MD',
- 'ms_BN' => 'ms_Latn_BN',
- 'ms_MY' => 'ms_Latn_MY',
- 'ms_SG' => 'ms_Latn_SG',
- 'no' => 'nb',
- 'no_NO' => 'nb_NO',
- 'no_NO_NY' => 'nn_NO',
- 'pa_IN' => 'pa_Guru_IN',
- 'pa_PK' => 'pa_Arab_PK',
- 'sh' => 'sr_Latn',
- 'sh_BA' => 'sr_Latn_BA',
- 'sh_CS' => 'sr_Latn_RS',
- 'sh_YU' => 'sr_Latn_RS',
- 'shi_MA' => 'shi_Tfng_MA',
- 'sr_BA' => 'sr_Cyrl_BA',
- 'sr_CS' => 'sr_Cyrl_RS',
- 'sr_Cyrl_CS' => 'sr_Cyrl_RS',
- 'sr_Cyrl_YU' => 'sr_Cyrl_RS',
- 'sr_Latn_CS' => 'sr_Latn_RS',
- 'sr_Latn_YU' => 'sr_Latn_RS',
- 'sr_ME' => 'sr_Latn_ME',
- 'sr_RS' => 'sr_Cyrl_RS',
- 'sr_XK' => 'sr_Cyrl_XK',
- 'sr_YU' => 'sr_Cyrl_RS',
- 'tl' => 'fil',
- 'tl_PH' => 'fil_PH',
- 'tzm_MA' => 'tzm_Latn_MA',
- 'ug_CN' => 'ug_Arab_CN',
- 'uz_AF' => 'uz_Arab_AF',
- 'uz_UZ' => 'uz_Latn_UZ',
- 'vai_LR' => 'vai_Vaii_LR',
- 'zh_CN' => 'zh_Hans_CN',
- 'zh_HK' => 'zh_Hant_HK',
- 'zh_MO' => 'zh_Hant_MO',
- 'zh_SG' => 'zh_Hans_SG',
- 'zh_TW' => 'zh_Hant_TW',
- );
- private static $rootLocales;
- protected function setUp()
- {
- Locale::setDefault('en');
- Locale::setDefaultFallback('en');
- }
- public function provideLocales()
- {
- return array_map(
- function ($locale) { return array($locale); },
- $this->getLocales()
- );
- }
- public function provideLocaleAliases()
- {
- return array_map(
- function ($alias, $ofLocale) { return array($alias, $ofLocale); },
- array_keys($this->getLocaleAliases()),
- $this->getLocaleAliases()
- );
- }
- public function provideRootLocales()
- {
- return array_map(
- function ($locale) { return array($locale); },
- $this->getRootLocales()
- );
- }
- protected function getLocales()
- {
- return self::$locales;
- }
- protected function getLocaleAliases()
- {
- return self::$localeAliases;
- }
- protected function getRootLocales()
- {
- if (null === self::$rootLocales) {
- self::$rootLocales = array_filter(static::getLocales(), function ($locale) {
- // no locales for which fallback is possible (e.g "en_GB")
- return false === strpos($locale, '_');
- });
- }
- return self::$rootLocales;
- }
- /**
- * @return BundleEntryReader
- */
- protected function createEntryReader()
- {
- $entryReader = new BundleEntryReader($this->createBundleReader());
- $entryReader->setLocaleAliases($this->getLocaleAliases());
- return $entryReader;
- }
- /**
- * @return BundleReaderInterface
- */
- abstract protected function createBundleReader();
- }
|