Файл: symfony-2.7/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractDataProviderTest.php
Строк: 335
<?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 SymfonyComponentIntlTestsDataProvider;
use SymfonyComponentIntlDataBundleReaderBundleEntryReader;
use SymfonyComponentIntlDataBundleReaderBundleReaderInterface;
use SymfonyComponentIntlLocale;
/**
* @author Bernhard Schussek <bschussek@gmail.com>
*/
abstract class AbstractDataProviderTest extends PHPUnit_Framework_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();
}