AbstractLanguageDataProviderTest.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933
  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 Symfony\Component\Intl\Data\Provider\LanguageDataProvider;
  12. use Symfony\Component\Intl\Intl;
  13. use Symfony\Component\Intl\Locale;
  14. /**
  15. * @author Bernhard Schussek <bschussek@gmail.com>
  16. */
  17. abstract class AbstractLanguageDataProviderTest extends AbstractDataProviderTest
  18. {
  19. // The below arrays document the state of the ICU data bundled with this package.
  20. protected static $languages = array(
  21. 'aa',
  22. 'ab',
  23. 'ace',
  24. 'ach',
  25. 'ada',
  26. 'ady',
  27. 'ae',
  28. 'aeb',
  29. 'af',
  30. 'afh',
  31. 'agq',
  32. 'ain',
  33. 'ak',
  34. 'akk',
  35. 'akz',
  36. 'ale',
  37. 'aln',
  38. 'alt',
  39. 'am',
  40. 'an',
  41. 'ang',
  42. 'anp',
  43. 'ar',
  44. 'ar_001',
  45. 'arc',
  46. 'arn',
  47. 'aro',
  48. 'arp',
  49. 'arq',
  50. 'arw',
  51. 'ary',
  52. 'arz',
  53. 'as',
  54. 'asa',
  55. 'ase',
  56. 'ast',
  57. 'av',
  58. 'avk',
  59. 'awa',
  60. 'ay',
  61. 'az',
  62. 'azb',
  63. 'ba',
  64. 'bal',
  65. 'ban',
  66. 'bar',
  67. 'bas',
  68. 'bax',
  69. 'bbc',
  70. 'bbj',
  71. 'be',
  72. 'bej',
  73. 'bem',
  74. 'bew',
  75. 'bez',
  76. 'bfd',
  77. 'bfq',
  78. 'bg',
  79. 'bho',
  80. 'bi',
  81. 'bik',
  82. 'bin',
  83. 'bjn',
  84. 'bkm',
  85. 'bla',
  86. 'bm',
  87. 'bn',
  88. 'bo',
  89. 'bpy',
  90. 'bqi',
  91. 'br',
  92. 'bra',
  93. 'brh',
  94. 'brx',
  95. 'bs',
  96. 'bss',
  97. 'bua',
  98. 'bug',
  99. 'bum',
  100. 'byn',
  101. 'byv',
  102. 'ca',
  103. 'cad',
  104. 'car',
  105. 'cay',
  106. 'cch',
  107. 'ce',
  108. 'ceb',
  109. 'cgg',
  110. 'ch',
  111. 'chb',
  112. 'chg',
  113. 'chk',
  114. 'chm',
  115. 'chn',
  116. 'cho',
  117. 'chp',
  118. 'chr',
  119. 'chy',
  120. 'ckb',
  121. 'co',
  122. 'cop',
  123. 'cps',
  124. 'cr',
  125. 'crh',
  126. 'cs',
  127. 'csb',
  128. 'cu',
  129. 'cv',
  130. 'cy',
  131. 'da',
  132. 'dak',
  133. 'dar',
  134. 'dav',
  135. 'de',
  136. 'de_AT',
  137. 'de_CH',
  138. 'del',
  139. 'den',
  140. 'dgr',
  141. 'din',
  142. 'dje',
  143. 'doi',
  144. 'dsb',
  145. 'dtp',
  146. 'dua',
  147. 'dum',
  148. 'dv',
  149. 'dyo',
  150. 'dyu',
  151. 'dz',
  152. 'dzg',
  153. 'ebu',
  154. 'ee',
  155. 'efi',
  156. 'egl',
  157. 'egy',
  158. 'eka',
  159. 'el',
  160. 'elx',
  161. 'en',
  162. 'en_AU',
  163. 'en_CA',
  164. 'en_GB',
  165. 'en_US',
  166. 'enm',
  167. 'eo',
  168. 'es',
  169. 'es_419',
  170. 'es_ES',
  171. 'es_MX',
  172. 'esu',
  173. 'et',
  174. 'eu',
  175. 'ewo',
  176. 'ext',
  177. 'fa',
  178. 'fan',
  179. 'fat',
  180. 'ff',
  181. 'fi',
  182. 'fil',
  183. 'fit',
  184. 'fj',
  185. 'fo',
  186. 'fon',
  187. 'fr',
  188. 'fr_CA',
  189. 'fr_CH',
  190. 'frc',
  191. 'frm',
  192. 'fro',
  193. 'frp',
  194. 'frr',
  195. 'frs',
  196. 'fur',
  197. 'fy',
  198. 'ga',
  199. 'gaa',
  200. 'gag',
  201. 'gan',
  202. 'gay',
  203. 'gba',
  204. 'gbz',
  205. 'gd',
  206. 'gez',
  207. 'gil',
  208. 'gl',
  209. 'glk',
  210. 'gmh',
  211. 'gn',
  212. 'goh',
  213. 'gom',
  214. 'gon',
  215. 'gor',
  216. 'got',
  217. 'grb',
  218. 'grc',
  219. 'gsw',
  220. 'gu',
  221. 'guc',
  222. 'gur',
  223. 'guz',
  224. 'gv',
  225. 'gwi',
  226. 'ha',
  227. 'hai',
  228. 'hak',
  229. 'haw',
  230. 'he',
  231. 'hi',
  232. 'hif',
  233. 'hil',
  234. 'hit',
  235. 'hmn',
  236. 'ho',
  237. 'hr',
  238. 'hsb',
  239. 'hsn',
  240. 'ht',
  241. 'hu',
  242. 'hup',
  243. 'hy',
  244. 'hz',
  245. 'ia',
  246. 'iba',
  247. 'ibb',
  248. 'id',
  249. 'ie',
  250. 'ig',
  251. 'ii',
  252. 'ik',
  253. 'ilo',
  254. 'inh',
  255. 'io',
  256. 'is',
  257. 'it',
  258. 'iu',
  259. 'izh',
  260. 'ja',
  261. 'jam',
  262. 'jbo',
  263. 'jgo',
  264. 'jmc',
  265. 'jpr',
  266. 'jrb',
  267. 'jut',
  268. 'jv',
  269. 'ka',
  270. 'kaa',
  271. 'kab',
  272. 'kac',
  273. 'kaj',
  274. 'kam',
  275. 'kaw',
  276. 'kbd',
  277. 'kbl',
  278. 'kcg',
  279. 'kde',
  280. 'kea',
  281. 'ken',
  282. 'kfo',
  283. 'kg',
  284. 'kgp',
  285. 'kha',
  286. 'kho',
  287. 'khq',
  288. 'khw',
  289. 'ki',
  290. 'kiu',
  291. 'kj',
  292. 'kk',
  293. 'kkj',
  294. 'kl',
  295. 'kln',
  296. 'km',
  297. 'kmb',
  298. 'kn',
  299. 'ko',
  300. 'koi',
  301. 'kok',
  302. 'kos',
  303. 'kpe',
  304. 'kr',
  305. 'krc',
  306. 'kri',
  307. 'krj',
  308. 'krl',
  309. 'kru',
  310. 'ks',
  311. 'ksb',
  312. 'ksf',
  313. 'ksh',
  314. 'ku',
  315. 'kum',
  316. 'kut',
  317. 'kv',
  318. 'kw',
  319. 'ky',
  320. 'la',
  321. 'lad',
  322. 'lag',
  323. 'lah',
  324. 'lam',
  325. 'lb',
  326. 'lez',
  327. 'lfn',
  328. 'lg',
  329. 'li',
  330. 'lij',
  331. 'liv',
  332. 'lkt',
  333. 'lmo',
  334. 'ln',
  335. 'lo',
  336. 'lol',
  337. 'loz',
  338. 'lt',
  339. 'ltg',
  340. 'lu',
  341. 'lua',
  342. 'lui',
  343. 'lun',
  344. 'luo',
  345. 'lus',
  346. 'luy',
  347. 'lv',
  348. 'lzh',
  349. 'lzz',
  350. 'mad',
  351. 'maf',
  352. 'mag',
  353. 'mai',
  354. 'mak',
  355. 'man',
  356. 'mas',
  357. 'mde',
  358. 'mdf',
  359. 'mdr',
  360. 'men',
  361. 'mer',
  362. 'mfe',
  363. 'mg',
  364. 'mga',
  365. 'mgh',
  366. 'mgo',
  367. 'mh',
  368. 'mi',
  369. 'mic',
  370. 'min',
  371. 'mk',
  372. 'ml',
  373. 'mn',
  374. 'mnc',
  375. 'mni',
  376. 'moh',
  377. 'mos',
  378. 'mr',
  379. 'mrj',
  380. 'ms',
  381. 'mt',
  382. 'mua',
  383. 'mul',
  384. 'mus',
  385. 'mwl',
  386. 'mwr',
  387. 'mwv',
  388. 'my',
  389. 'mye',
  390. 'myv',
  391. 'mzn',
  392. 'na',
  393. 'nan',
  394. 'nap',
  395. 'naq',
  396. 'nb',
  397. 'nd',
  398. 'nds',
  399. 'ne',
  400. 'new',
  401. 'ng',
  402. 'nia',
  403. 'niu',
  404. 'njo',
  405. 'nl',
  406. 'nl_BE',
  407. 'nmg',
  408. 'nn',
  409. 'nnh',
  410. 'no',
  411. 'nog',
  412. 'non',
  413. 'nov',
  414. 'nqo',
  415. 'nr',
  416. 'nso',
  417. 'nus',
  418. 'nv',
  419. 'nwc',
  420. 'ny',
  421. 'nym',
  422. 'nyn',
  423. 'nyo',
  424. 'nzi',
  425. 'oc',
  426. 'oj',
  427. 'om',
  428. 'or',
  429. 'os',
  430. 'osa',
  431. 'ota',
  432. 'pa',
  433. 'pag',
  434. 'pal',
  435. 'pam',
  436. 'pap',
  437. 'pau',
  438. 'pcd',
  439. 'pdc',
  440. 'pdt',
  441. 'peo',
  442. 'pfl',
  443. 'phn',
  444. 'pi',
  445. 'pl',
  446. 'pms',
  447. 'pnt',
  448. 'pon',
  449. 'prg',
  450. 'pro',
  451. 'ps',
  452. 'pt',
  453. 'pt_BR',
  454. 'pt_PT',
  455. 'qu',
  456. 'quc',
  457. 'qug',
  458. 'raj',
  459. 'rap',
  460. 'rar',
  461. 'rgn',
  462. 'rif',
  463. 'rm',
  464. 'rn',
  465. 'ro',
  466. 'ro_MD',
  467. 'rof',
  468. 'rom',
  469. 'root',
  470. 'rtm',
  471. 'ru',
  472. 'rue',
  473. 'rug',
  474. 'rup',
  475. 'rw',
  476. 'rwk',
  477. 'sa',
  478. 'sad',
  479. 'sah',
  480. 'sam',
  481. 'saq',
  482. 'sas',
  483. 'sat',
  484. 'saz',
  485. 'sba',
  486. 'sbp',
  487. 'sc',
  488. 'scn',
  489. 'sco',
  490. 'sd',
  491. 'sdc',
  492. 'se',
  493. 'see',
  494. 'seh',
  495. 'sei',
  496. 'sel',
  497. 'ses',
  498. 'sg',
  499. 'sga',
  500. 'sgs',
  501. 'sh',
  502. 'shi',
  503. 'shn',
  504. 'shu',
  505. 'si',
  506. 'sid',
  507. 'sk',
  508. 'sl',
  509. 'sli',
  510. 'sly',
  511. 'sm',
  512. 'sma',
  513. 'smj',
  514. 'smn',
  515. 'sms',
  516. 'sn',
  517. 'snk',
  518. 'so',
  519. 'sog',
  520. 'sq',
  521. 'sr',
  522. 'srn',
  523. 'srr',
  524. 'ss',
  525. 'ssy',
  526. 'st',
  527. 'stq',
  528. 'su',
  529. 'suk',
  530. 'sus',
  531. 'sux',
  532. 'sv',
  533. 'sw',
  534. 'swb',
  535. 'swc',
  536. 'syc',
  537. 'syr',
  538. 'szl',
  539. 'ta',
  540. 'tcy',
  541. 'te',
  542. 'tem',
  543. 'teo',
  544. 'ter',
  545. 'tet',
  546. 'tg',
  547. 'th',
  548. 'ti',
  549. 'tig',
  550. 'tiv',
  551. 'tk',
  552. 'tkl',
  553. 'tkr',
  554. 'tl',
  555. 'tlh',
  556. 'tli',
  557. 'tly',
  558. 'tmh',
  559. 'tn',
  560. 'to',
  561. 'tog',
  562. 'tpi',
  563. 'tr',
  564. 'tru',
  565. 'trv',
  566. 'ts',
  567. 'tsd',
  568. 'tsi',
  569. 'tt',
  570. 'ttt',
  571. 'tum',
  572. 'tvl',
  573. 'tw',
  574. 'twq',
  575. 'ty',
  576. 'tyv',
  577. 'tzm',
  578. 'udm',
  579. 'ug',
  580. 'uga',
  581. 'uk',
  582. 'umb',
  583. 'und',
  584. 'ur',
  585. 'uz',
  586. 'vai',
  587. 've',
  588. 'vec',
  589. 'vep',
  590. 'vi',
  591. 'vls',
  592. 'vmf',
  593. 'vo',
  594. 'vot',
  595. 'vro',
  596. 'vun',
  597. 'wa',
  598. 'wae',
  599. 'wal',
  600. 'war',
  601. 'was',
  602. 'wo',
  603. 'wuu',
  604. 'xal',
  605. 'xh',
  606. 'xmf',
  607. 'xog',
  608. 'yao',
  609. 'yap',
  610. 'yav',
  611. 'ybb',
  612. 'yi',
  613. 'yo',
  614. 'yrl',
  615. 'yue',
  616. 'za',
  617. 'zap',
  618. 'zbl',
  619. 'zea',
  620. 'zen',
  621. 'zgh',
  622. 'zh',
  623. 'zh_Hans',
  624. 'zh_Hant',
  625. 'zu',
  626. 'zun',
  627. 'zxx',
  628. 'zza',
  629. );
  630. protected static $alpha2ToAlpha3 = array(
  631. 'aa' => 'aar',
  632. 'ab' => 'abk',
  633. 'ae' => 'ave',
  634. 'af' => 'afr',
  635. 'ak' => 'aka',
  636. 'am' => 'amh',
  637. 'an' => 'arg',
  638. 'ar' => 'ara',
  639. 'as' => 'asm',
  640. 'av' => 'ava',
  641. 'ay' => 'aym',
  642. 'az' => 'aze',
  643. 'ba' => 'bak',
  644. 'be' => 'bel',
  645. 'bg' => 'bul',
  646. 'bh' => 'bih',
  647. 'bi' => 'bis',
  648. 'bm' => 'bam',
  649. 'bn' => 'ben',
  650. 'bo' => 'bod',
  651. 'br' => 'bre',
  652. 'bs' => 'bos',
  653. 'ca' => 'cat',
  654. 'ce' => 'che',
  655. 'ch' => 'cha',
  656. 'co' => 'cos',
  657. 'cr' => 'cre',
  658. 'cs' => 'ces',
  659. 'cu' => 'chu',
  660. 'cv' => 'chv',
  661. 'cy' => 'cym',
  662. 'da' => 'dan',
  663. 'de' => 'deu',
  664. 'dv' => 'div',
  665. 'dz' => 'dzo',
  666. 'ee' => 'ewe',
  667. 'el' => 'ell',
  668. 'en' => 'eng',
  669. 'eo' => 'epo',
  670. 'es' => 'spa',
  671. 'et' => 'est',
  672. 'eu' => 'eus',
  673. 'fa' => 'fas',
  674. 'ff' => 'ful',
  675. 'fi' => 'fin',
  676. 'fj' => 'fij',
  677. 'fo' => 'fao',
  678. 'fr' => 'fra',
  679. 'fy' => 'fry',
  680. 'ga' => 'gle',
  681. 'gd' => 'gla',
  682. 'gl' => 'glg',
  683. 'gn' => 'grn',
  684. 'gu' => 'guj',
  685. 'gv' => 'glv',
  686. 'ha' => 'hau',
  687. 'he' => 'heb',
  688. 'hi' => 'hin',
  689. 'ho' => 'hmo',
  690. 'hr' => 'hrv',
  691. 'ht' => 'hat',
  692. 'hu' => 'hun',
  693. 'hy' => 'hye',
  694. 'hz' => 'her',
  695. 'ia' => 'ina',
  696. 'id' => 'ind',
  697. 'ie' => 'ile',
  698. 'ig' => 'ibo',
  699. 'ii' => 'iii',
  700. 'ik' => 'ipk',
  701. 'io' => 'ido',
  702. 'is' => 'isl',
  703. 'it' => 'ita',
  704. 'iu' => 'iku',
  705. 'ja' => 'jpn',
  706. 'jv' => 'jav',
  707. 'ka' => 'kat',
  708. 'kg' => 'kon',
  709. 'ki' => 'kik',
  710. 'kj' => 'kua',
  711. 'kk' => 'kaz',
  712. 'kl' => 'kal',
  713. 'km' => 'khm',
  714. 'kn' => 'kan',
  715. 'ko' => 'kor',
  716. 'kr' => 'kau',
  717. 'ks' => 'kas',
  718. 'ku' => 'kur',
  719. 'kv' => 'kom',
  720. 'kw' => 'cor',
  721. 'ky' => 'kir',
  722. 'la' => 'lat',
  723. 'lb' => 'ltz',
  724. 'lg' => 'lug',
  725. 'li' => 'lim',
  726. 'ln' => 'lin',
  727. 'lo' => 'lao',
  728. 'lt' => 'lit',
  729. 'lu' => 'lub',
  730. 'lv' => 'lav',
  731. 'mg' => 'mlg',
  732. 'mh' => 'mah',
  733. 'mi' => 'mri',
  734. 'mk' => 'mkd',
  735. 'ml' => 'mal',
  736. 'mn' => 'mon',
  737. 'mr' => 'mar',
  738. 'ms' => 'msa',
  739. 'mt' => 'mlt',
  740. 'my' => 'mya',
  741. 'na' => 'nau',
  742. 'nb' => 'nob',
  743. 'nd' => 'nde',
  744. 'ne' => 'nep',
  745. 'ng' => 'ndo',
  746. 'nl' => 'nld',
  747. 'nn' => 'nno',
  748. 'nr' => 'nbl',
  749. 'nv' => 'nav',
  750. 'ny' => 'nya',
  751. 'oc' => 'oci',
  752. 'oj' => 'oji',
  753. 'om' => 'orm',
  754. 'or' => 'ori',
  755. 'os' => 'oss',
  756. 'pa' => 'pan',
  757. 'pi' => 'pli',
  758. 'pl' => 'pol',
  759. 'ps' => 'pus',
  760. 'pt' => 'por',
  761. 'qu' => 'que',
  762. 'rm' => 'roh',
  763. 'rn' => 'run',
  764. 'ro' => 'ron',
  765. 'ru' => 'rus',
  766. 'rw' => 'kin',
  767. 'sa' => 'san',
  768. 'sc' => 'srd',
  769. 'sd' => 'snd',
  770. 'se' => 'sme',
  771. 'sg' => 'sag',
  772. 'si' => 'sin',
  773. 'sk' => 'slk',
  774. 'sl' => 'slv',
  775. 'sm' => 'smo',
  776. 'sn' => 'sna',
  777. 'so' => 'som',
  778. 'sq' => 'sqi',
  779. 'sr' => 'srp',
  780. 'ss' => 'ssw',
  781. 'st' => 'sot',
  782. 'su' => 'sun',
  783. 'sv' => 'swe',
  784. 'sw' => 'swa',
  785. 'ta' => 'tam',
  786. 'te' => 'tel',
  787. 'tg' => 'tgk',
  788. 'th' => 'tha',
  789. 'ti' => 'tir',
  790. 'tk' => 'tuk',
  791. 'tn' => 'tsn',
  792. 'to' => 'ton',
  793. 'tr' => 'tur',
  794. 'ts' => 'tso',
  795. 'tt' => 'tat',
  796. 'ty' => 'tah',
  797. 'ug' => 'uig',
  798. 'uk' => 'ukr',
  799. 'ur' => 'urd',
  800. 'uz' => 'uzb',
  801. 've' => 'ven',
  802. 'vi' => 'vie',
  803. 'vo' => 'vol',
  804. 'wa' => 'wln',
  805. 'wo' => 'wol',
  806. 'xh' => 'xho',
  807. 'yi' => 'yid',
  808. 'yo' => 'yor',
  809. 'za' => 'zha',
  810. 'zh' => 'zho',
  811. 'zu' => 'zul',
  812. );
  813. /**
  814. * @var LanguageDataProvider
  815. */
  816. protected $dataProvider;
  817. protected function setUp()
  818. {
  819. parent::setUp();
  820. $this->dataProvider = new LanguageDataProvider(
  821. $this->getDataDirectory().'/'.Intl::LANGUAGE_DIR,
  822. $this->createEntryReader()
  823. );
  824. }
  825. abstract protected function getDataDirectory();
  826. public function testGetLanguages()
  827. {
  828. $this->assertEquals(static::$languages, $this->dataProvider->getLanguages());
  829. }
  830. /**
  831. * @dataProvider provideLocales
  832. */
  833. public function testGetNames($displayLocale)
  834. {
  835. $languages = array_keys($this->dataProvider->getNames($displayLocale));
  836. sort($languages);
  837. $this->assertEquals(static::$languages, $languages);
  838. }
  839. public function testGetNamesDefaultLocale()
  840. {
  841. Locale::setDefault('de_AT');
  842. $this->assertSame(
  843. $this->dataProvider->getNames('de_AT'),
  844. $this->dataProvider->getNames()
  845. );
  846. }
  847. /**
  848. * @dataProvider provideLocaleAliases
  849. */
  850. public function testGetNamesSupportsAliases($alias, $ofLocale)
  851. {
  852. // Can't use assertSame(), because some aliases contain scripts with
  853. // different collation (=order of output) than their aliased locale
  854. // e.g. sr_Latn_ME => sr_ME
  855. $this->assertEquals(
  856. $this->dataProvider->getNames($ofLocale),
  857. $this->dataProvider->getNames($alias)
  858. );
  859. }
  860. /**
  861. * @dataProvider provideLocales
  862. */
  863. public function testGetName($displayLocale)
  864. {
  865. $names = $this->dataProvider->getNames($displayLocale);
  866. foreach ($names as $language => $name) {
  867. $this->assertSame($name, $this->dataProvider->getName($language, $displayLocale));
  868. }
  869. }
  870. public function testGetNameDefaultLocale()
  871. {
  872. Locale::setDefault('de_AT');
  873. $names = $this->dataProvider->getNames('de_AT');
  874. foreach ($names as $language => $name) {
  875. $this->assertSame($name, $this->dataProvider->getName($language));
  876. }
  877. }
  878. public function provideLanguagesWithAlpha3Equivalent()
  879. {
  880. return array_map(
  881. function ($value) { return array($value); },
  882. array_keys(static::$alpha2ToAlpha3)
  883. );
  884. }
  885. /**
  886. * @dataProvider provideLanguagesWithAlpha3Equivalent
  887. */
  888. public function testGetAlpha3Code($language)
  889. {
  890. $this->assertSame(static::$alpha2ToAlpha3[$language], $this->dataProvider->getAlpha3Code($language));
  891. }
  892. public function provideLanguagesWithoutAlpha3Equivalent()
  893. {
  894. return array_map(
  895. function ($value) { return array($value); },
  896. array_diff(static::$languages, array_keys(static::$alpha2ToAlpha3))
  897. );
  898. }
  899. /**
  900. * @dataProvider provideLanguagesWithoutAlpha3Equivalent
  901. * @expectedException \Symfony\Component\Intl\Exception\MissingResourceException
  902. */
  903. public function testGetAlpha3CodeFailsIfNoAlpha3Equivalent($currency)
  904. {
  905. $this->dataProvider->getAlpha3Code($currency);
  906. }
  907. }