AbstractDataProviderTest.php 16 KB

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