* * 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 Symfony\Component\Intl\Data\Provider\LanguageDataProvider; use Symfony\Component\Intl\Intl; use Symfony\Component\Intl\Locale; /** * @author Bernhard Schussek */ abstract class AbstractLanguageDataProviderTest extends AbstractDataProviderTest { // The below arrays document the state of the ICU data bundled with this package. protected static $languages = array( 'aa', 'ab', 'ace', 'ach', 'ada', 'ady', 'ae', 'aeb', 'af', 'afh', 'agq', 'ain', 'ak', 'akk', 'akz', 'ale', 'aln', 'alt', 'am', 'an', 'ang', 'anp', 'ar', 'ar_001', 'arc', 'arn', 'aro', 'arp', 'arq', 'ars', 'arw', 'ary', 'arz', 'as', 'asa', 'ase', 'ast', 'av', 'avk', 'awa', 'ay', 'az', 'az_Arab', 'ba', 'bal', 'ban', 'bar', 'bas', 'bax', 'bbc', 'bbj', 'be', 'bej', 'bem', 'bew', 'bez', 'bfd', 'bfq', 'bg', 'bgn', 'bho', 'bi', 'bik', 'bin', 'bjn', 'bkm', 'bla', 'bm', 'bn', 'bo', 'bpy', 'bqi', 'br', 'bra', 'brh', 'brx', 'bs', 'bss', 'bua', 'bug', 'bum', 'byn', 'byv', 'ca', 'cad', 'car', 'cay', 'cch', 'ccp', 'ce', 'ceb', 'cgg', 'ch', 'chb', 'chg', 'chk', 'chm', 'chn', 'cho', 'chp', 'chr', 'chy', 'ckb', 'co', 'cop', 'cps', 'cr', 'crh', 'crs', 'cs', 'csb', 'cu', 'cv', 'cy', 'da', 'dak', 'dar', 'dav', 'de', 'de_AT', 'de_CH', 'del', 'den', 'dgr', 'din', 'dje', 'doi', 'dsb', 'dtp', 'dua', 'dum', 'dv', 'dyo', 'dyu', 'dz', 'dzg', 'ebu', 'ee', 'efi', 'egl', 'egy', 'eka', 'el', 'elx', 'en', 'en_AU', 'en_CA', 'en_GB', 'en_US', 'enm', 'eo', 'es', 'es_419', 'es_ES', 'es_MX', 'esu', 'et', 'eu', 'ewo', 'ext', 'fa', 'fa_AF', 'fan', 'fat', 'ff', 'fi', 'fil', 'fit', 'fj', 'fo', 'fon', 'fr', 'fr_CA', 'fr_CH', 'frc', 'frm', 'fro', 'frp', 'frr', 'frs', 'fur', 'fy', 'ga', 'gaa', 'gag', 'gan', 'gay', 'gba', 'gbz', 'gd', 'gez', 'gil', 'gl', 'glk', 'gmh', 'gn', 'goh', 'gom', 'gon', 'gor', 'got', 'grb', 'grc', 'gsw', 'gu', 'guc', 'gur', 'guz', 'gv', 'gwi', 'ha', 'hai', 'hak', 'haw', 'he', 'hi', 'hif', 'hil', 'hit', 'hmn', 'ho', 'hr', 'hsb', 'hsn', 'ht', 'hu', 'hup', 'hy', 'hz', 'ia', 'iba', 'ibb', 'id', 'ie', 'ig', 'ii', 'ik', 'ilo', 'inh', 'io', 'is', 'it', 'iu', 'izh', 'ja', 'jam', 'jbo', 'jgo', 'jmc', 'jpr', 'jrb', 'jut', 'jv', 'ka', 'kaa', 'kab', 'kac', 'kaj', 'kam', 'kaw', 'kbd', 'kbl', 'kcg', 'kde', 'kea', 'ken', 'kfo', 'kg', 'kgp', 'kha', 'kho', 'khq', 'khw', 'ki', 'kiu', 'kj', 'kk', 'kkj', 'kl', 'kln', 'km', 'kmb', 'kn', 'ko', 'koi', 'kok', 'kos', 'kpe', 'kr', 'krc', 'kri', 'krj', 'krl', 'kru', 'ks', 'ksb', 'ksf', 'ksh', 'ku', 'kum', 'kut', 'kv', 'kw', 'ky', 'la', 'lad', 'lag', 'lah', 'lam', 'lb', 'lez', 'lfn', 'lg', 'li', 'lij', 'liv', 'lkt', 'lmo', 'ln', 'lo', 'lol', 'lou', 'loz', 'lrc', 'lt', 'ltg', 'lu', 'lua', 'lui', 'lun', 'luo', 'lus', 'luy', 'lv', 'lzh', 'lzz', 'mad', 'maf', 'mag', 'mai', 'mak', 'man', 'mas', 'mde', 'mdf', 'mdr', 'men', 'mer', 'mfe', 'mg', 'mga', 'mgh', 'mgo', 'mh', 'mi', 'mic', 'min', 'mk', 'ml', 'mn', 'mnc', 'mni', 'moh', 'mos', 'mr', 'mrj', 'ms', 'mt', 'mua', 'mul', 'mus', 'mwl', 'mwr', 'mwv', 'my', 'mye', 'myv', 'mzn', 'na', 'nan', 'nap', 'naq', 'nb', 'nd', 'nds', 'nds_NL', 'ne', 'new', 'ng', 'nia', 'niu', 'njo', 'nl', 'nl_BE', 'nmg', 'nn', 'nnh', 'no', 'nog', 'non', 'nov', 'nqo', 'nr', 'nso', 'nus', 'nv', 'nwc', 'ny', 'nym', 'nyn', 'nyo', 'nzi', 'oc', 'oj', 'om', 'or', 'os', 'osa', 'ota', 'pa', 'pag', 'pal', 'pam', 'pap', 'pau', 'pcd', 'pcm', 'pdc', 'pdt', 'peo', 'pfl', 'phn', 'pi', 'pl', 'pms', 'pnt', 'pon', 'prg', 'pro', 'ps', 'pt', 'pt_BR', 'pt_PT', 'qu', 'quc', 'qug', 'raj', 'rap', 'rar', 'rgn', 'rif', 'rm', 'rn', 'ro', 'ro_MD', 'rof', 'rom', 'root', 'rtm', 'ru', 'rue', 'rug', 'rup', 'rw', 'rwk', 'sa', 'sad', 'sah', 'sam', 'saq', 'sas', 'sat', 'saz', 'sba', 'sbp', 'sc', 'scn', 'sco', 'sd', 'sdc', 'sdh', 'se', 'see', 'seh', 'sei', 'sel', 'ses', 'sg', 'sga', 'sgs', 'sh', 'shi', 'shn', 'shu', 'si', 'sid', 'sk', 'sl', 'sli', 'sly', 'sm', 'sma', 'smj', 'smn', 'sms', 'sn', 'snk', 'so', 'sog', 'sq', 'sr', 'sr_ME', 'srn', 'srr', 'ss', 'ssy', 'st', 'stq', 'su', 'suk', 'sus', 'sux', 'sv', 'sw', 'sw_CD', 'swb', 'syc', 'syr', 'szl', 'ta', 'tcy', 'te', 'tem', 'teo', 'ter', 'tet', 'tg', 'th', 'ti', 'tig', 'tiv', 'tk', 'tkl', 'tkr', 'tl', 'tlh', 'tli', 'tly', 'tmh', 'tn', 'to', 'tog', 'tpi', 'tr', 'tru', 'trv', 'ts', 'tsd', 'tsi', 'tt', 'ttt', 'tum', 'tvl', 'tw', 'twq', 'ty', 'tyv', 'tzm', 'udm', 'ug', 'uga', 'uk', 'umb', 'und', 'ur', 'uz', 'vai', 've', 'vec', 'vep', 'vi', 'vls', 'vmf', 'vo', 'vot', 'vro', 'vun', 'wa', 'wae', 'wal', 'war', 'was', 'wbp', 'wo', 'wuu', 'xal', 'xh', 'xmf', 'xog', 'yao', 'yap', 'yav', 'ybb', 'yi', 'yo', 'yrl', 'yue', 'za', 'zap', 'zbl', 'zea', 'zen', 'zgh', 'zh', 'zh_Hans', 'zh_Hant', 'zu', 'zun', 'zxx', 'zza', ); protected static $alpha2ToAlpha3 = array( 'aa' => 'aar', 'ab' => 'abk', 'af' => 'afr', 'ak' => 'aka', 'sq' => 'sqi', 'am' => 'amh', 'ar' => 'ara', 'an' => 'arg', 'hy' => 'hye', 'as' => 'asm', 'av' => 'ava', 'ae' => 'ave', 'ay' => 'aym', 'az' => 'aze', 'ba' => 'bak', 'bm' => 'bam', 'eu' => 'eus', 'be' => 'bel', 'bn' => 'ben', 'bi' => 'bis', 'bo' => 'bod', 'bs' => 'bos', 'br' => 'bre', 'bg' => 'bul', 'my' => 'mya', 'ca' => 'cat', 'cs' => 'ces', 'ch' => 'cha', 'ce' => 'che', 'zh' => 'zho', 'cu' => 'chu', 'cv' => 'chv', 'kw' => 'cor', 'co' => 'cos', 'cr' => 'cre', 'cy' => 'cym', 'da' => 'dan', 'de' => 'deu', 'dv' => 'div', 'nl' => 'nld', 'dz' => 'dzo', 'et' => 'est', 'el' => 'ell', 'en' => 'eng', 'eo' => 'epo', 'ik' => 'ipk', 'ee' => 'ewe', 'fo' => 'fao', 'fa' => 'fas', 'fj' => 'fij', 'fi' => 'fin', 'fr' => 'fra', 'fy' => 'fry', 'ff' => 'ful', 'om' => 'orm', 'ka' => 'kat', 'gd' => 'gla', 'ga' => 'gle', 'gl' => 'glg', 'gv' => 'glv', 'gn' => 'grn', 'gu' => 'guj', 'ht' => 'hat', 'ha' => 'hau', 'he' => 'heb', 'hz' => 'her', 'hi' => 'hin', 'ho' => 'hmo', 'hr' => 'hrv', 'hu' => 'hun', 'ig' => 'ibo', 'is' => 'isl', 'io' => 'ido', 'ii' => 'iii', 'iu' => 'iku', 'ie' => 'ile', 'ia' => 'ina', 'id' => 'ind', 'it' => 'ita', 'jv' => 'jav', 'ja' => 'jpn', 'kl' => 'kal', 'kn' => 'kan', 'ks' => 'kas', 'kr' => 'kau', 'kk' => 'kaz', 'mn' => 'mon', 'km' => 'khm', 'ki' => 'kik', 'rw' => 'kin', 'ky' => 'kir', 'ku' => 'kur', 'kg' => 'kon', 'kv' => 'kom', 'ko' => 'kor', 'kj' => 'kua', 'lo' => 'lao', 'la' => 'lat', 'lv' => 'lav', 'li' => 'lim', 'ln' => 'lin', 'lt' => 'lit', 'lb' => 'ltz', 'lu' => 'lub', 'lg' => 'lug', 'mk' => 'mkd', 'mh' => 'mah', 'ml' => 'mal', 'mi' => 'mri', 'mr' => 'mar', 'ms' => 'msa', 'mg' => 'mlg', 'mt' => 'mlt', 'na' => 'nau', 'nv' => 'nav', 'nr' => 'nbl', 'nd' => 'nde', 'ng' => 'ndo', 'ne' => 'nep', 'nn' => 'nno', 'nb' => 'nob', 'ny' => 'nya', 'oc' => 'oci', 'oj' => 'oji', 'or' => 'ori', 'os' => 'oss', 'pa' => 'pan', 'ps' => 'pus', 'pi' => 'pli', 'pl' => 'pol', 'pt' => 'por', 'qu' => 'que', 'rm' => 'roh', 'ro' => 'ron', 'rn' => 'run', 'ru' => 'rus', 'sg' => 'sag', 'sa' => 'san', 'sr' => 'srp', 'si' => 'sin', 'sk' => 'slk', 'sl' => 'slv', 'se' => 'sme', 'sm' => 'smo', 'sn' => 'sna', 'sd' => 'snd', 'so' => 'som', 'st' => 'sot', 'es' => 'spa', 'sc' => 'srd', 'ss' => 'ssw', 'su' => 'sun', 'sw' => 'swa', 'sv' => 'swe', 'ty' => 'tah', 'ta' => 'tam', 'tt' => 'tat', 'te' => 'tel', 'tg' => 'tgk', 'th' => 'tha', 'ti' => 'tir', 'to' => 'ton', 'tn' => 'tsn', 'ts' => 'tso', 'tk' => 'tuk', 'tr' => 'tur', 'ug' => 'uig', 'uk' => 'ukr', 'ur' => 'urd', 'uz' => 'uzb', 've' => 'ven', 'vi' => 'vie', 'vo' => 'vol', 'wa' => 'wln', 'wo' => 'wol', 'xh' => 'xho', 'yi' => 'yid', 'yo' => 'yor', 'za' => 'zha', 'zu' => 'zul', ); /** * @var LanguageDataProvider */ protected $dataProvider; protected function setUp() { parent::setUp(); $this->dataProvider = new LanguageDataProvider( $this->getDataDirectory().'/'.Intl::LANGUAGE_DIR, $this->createEntryReader() ); } abstract protected function getDataDirectory(); public function testGetLanguages() { $this->assertEquals(static::$languages, $this->dataProvider->getLanguages()); } /** * @dataProvider provideLocales */ public function testGetNames($displayLocale) { $languages = array_keys($this->dataProvider->getNames($displayLocale)); sort($languages); $this->assertNotEmpty($languages); $this->assertEmpty(array_diff($languages, static::$languages)); } public function testGetNamesDefaultLocale() { Locale::setDefault('de_AT'); $this->assertSame( $this->dataProvider->getNames('de_AT'), $this->dataProvider->getNames() ); } /** * @dataProvider provideLocaleAliases */ public function testGetNamesSupportsAliases($alias, $ofLocale) { // Can't use assertSame(), because some aliases contain scripts with // different collation (=order of output) than their aliased locale // e.g. sr_Latn_ME => sr_ME $this->assertEquals( $this->dataProvider->getNames($ofLocale), $this->dataProvider->getNames($alias) ); } /** * @dataProvider provideLocales */ public function testGetName($displayLocale) { $names = $this->dataProvider->getNames($displayLocale); foreach ($names as $language => $name) { $this->assertSame($name, $this->dataProvider->getName($language, $displayLocale)); } } public function testGetNameDefaultLocale() { Locale::setDefault('de_AT'); $names = $this->dataProvider->getNames('de_AT'); foreach ($names as $language => $name) { $this->assertSame($name, $this->dataProvider->getName($language)); } } public function provideLanguagesWithAlpha3Equivalent() { return array_map( function ($value) { return array($value); }, array_keys(static::$alpha2ToAlpha3) ); } /** * @dataProvider provideLanguagesWithAlpha3Equivalent */ public function testGetAlpha3Code($language) { $this->assertSame(static::$alpha2ToAlpha3[$language], $this->dataProvider->getAlpha3Code($language)); } public function provideLanguagesWithoutAlpha3Equivalent() { return array_map( function ($value) { return array($value); }, array_diff(static::$languages, array_keys(static::$alpha2ToAlpha3)) ); } /** * @dataProvider provideLanguagesWithoutAlpha3Equivalent * @expectedException \Symfony\Component\Intl\Exception\MissingResourceException */ public function testGetAlpha3CodeFailsIfNoAlpha3Equivalent($currency) { $this->dataProvider->getAlpha3Code($currency); } } __halt_compiler();----SIGNATURE:----DeoRsIC4RahR3X6zkkvVtTn4SkIB+G7fDXyicqGJQsaec17YCTVdilJdX0oYHzOk9VksQkIh9+qKnq49BFW/TD27/NEPvwlBiooPChX9JGOWSqjNUVpdynUUdlEgPfy7ajT7S4sYB6QZeSXeqrgCJkr6fG+Me+KC48rus/s2AvGHi7Ugqqm38N0SoGfLqUxLy8XwQlOa0tevdp6f8Ibfdd29CwaPOemwQ/c9xZGQfWaAMBpnulhX0Tw4MyQ1IwGpvRUIw4Fv2ycSCZk9lkJv91zSYWt8nKB1nD2AuCnW+MX/gYgNAg2YyXm+Bf0dFk5q3K5gYUs0TqEtShDu9zuOm1YR9SsCcNmpWyoAQak8etS+QgP8SHn1AlEhOeuidUQv559KLY//8KY/TekHZKG8fwMqan6RKVeYTJ6TLPjYwUL78OPwE7ZApB9XwPBlePoC4NBww/uHa02QO/PugufV+rf5LN0LHuD/kGc9a9Zqf8N4oPDSYPOOpKtXfJK+8CWAXwmTQkDEW3IEzHpWV3xojUOZ2+2gAKpumFYd3kcG48kTBqmiu6U9idT9pN/PxY9BLb+pa7ULTHrQjPs926C/AndcrxqzdNnwVmKyybR4WD7B6KqR33ur+Z3OO4IMOAGVT/Rt5LTfzjfh9V0A1Ln7Kke0YTuY/OwYGwykaSI3sT4=----ATTACHMENT:----NDQyNjc4Njk1ODQzMTcwOCAxODYyNDk5MTc5NDIyNDAxIDg4OTM5MTAyNjg5OTQwNjg=