Path: blob/master/test/jdk/java/util/Locale/Bug4175998Test.java
41149 views
/*1* Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24* @test25* @summary test ISO639-2 language codes26* @library /java/text/testlib27* @compile -encoding ascii Bug4175998Test.java28* @run main Bug4175998Test29* @bug 417599830*/3132/*33*34*35* (C) Copyright IBM Corp. 1998 - All Rights Reserved36*37* The original version of this source code and documentation is38* copyrighted and owned by IBM. These materials are provided39* under terms of a License Agreement between IBM and Sun.40* This technology is protected by multiple US and International41* patents. This notice and attribution to IBM may not be removed.42*43*/4445import java.util.*;4647/**48* Bug4175998Test verifies that the following bug has been fixed:49* Bug 4175998 - The java.util.Locale.getISO3Language() returns wrong result for a locale with50* language code 'ta'(Tamil).51*/52public class Bug4175998Test extends IntlTest {53public static void main(String[] args) throws Exception {54new Bug4175998Test().run(args);55//generateTables(); //uncomment this to regenerate data tables56}5758public void testIt() throws Exception {59boolean bad = false;60for (int i = 0; i < CODES.length; i++) {61final String[] localeCodes = CODES[i];62final Locale l = new Locale(localeCodes[0], "");63final String iso3 = l.getISO3Language();64if (!iso3.equals(localeCodes[1]) /*&& !iso3.equals(localeCodes[2])*/) {65logln("Locale("+l+") returned bad ISO3 language code."66+" Got '"+iso3+"' instead of '"+localeCodes[1]+"'"/*+" or '"+localeCodes[2]+"'"*/);67bad = true;68}69}70if (bad) {71errln("Bad ISO3 language codes detected.");72}73}7475private static final String[][] CODES = {76{"pt","por","por"},77{"eu","eus","baq"},78{"ps","pus","pus"},79{"et","est","est"},80{"ka","kat","geo"},81{"es","spa","spa"},82{"eo","epo","epo"},83{"en","eng","eng"},84{"pl","pol","pol"},85{"el","ell","gre"},86{"uz","uzb","uzb"},87{"jv","jav","jav"},88{"ur","urd","urd"},89{"uk","ukr","ukr"},90{"ug","uig","uig"},91{"zu","zul","zul"},92{"ja","jpn","jpn"},93{"or","ori","ori"},94{"om","orm","orm"},95{"zh","zho","chi"},96{"tw","twi","twi"},97{"de","deu","ger"},98{"oc","oci","oci"},99{"za","zha","zha"},100{"tt","tat","tat"},101{"iu","iku","iku"},102{"ts","tso","tso"},103{"it","ita","ita"},104{"tr","tur","tur"},105{"da","dan","dan"},106{"is","isl","ice"},107{"to","ton","ton"},108{"tl","tgl","tgl"},109{"tk","tuk","tuk"},110{"ik","ipk","ipk"},111{"ti","tir","tir"},112{"th","tha","tha"},113{"tg","tgk","tgk"},114{"te","tel","tel"},115{"cy","cym","wel"},116{"ie","ile","ile"},117{"id","ind","ind"},118{"ta","tam","tam"},119{"ia","ina","ina"},120{"cs","ces","cze"},121{"yo","yor","yor"},122{"no","nor","nor"},123{"co","cos","cos"},124{"nl","nld","dut"},125{"yi","yid","yid"},126{"hy","hye","arm"},127{"sw","swa","swa"},128{"ne","nep","nep"},129{"sv","swe","swe"},130{"su","sun","sun"},131{"hu","hun","hun"},132{"na","nau","nau"},133{"sr","srp","scc"},134{"ca","cat","cat"},135{"sq","sqi","alb"},136{"hr","hrv","scr"},137{"so","som","som"},138{"sn","sna","sna"},139{"sm","smo","smo"},140{"sl","slv","slv"},141{"sk","slk","slo"},142{"si","sin","sin"},143{"hi","hin","hin"},144{"my","mya","bur"},145{"sd","snd","snd"},146{"he","heb","heb"},147{"sa","san","san"},148{"mt","mlt","mlt"},149{"ms","msa","may"},150{"ha","hau","hau"},151{"mr","mar","mar"},152{"br","bre","bre"},153{"mo","mol","mol"},154{"bo","bod","tib"},155{"mn","mon","mon"},156{"bn","ben","ben"},157{"ml","mal","mal"},158{"mk","mkd","mac"},159{"xh","xho","xho"},160{"mi","mri","mao"},161{"bi","bis","bis"},162{"bh","bih","bih"},163{"mg","mlg","mlg"},164{"bg","bul","bul"},165{"rw","kin","kin"},166{"be","bel","bel"},167{"ru","rus","rus"},168{"gu","guj","guj"},169{"ba","bak","bak"},170{"ro","ron","rum"},171{"rm","roh","roh"},172{"gn","grn","grn"},173{"az","aze","aze"},174{"ay","aym","aym"},175{"gd","gla","gla"},176{"lv","lav","lav"},177{"lt","lit","lit"},178{"ga","gle","gle"},179{"as","asm","asm"},180{"ar","ara","ara"},181{"wo","wol","wol"},182{"ln","lin","lin"},183{"am","amh","amh"},184{"fy","fry","fry"},185{"af","afr","afr"},186{"qu","que","que"},187{"ab","abk","abk"},188{"la","lat","lat"},189{"aa","aar","aar"},190{"fr","fra","fre"},191{"fo","fao","fao"},192{"fj","fij","fij"},193{"fi","fin","fin"},194{"ky","kir","kir"},195{"ku","kur","kur"},196{"fa","fas","per"},197{"ks","kas","kas"},198{"vo","vol","vol"},199{"ko","kor","kor"},200{"kn","kan","kan"},201{"kk","kaz","kaz"},202{"vi","vie","vie"},203};204205/*206The following code was used to generate the table above from the two ISO standards.207It matches the language names (not the codes) from both standards to associate208the two and three letter codes.209210private static final String ISO639 = "d:\\temp\\iso639.txt";211private static final String ISO6392 = "d:\\temp\\iso-639-2.txt";212private static void generateTables() {213try {214BufferedReader ISO639File = new BufferedReader(new FileReader(ISO639));215Hashtable i639 = new Hashtable();216for (String line = ISO639File.readLine(); line != null; line = ISO639File.readLine()) {217if (!line.startsWith("#")) {218final int ndx = line.indexOf(' ');219final String arg1 = line.substring(0, ndx);220final int ndx2 = line.indexOf(' ', ndx+1);221final String arg2 = line.substring(ndx+1, ndx2 < 0 ? line.length() : ndx2);222i639.put(arg1, arg2);223}224}225226BufferedReader ISO6392File = new BufferedReader(new FileReader(ISO6392));227Hashtable i6392 = new Hashtable();228for (String line = ISO6392File.readLine(); line != null; line = ISO6392File.readLine()) {229final int ndx = line.indexOf(' ');230final int ndx2 = line.indexOf(' ', ndx+1);231int ndx3 = line.indexOf(' ', ndx2+1);232if (ndx3 < 0) ndx3 = line.length();233final String arg1 = line.substring(0, ndx);234final String arg2 = line.substring(ndx+1, ndx2);235final String arg3 = line.substring(ndx2+1, ndx3);236i6392.put(arg3, new ISO6392Entry(arg1, arg2));237}238239Enumeration keys = i639.keys();240while (keys.hasMoreElements()) {241final Object key = keys.nextElement();242final Object name = i639.get(key);243final Object value = i6392.get(name);244245if (value != null) {246System.out.print("{");247System.out.print("\""+key+"\",");248System.out.print(value);249System.out.println("},");250}251}252} catch (Exception e) {253System.out.println(e);254}255}256257258private static final class ISO6392Entry {259public final String code;260public final String name;261public ISO6392Entry(String code, String name) {262this.code = code;263this.name = name;264}265public String toString() {266return "\""+code+"\",\""+name+"\"";267}268269}270*/271272}273274/*275276data from ftp://dkuug.dk on March 4, 1999277verified by http://www.triacom.com/archive/iso639-2.en.html278279iso 639 data280aa Afar281ab Abkhazian282af Afrikaans283am Amharic284ar Arabic285as Assamese286ay Aymara287az Azerbaijani288ba Bashkir289be Belarussian290bg Bulgarian291bh Bihari292bi Bislama293bn Bengali294bo Tibetan295br Breton296ca Catalan297co Corsican298cs Czech299cy Welsh300da Danish301de German302dz Bhutani303el Greek304en English305eo Esperanto306es Spanish307et Estonian308eu Basque309fa Persian310fi Finnish311fj Fijian312fo Faroese313fr French314fy Frisian315ga Irish316gd Gaelic317gl Galician318gn Guarani319gu Gujarati320ha Hausa321he Hebrew322hi Hindi323hr Croatian324hu Hungarian325hy Armenian326ia Interlingua327id Indonesian328ie Interlingue329ik Inupiak330is Icelandic331it Italian332iu Inuktitut333ja Japanese334jw Javanese335ka Georgian336kk Kazakh337kl Greenlandic338km Cambodian339kn Kannada340ko Korean341ks Kashmiri342ku Kurdish343ky Kirghiz344la Latin345ln Lingala346lo Laothian347lt Lithuanian348lv Latvian349mg Malagasy350mi Maori351mk Macedonian352ml Malayalam353mn Mongolian354mo Moldavian355mr Marathi356ms Malay357mt Maltese358my Burmese359na Nauru360ne Nepali361nl Dutch362no Norwegian363oc Occitan364om Oromo365or Oriya366pa Punjabi367pl Polish368ps Pushto369pt Portuguese370qu Quechua371rm Raeto-Romance372rn Kirundi373ro Romanian374ru Russian375rw Kinyarwanda376sa Sanskrit377sd Sindhi378sg Sangho379sh Croatian (Serbo)380si Sinhalese381sk Slovak382sl Slovenian383sm Samoan384sn Shona385so Somali386sq Albanian387sr Serbian388ss Siswati389st Sesotho390su Sundanese391sv Swedish392sw Swahili393ta Tamil394te Telugu395tg Tajik396th Thai397ti Tigrinya398tk Turkmen399tl Tagalog400tn Setswana401to Tonga402tr Turkish403ts Tsonga404tt Tatar405tw Twi406ug Uighur407uk Ukrainian408ur Urdu409uz Uzbek410vi Vietnamese411vo Volapuk412wo Wolof413xh Xhosa414yi Yiddish415yo Yoruba416za Zhuang417zh Chinese418zu Zulu419420ISO 639-2 data421422aar aar Afar423abk abk Abkhazian424ace ace Achinese425ach ach Acoli426ada ada Adangme427afa afa Afro-Asiatic (Other)428afh afh Afrihili429afr afr Afrikaans430aka aka Akan431akk akk Akkadian432ale ale Aleut433alg alg Algonquian languages434amh amh Amharic435ang ang English-Old (ca. 450-1100)436apa apa Apache languages437ara ara Arabic438arc arc Aramaic439arn arn Araucanian440arp arp Arapaho441art art Artificial (Other)442arw arw Arawak443asm asm Assamese444ath ath Athapascan languages445aus aus Australian languages446ava ava Avaric447ave ave Avestan448awa awa Awadhi449aym aym Aymara450aze aze Azerbaijani451bad bad Banda452bai bai Bamileke languages453bak bak Bashkir454bal bal Baluchi455bam bam Bambara456ban ban Balinese457bas bas Basa458bat bat Baltic (Other)459bej bej Beja460bel bel Belarussian461bem bem Bemba462ben ben Bengali463ber ber Berber (Other)464bho bho Bhojpuri465bih bih Bihari466bik bik Bikol467bin bin Bini468bis bis Bislama469bla bla Siksika470bnt bnt Bantu (Other)471bod tib Tibetan472bra bra Braj473bre bre Breton474btk btk Batak (Indonesia)475bua bua Buriat476bug bug Buginese477bul bul Bulgarian478cad cad Caddo479cai cai Central-American-Indian (Other)480car car Carib481cat cat Catalan482cau cau Caucasian (Other)483ceb ceb Cebuano484cel cel Celtic (Other)485ces cze Czech486cha cha Chamorro487chb chb Chibcha488che che Chechen489chg chg Chagatai490chk chk Chuukese491chm chm Mari492chn chn Chinook-jargon493cho cho Choctaw494chp chp Chipewyan495chr chr Cherokee496chu chu Church-Slavic497chv chv Chuvash498chy chy Cheyenne499cmc cmc Chamic languages500cop cop Coptic501cor cor Cornish502cos cos Corsican503cpe cpe Creoles-and-pidgins-English-based (Other)504cpf cpf Creoles-and-pidgins-French-based (Other)505cpp cpp Creoles-and-pidgins-Portuguese-based (Other)506cre cre Cree507crp crp Creoles-and-pidgins (Other)508cus cus Cushitic (Other)509cym wel Welsh510dak dak Dakota511dan dan Danish512day day Dayak513del del Delaware514den den Slave (Athapascan)515deu ger German516dgr dgr Dogrib517din din Dinka518div div Divehi519doi doi Dogri520dra dra Dravidian (Other)521dua dua Duala522dum dum Dutch-Middle (ca. 1050-1350)523dyu dyu Dyula524dzo dzo Dzongkha525efi efi Efik526egy egy Egyptian (Ancient)527eka eka Ekajuk528ell gre Greek Modern (post 1453)529elx elx Elamite530eng eng English531enm enm English-Middle (1100-1500)532epo epo Esperanto533est est Estonian534eus baq Basque535ewe ewe Ewe536ewo ewo Ewondo537fan fan Fang538fao fao Faroese539fas per Persian540fat fat Fanti541fij fij Fijian542fin fin Finnish543fiu fiu Finno-Ugrian (Other)544fon fon Fon545fra fre French546frm frm French-Middle (ca. 1400-1600)547fro fro French-Old (842-ca. 1400)548fry fry Frisian549ful ful Fulah550fur fur Friulian551gaa gaa Ga552gay gay Gayo553gba gba Gbaya554gem gem Germanic (Other)555gez gez Geez556gil gil Gilbertese557gdh gae Gaelic558gai iri Irish559glg glg Gallegan560glv glv Manx561gmh gmh German-Middle High (ca. 1050-1500)562goh goh German-Old High (ca. 750-1050)563gon gon Gondi564gor gor Gorontalo565got got Gothic566grb grb Grebo567grc grc Greek-Ancient (to 1453)568grn grn Guarani569guj guj Gujarati570gwi gwi Gwich'in571hai hai Haida572hau hau Hausa573haw haw Hawaiian574heb heb Hebrew575her her Herero576hil hil Hiligaynon577him him Himachali578hin hin Hindi579hit hit Hittite580hmn hmn Hmong581hmo hmo Hiri Motu582hrv scr Croatian583hun hun Hungarian584hup hup Hupa585hye arm Armenian586iba iba Iban587ibo ibo Igbo588ijo ijo Ijo589iku iku Inuktitut590ile ile Interlingue591ilo ilo Iloko592ina ina Interlingua (International Auxilary Language Association)593inc inc Indic (Other)594ind ind Indonesian595ine ine Indo-European (Other)596ipk ipk Inupiak597ira ira Iranian (Other)598iro iro Iroquoian languages599isl ice Icelandic600ita ita Italian601jaw jav Javanese602jpn jpn Japanese603jpr jpr Judeo-Persian604jrb jrb Judeo-Arabic605kaa kaa Kara-Kalpak606kab kab Kabyle607kac kac Kachin608kal kal Kalaallisut609kam kam Kamba610kan kan Kannada611kar kar Karen612kas kas Kashmiri613kat geo Georgian614kau kau Kanuri615kaw kaw Kawi616kaz kaz Kazakh617kha kha Khasi618khi khi Khoisan (Other)619khm khm Khmer620kho kho Khotanese621kik kik Kikuyu622kin kin Kinyarwanda623kir kir Kirghiz624kmb kmb Kimbundu625kok kok Konkani626kom kom Komi627kon kon Kongo628kor kor Korean629kos kos Kosraean630kpe kpe Kpelle631kro kro Kru632kru kru Kurukh633kua kua Kuanyama634kum kum Kumyk635kur kur Kurdish636kut kut Kutenai637lad lad Ladino638lah lah Lahnda639lam lam Lamba640lao lao Lao641lat lat Latin642lav lav Latvian643lez lez Lezghian644lin lin Lingala645lit lit Lithuanian646lol lol Mongo647loz loz Lozi648ltz ltz Letzeburgesch649lua lua Luba-Lulua650lub lub Luba-Katanga651lug lug Ganda652lui lui Luiseno653lun lun Lunda654luo luo Luo (Kenya and Tanzania)655lus lus Lushai656mad mad Madurese657mag mag Magahi658mah mah Marshall659mai mai Maithili660mak mak Makasar661mal mal Malayalam662man man Mandingo663map map Austronesian (Other)664mar mar Marathi665mas mas Masai666mdr mdr Mandar667men men Mende668mga mga Irish-Middle (900-1200)669mic mic Micmac670min min Minangkabau671mis mis Miscellaneous languages672mkd mac Macedonian673mkh mkh Mon-Khmer (Other)674mlg mlg Malagasy675mlt mlt Maltese676mni mni Manipuri677mno mno Manobo languages678moh moh Mohawk679mol mol Moldavian680mon mon Mongolian681mos mos Mossi682mri mao Maori683msa may Malay684mul mul Multiple languages685mun mun Munda languages686mus mus Creek687mwr mwr Marwari688mya bur Burmese689myn myn Mayan languages690nah nah Nahuatl691nai nai North American Indian (Other)692nau nau Nauru693nav nav Navajo694nbl nbl Ndebele, South695nde nde Ndebele, North696ndo ndo Ndonga697nep nep Nepali698new new Newari699nia nia Nias700nic nic Niger-Kordofanian (Other)701niu niu Niuean702nld dut Dutch703non non Norse, Old704nor nor Norwegian705nso nso Sohto, Northern706nub nub Nubian languages707nya nya Nyanja708nym nym Nyamwezi709nyn nyn Nyankole710nyo nyo Nyoro711nzi nzi Nzima712oci oci Occitan (post 1500)713oji oji Ojibwa714ori ori Oriya715orm orm Oromo716osa osa Osage717oss oss Ossetic718ota ota Turkish, Ottoman (1500-1928)719oto oto Otomian languages720paa paa Papuan (Other)721pag pag Pangasinan722pal pal Pahlavi723pam pam Pampanga724pan pan Panjabi725pap pap Papiamento726pau pau Palauan727peo peo Persian, Old (ca. 600-400 B.C.)728phi phi Philippine (Other)729phn phn Phoenician730pli pli Pali731pol pol Polish732pon pon Pohnpeian733por por Portuguese734pra pra Prakrit languages735pro pro Proven\u00E7al, Old (to 1500)736pus pus Pushto737qaa-qtz qaa-qtz Reserved for local use738que que Quechua739raj raj Rajasthani740rap rap Rapanui741rar rar Rarotongan742roa roa Romance (Other)743roh roh Raeto-Romance744rom rom Romany745ron rum Romanian746run run Rundi747rus rus Russian748sad sad Sandawe749sag sag Sango750sah sah Yakut751sai sai South American Indian (Other)752sal sal Salishan languages753sam sam Samaritan Aramaic754san san Sanskrit755sas sas Sasak756sat sat Santali757sco sco Scots758sel sel Selkup759sem sem Semitic (Other)760sga sga Irish-Old (to 900)761shn shn Shan762sid sid Sidamo763sin sin Sinhalese764sio sio Siouan languages765sit sit Sino-Tibetan (Other)766sla sla Slavic (Other)767slk slo Slovak768slv slv Slovenian769smi smi Sami languages770smo smo Samoan771sna sna Shona772snd snd Sindhi773snk snk Soninke774sog sog Sogdian775som som Somali776son son Songhai777sot sot Sotho Southern778spa spa Spanish779sqi alb Albanian780srd srd Sardinian781srp scc Serbian782srr srr Serer783ssa ssa Nilo-Saharan (Other)784ssw ssw Swati785suk suk Sukuma786sun sun Sundanese787sus sus Susu788sux sux Sumerian789swa swa Swahili790swe swe Swedish791syr syr Syriac792tah tah Tahitian793tai tai Tai (Other)794tam tam Tamil795tat tat Tatar796tel tel Telugu797tem tem Timne798ter ter Tereno799tet tet Tetum800tgk tgk Tajik801tgl tgl Tagalog802tha tha Thai803tig tig Tigre804tir tir Tigrinya805tiv tiv Tiv806tkl tkl Tokelau807tli tli Tlingit808tmh tmh Tamashek809tog tog Tonga (Nyasa)810ton ton Tonga (Tonga Islands)811tpi tpi Tok Pisin812tsi tsi Tsimshian813tsn tsn Tswana814tso tso Tsonga815tuk tuk Turkmen816tum tum Tumbuka817tur tur Turkish818tut tut Altaic819tvl tvl Tuvalu820twi twi Twi821tyv tyv Tuvinian822uga uga Ugaritic823uig uig Uighur824ukr ukr Ukrainian825umb umb Umbundu826und und Undetermined827urd urd Urdu828uzb uzb Uzbek829vai vai Vai830ven ven Venda831vie vie Vietnamese832vol vol Volapuk833vot vot Votic834wak wak Wakashan835wal wal Walamo836war war Waray837was was Washo838wen wen Sorbian839wol wol Wolof840xho xho Xhosa841yao yao Yao842yap yap Yapese843yid yid Yiddish844yor yor Yoruba845ypk ypk Yupik846zap zap Zapotec847zen zen Zenaga848zha zha Zhuang849zho chi Chinese850znd znd Zande851zul zul Zulu852zun zun Zuni853854*/855856857