"Fossies" - the Fresh Open Source Software Archive

Member "Symfony/vendor/symfony/symfony/src/Symfony/Component/Intl/Tests/Data/Provider/AbstractDataProviderTest.php" (30 Mar 2020, 14456 Bytes) of package /linux/www/Symfony_Standard_Vendors_3.4.39.tgz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) PHP source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 <?php
    2 
    3 /*
    4  * This file is part of the Symfony package.
    5  *
    6  * (c) Fabien Potencier <fabien@symfony.com>
    7  *
    8  * For the full copyright and license information, please view the LICENSE
    9  * file that was distributed with this source code.
   10  */
   11 
   12 namespace Symfony\Component\Intl\Tests\Data\Provider;
   13 
   14 use PHPUnit\Framework\TestCase;
   15 use Symfony\Component\Intl\Data\Bundle\Reader\BundleEntryReader;
   16 use Symfony\Component\Intl\Data\Bundle\Reader\BundleReaderInterface;
   17 use Symfony\Component\Intl\Locale;
   18 
   19 /**
   20  * @author Bernhard Schussek <bschussek@gmail.com>
   21  */
   22 abstract class AbstractDataProviderTest extends TestCase
   23 {
   24     // Include the locales statically so that the data providers are decoupled
   25     // from the Intl class. Otherwise tests will fail if the intl extension is
   26     // not loaded, because it is NOT possible to skip the execution of data
   27     // providers.
   28 
   29     private static $locales = [
   30         'af',
   31         'af_NA',
   32         'af_ZA',
   33         'ak',
   34         'ak_GH',
   35         'am',
   36         'am_ET',
   37         'ar',
   38         'ar_001',
   39         'ar_AE',
   40         'ar_BH',
   41         'ar_DJ',
   42         'ar_DZ',
   43         'ar_EG',
   44         'ar_EH',
   45         'ar_ER',
   46         'ar_IL',
   47         'ar_IQ',
   48         'ar_JO',
   49         'ar_KM',
   50         'ar_KW',
   51         'ar_LB',
   52         'ar_LY',
   53         'ar_MA',
   54         'ar_MR',
   55         'ar_OM',
   56         'ar_PS',
   57         'ar_QA',
   58         'ar_SA',
   59         'ar_SD',
   60         'ar_SO',
   61         'ar_SS',
   62         'ar_SY',
   63         'ar_TD',
   64         'ar_TN',
   65         'ar_YE',
   66         'as',
   67         'as_IN',
   68         'az',
   69         'az_AZ',
   70         'az_Cyrl',
   71         'az_Cyrl_AZ',
   72         'az_Latn',
   73         'az_Latn_AZ',
   74         'be',
   75         'be_BY',
   76         'bg',
   77         'bg_BG',
   78         'bm',
   79         'bm_ML',
   80         'bn',
   81         'bn_BD',
   82         'bn_IN',
   83         'bo',
   84         'bo_CN',
   85         'bo_IN',
   86         'br',
   87         'br_FR',
   88         'bs',
   89         'bs_BA',
   90         'bs_Cyrl',
   91         'bs_Cyrl_BA',
   92         'bs_Latn',
   93         'bs_Latn_BA',
   94         'ca',
   95         'ca_AD',
   96         'ca_ES',
   97         'ca_FR',
   98         'ca_IT',
   99         'ce',
  100         'ce_RU',
  101         'cs',
  102         'cs_CZ',
  103         'cy',
  104         'cy_GB',
  105         'da',
  106         'da_DK',
  107         'da_GL',
  108         'de',
  109         'de_AT',
  110         'de_BE',
  111         'de_CH',
  112         'de_DE',
  113         'de_IT',
  114         'de_LI',
  115         'de_LU',
  116         'dz',
  117         'dz_BT',
  118         'ee',
  119         'ee_GH',
  120         'ee_TG',
  121         'el',
  122         'el_CY',
  123         'el_GR',
  124         'en',
  125         'en_001',
  126         'en_150',
  127         'en_AE',
  128         'en_AG',
  129         'en_AI',
  130         'en_AS',
  131         'en_AT',
  132         'en_AU',
  133         'en_BB',
  134         'en_BE',
  135         'en_BI',
  136         'en_BM',
  137         'en_BS',
  138         'en_BW',
  139         'en_BZ',
  140         'en_CA',
  141         'en_CC',
  142         'en_CH',
  143         'en_CK',
  144         'en_CM',
  145         'en_CX',
  146         'en_CY',
  147         'en_DE',
  148         'en_DG',
  149         'en_DK',
  150         'en_DM',
  151         'en_ER',
  152         'en_FI',
  153         'en_FJ',
  154         'en_FK',
  155         'en_FM',
  156         'en_GB',
  157         'en_GD',
  158         'en_GG',
  159         'en_GH',
  160         'en_GI',
  161         'en_GM',
  162         'en_GU',
  163         'en_GY',
  164         'en_HK',
  165         'en_IE',
  166         'en_IL',
  167         'en_IM',
  168         'en_IN',
  169         'en_IO',
  170         'en_JE',
  171         'en_JM',
  172         'en_KE',
  173         'en_KI',
  174         'en_KN',
  175         'en_KY',
  176         'en_LC',
  177         'en_LR',
  178         'en_LS',
  179         'en_MG',
  180         'en_MH',
  181         'en_MO',
  182         'en_MP',
  183         'en_MS',
  184         'en_MT',
  185         'en_MU',
  186         'en_MW',
  187         'en_MY',
  188         'en_NA',
  189         'en_NF',
  190         'en_NG',
  191         'en_NH',
  192         'en_NL',
  193         'en_NR',
  194         'en_NU',
  195         'en_NZ',
  196         'en_PG',
  197         'en_PH',
  198         'en_PK',
  199         'en_PN',
  200         'en_PR',
  201         'en_PW',
  202         'en_RH',
  203         'en_RW',
  204         'en_SB',
  205         'en_SC',
  206         'en_SD',
  207         'en_SE',
  208         'en_SG',
  209         'en_SH',
  210         'en_SI',
  211         'en_SL',
  212         'en_SS',
  213         'en_SX',
  214         'en_SZ',
  215         'en_TC',
  216         'en_TK',
  217         'en_TO',
  218         'en_TT',
  219         'en_TV',
  220         'en_TZ',
  221         'en_UG',
  222         'en_UM',
  223         'en_US',
  224         'en_US_POSIX',
  225         'en_VC',
  226         'en_VG',
  227         'en_VI',
  228         'en_VU',
  229         'en_WS',
  230         'en_ZA',
  231         'en_ZM',
  232         'en_ZW',
  233         'eo',
  234         'eo_001',
  235         'es',
  236         'es_419',
  237         'es_AR',
  238         'es_BO',
  239         'es_BR',
  240         'es_BZ',
  241         'es_CL',
  242         'es_CO',
  243         'es_CR',
  244         'es_CU',
  245         'es_DO',
  246         'es_EA',
  247         'es_EC',
  248         'es_ES',
  249         'es_GQ',
  250         'es_GT',
  251         'es_HN',
  252         'es_IC',
  253         'es_MX',
  254         'es_NI',
  255         'es_PA',
  256         'es_PE',
  257         'es_PH',
  258         'es_PR',
  259         'es_PY',
  260         'es_SV',
  261         'es_US',
  262         'es_UY',
  263         'es_VE',
  264         'et',
  265         'et_EE',
  266         'eu',
  267         'eu_ES',
  268         'fa',
  269         'fa_AF',
  270         'fa_IR',
  271         'ff',
  272         'ff_CM',
  273         'ff_GN',
  274         'ff_Latn',
  275         'ff_Latn_BF',
  276         'ff_Latn_CM',
  277         'ff_Latn_GH',
  278         'ff_Latn_GM',
  279         'ff_Latn_GN',
  280         'ff_Latn_GW',
  281         'ff_Latn_LR',
  282         'ff_Latn_MR',
  283         'ff_Latn_NE',
  284         'ff_Latn_NG',
  285         'ff_Latn_SL',
  286         'ff_Latn_SN',
  287         'ff_MR',
  288         'ff_SN',
  289         'fi',
  290         'fi_FI',
  291         'fo',
  292         'fo_DK',
  293         'fo_FO',
  294         'fr',
  295         'fr_BE',
  296         'fr_BF',
  297         'fr_BI',
  298         'fr_BJ',
  299         'fr_BL',
  300         'fr_CA',
  301         'fr_CD',
  302         'fr_CF',
  303         'fr_CG',
  304         'fr_CH',
  305         'fr_CI',
  306         'fr_CM',
  307         'fr_DJ',
  308         'fr_DZ',
  309         'fr_FR',
  310         'fr_GA',
  311         'fr_GF',
  312         'fr_GN',
  313         'fr_GP',
  314         'fr_GQ',
  315         'fr_HT',
  316         'fr_KM',
  317         'fr_LU',
  318         'fr_MA',
  319         'fr_MC',
  320         'fr_MF',
  321         'fr_MG',
  322         'fr_ML',
  323         'fr_MQ',
  324         'fr_MR',
  325         'fr_MU',
  326         'fr_NC',
  327         'fr_NE',
  328         'fr_PF',
  329         'fr_PM',
  330         'fr_RE',
  331         'fr_RW',
  332         'fr_SC',
  333         'fr_SN',
  334         'fr_SY',
  335         'fr_TD',
  336         'fr_TG',
  337         'fr_TN',
  338         'fr_VU',
  339         'fr_WF',
  340         'fr_YT',
  341         'fy',
  342         'fy_NL',
  343         'ga',
  344         'ga_GB',
  345         'ga_IE',
  346         'gd',
  347         'gd_GB',
  348         'gl',
  349         'gl_ES',
  350         'gu',
  351         'gu_IN',
  352         'gv',
  353         'gv_IM',
  354         'ha',
  355         'ha_GH',
  356         'ha_NE',
  357         'ha_NG',
  358         'he',
  359         'he_IL',
  360         'hi',
  361         'hi_IN',
  362         'hr',
  363         'hr_BA',
  364         'hr_HR',
  365         'hu',
  366         'hu_HU',
  367         'hy',
  368         'hy_AM',
  369         'ia',
  370         'ia_001',
  371         'id',
  372         'id_ID',
  373         'ig',
  374         'ig_NG',
  375         'ii',
  376         'ii_CN',
  377         'in',
  378         'in_ID',
  379         'is',
  380         'is_IS',
  381         'it',
  382         'it_CH',
  383         'it_IT',
  384         'it_SM',
  385         'it_VA',
  386         'iw',
  387         'iw_IL',
  388         'ja',
  389         'ja_JP',
  390         'ja_JP_TRADITIONAL',
  391         'jv',
  392         'jv_ID',
  393         'ka',
  394         'ka_GE',
  395         'ki',
  396         'ki_KE',
  397         'kk',
  398         'kk_KZ',
  399         'kl',
  400         'kl_GL',
  401         'km',
  402         'km_KH',
  403         'kn',
  404         'kn_IN',
  405         'ko',
  406         'ko_KP',
  407         'ko_KR',
  408         'ks',
  409         'ks_IN',
  410         'ku',
  411         'ku_TR',
  412         'kw',
  413         'kw_GB',
  414         'ky',
  415         'ky_KG',
  416         'lb',
  417         'lb_LU',
  418         'lg',
  419         'lg_UG',
  420         'ln',
  421         'ln_AO',
  422         'ln_CD',
  423         'ln_CF',
  424         'ln_CG',
  425         'lo',
  426         'lo_LA',
  427         'lt',
  428         'lt_LT',
  429         'lu',
  430         'lu_CD',
  431         'lv',
  432         'lv_LV',
  433         'mg',
  434         'mg_MG',
  435         'mi',
  436         'mi_NZ',
  437         'mk',
  438         'mk_MK',
  439         'ml',
  440         'ml_IN',
  441         'mn',
  442         'mn_MN',
  443         'mo',
  444         'mr',
  445         'mr_IN',
  446         'ms',
  447         'ms_BN',
  448         'ms_MY',
  449         'ms_SG',
  450         'mt',
  451         'mt_MT',
  452         'my',
  453         'my_MM',
  454         'nb',
  455         'nb_NO',
  456         'nb_SJ',
  457         'nd',
  458         'nd_ZW',
  459         'ne',
  460         'ne_IN',
  461         'ne_NP',
  462         'nl',
  463         'nl_AW',
  464         'nl_BE',
  465         'nl_BQ',
  466         'nl_CW',
  467         'nl_NL',
  468         'nl_SR',
  469         'nl_SX',
  470         'nn',
  471         'nn_NO',
  472         'no',
  473         'no_NO',
  474         'no_NO_NY',
  475         'om',
  476         'om_ET',
  477         'om_KE',
  478         'or',
  479         'or_IN',
  480         'os',
  481         'os_GE',
  482         'os_RU',
  483         'pa',
  484         'pa_Arab',
  485         'pa_Arab_PK',
  486         'pa_Guru',
  487         'pa_Guru_IN',
  488         'pa_IN',
  489         'pa_PK',
  490         'pl',
  491         'pl_PL',
  492         'ps',
  493         'ps_AF',
  494         'ps_PK',
  495         'pt',
  496         'pt_AO',
  497         'pt_BR',
  498         'pt_CH',
  499         'pt_CV',
  500         'pt_GQ',
  501         'pt_GW',
  502         'pt_LU',
  503         'pt_MO',
  504         'pt_MZ',
  505         'pt_PT',
  506         'pt_ST',
  507         'pt_TL',
  508         'qu',
  509         'qu_BO',
  510         'qu_EC',
  511         'qu_PE',
  512         'rm',
  513         'rm_CH',
  514         'rn',
  515         'rn_BI',
  516         'ro',
  517         'ro_MD',
  518         'ro_RO',
  519         'ru',
  520         'ru_BY',
  521         'ru_KG',
  522         'ru_KZ',
  523         'ru_MD',
  524         'ru_RU',
  525         'ru_UA',
  526         'rw',
  527         'rw_RW',
  528         'sd',
  529         'sd_PK',
  530         'se',
  531         'se_FI',
  532         'se_NO',
  533         'se_SE',
  534         'sg',
  535         'sg_CF',
  536         'sh',
  537         'sh_BA',
  538         'sh_CS',
  539         'sh_YU',
  540         'si',
  541         'si_LK',
  542         'sk',
  543         'sk_SK',
  544         'sl',
  545         'sl_SI',
  546         'sn',
  547         'sn_ZW',
  548         'so',
  549         'so_DJ',
  550         'so_ET',
  551         'so_KE',
  552         'so_SO',
  553         'sq',
  554         'sq_AL',
  555         'sq_MK',
  556         'sq_XK',
  557         'sr',
  558         'sr_BA',
  559         'sr_CS',
  560         'sr_Cyrl',
  561         'sr_Cyrl_BA',
  562         'sr_Cyrl_CS',
  563         'sr_Cyrl_ME',
  564         'sr_Cyrl_RS',
  565         'sr_Cyrl_XK',
  566         'sr_Cyrl_YU',
  567         'sr_Latn',
  568         'sr_Latn_BA',
  569         'sr_Latn_CS',
  570         'sr_Latn_ME',
  571         'sr_Latn_RS',
  572         'sr_Latn_XK',
  573         'sr_Latn_YU',
  574         'sr_ME',
  575         'sr_RS',
  576         'sr_XK',
  577         'sr_YU',
  578         'sv',
  579         'sv_AX',
  580         'sv_FI',
  581         'sv_SE',
  582         'sw',
  583         'sw_CD',
  584         'sw_KE',
  585         'sw_TZ',
  586         'sw_UG',
  587         'ta',
  588         'ta_IN',
  589         'ta_LK',
  590         'ta_MY',
  591         'ta_SG',
  592         'te',
  593         'te_IN',
  594         'tg',
  595         'tg_TJ',
  596         'th',
  597         'th_TH',
  598         'th_TH_TRADITIONAL',
  599         'ti',
  600         'ti_ER',
  601         'ti_ET',
  602         'tk',
  603         'tk_TM',
  604         'tl',
  605         'tl_PH',
  606         'to',
  607         'to_TO',
  608         'tr',
  609         'tr_CY',
  610         'tr_TR',
  611         'tt',
  612         'tt_RU',
  613         'ug',
  614         'ug_CN',
  615         'uk',
  616         'uk_UA',
  617         'ur',
  618         'ur_IN',
  619         'ur_PK',
  620         'uz',
  621         'uz_AF',
  622         'uz_Arab',
  623         'uz_Arab_AF',
  624         'uz_Cyrl',
  625         'uz_Cyrl_UZ',
  626         'uz_Latn',
  627         'uz_Latn_UZ',
  628         'uz_UZ',
  629         'vi',
  630         'vi_VN',
  631         'wo',
  632         'wo_SN',
  633         'xh',
  634         'xh_ZA',
  635         'yi',
  636         'yi_001',
  637         'yo',
  638         'yo_BJ',
  639         'yo_NG',
  640         'zh',
  641         'zh_CN',
  642         'zh_HK',
  643         'zh_Hans',
  644         'zh_Hans_CN',
  645         'zh_Hans_HK',
  646         'zh_Hans_MO',
  647         'zh_Hans_SG',
  648         'zh_Hant',
  649         'zh_Hant_HK',
  650         'zh_Hant_MO',
  651         'zh_Hant_TW',
  652         'zh_MO',
  653         'zh_SG',
  654         'zh_TW',
  655         'zu',
  656         'zu_ZA',
  657     ];
  658 
  659     private static $localeAliases = [
  660         'az_AZ' => 'az_Latn_AZ',
  661         'bs_BA' => 'bs_Latn_BA',
  662         'en_NH' => 'en_VU',
  663         'en_RH' => 'en_ZW',
  664         'ff_CM' => 'ff_Latn_CM',
  665         'ff_GN' => 'ff_Latn_GN',
  666         'ff_MR' => 'ff_Latn_MR',
  667         'ff_SN' => 'ff_Latn_SN',
  668         'in' => 'id',
  669         'in_ID' => 'id_ID',
  670         'iw' => 'he',
  671         'iw_IL' => 'he_IL',
  672         'mo' => 'ro',
  673         'no' => 'nb',
  674         'no_NO' => 'nb_NO',
  675         'no_NO_NY' => 'nn_NO',
  676         'pa_IN' => 'pa_Guru_IN',
  677         'pa_PK' => 'pa_Arab_PK',
  678         'sh' => 'sr_Latn',
  679         'sh_BA' => 'sr_Latn_BA',
  680         'sh_CS' => 'sr_Latn_RS',
  681         'sh_YU' => 'sr_Latn_RS',
  682         'sr_BA' => 'sr_Cyrl_BA',
  683         'sr_CS' => 'sr_Cyrl_RS',
  684         'sr_Cyrl_CS' => 'sr_Cyrl_RS',
  685         'sr_Cyrl_YU' => 'sr_Cyrl_RS',
  686         'sr_Latn_CS' => 'sr_Latn_RS',
  687         'sr_Latn_YU' => 'sr_Latn_RS',
  688         'sr_ME' => 'sr_Latn_ME',
  689         'sr_RS' => 'sr_Cyrl_RS',
  690         'sr_XK' => 'sr_Cyrl_XK',
  691         'sr_YU' => 'sr_Cyrl_RS',
  692         'tl' => 'fil',
  693         'tl_PH' => 'fil_PH',
  694         'uz_AF' => 'uz_Arab_AF',
  695         'uz_UZ' => 'uz_Latn_UZ',
  696         'zh_CN' => 'zh_Hans_CN',
  697         'zh_HK' => 'zh_Hant_HK',
  698         'zh_MO' => 'zh_Hant_MO',
  699         'zh_SG' => 'zh_Hans_SG',
  700         'zh_TW' => 'zh_Hant_TW',
  701     ];
  702 
  703     private static $rootLocales;
  704 
  705     protected function setUp()
  706     {
  707         \Locale::setDefault('en');
  708         Locale::setDefaultFallback('en');
  709     }
  710 
  711     public function provideLocales()
  712     {
  713         return array_map(
  714             function ($locale) { return [$locale]; },
  715             $this->getLocales()
  716         );
  717     }
  718 
  719     public function provideLocaleAliases()
  720     {
  721         return array_map(
  722             function ($alias, $ofLocale) { return [$alias, $ofLocale]; },
  723             array_keys($this->getLocaleAliases()),
  724             $this->getLocaleAliases()
  725         );
  726     }
  727 
  728     public function provideRootLocales()
  729     {
  730         return array_map(
  731             function ($locale) { return [$locale]; },
  732             $this->getRootLocales()
  733         );
  734     }
  735 
  736     protected function getLocales()
  737     {
  738         return self::$locales;
  739     }
  740 
  741     protected function getLocaleAliases()
  742     {
  743         return self::$localeAliases;
  744     }
  745 
  746     protected function getRootLocales()
  747     {
  748         if (null === self::$rootLocales) {
  749             self::$rootLocales = array_filter(static::getLocales(), function ($locale) {
  750                 // no locales for which fallback is possible (e.g "en_GB")
  751                 return false === strpos($locale, '_');
  752             });
  753         }
  754 
  755         return self::$rootLocales;
  756     }
  757 
  758     /**
  759      * @return BundleEntryReader
  760      */
  761     protected function createEntryReader()
  762     {
  763         $entryReader = new BundleEntryReader($this->createBundleReader());
  764         $entryReader->setLocaleAliases($this->getLocaleAliases());
  765 
  766         return $entryReader;
  767     }
  768 
  769     /**
  770      * @return BundleReaderInterface
  771      */
  772     abstract protected function createBundleReader();
  773 }