Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/util/Locale/Bug4175998Test.java
38813 views
/*1* Copyright (c) 2007, 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*/22/*23@test24@summary test ISO639-2 language codes25@compile -encoding ascii -source 5 Bug4175998Test.java26@run main Bug4175998Test27@bug 417599828*/29/*30*31*32* (C) Copyright IBM Corp. 1998 - All Rights Reserved33*34* The original version of this source code and documentation is35* copyrighted and owned by IBM. These materials are provided36* under terms of a License Agreement between IBM and Sun.37* This technology is protected by multiple US and International38* patents. This notice and attribution to IBM may not be removed.39*40*/4142import java.util.*;43import java.io.*;4445/**46* Bug4175998Test verifies that the following bug has been fixed:47* Bug 4175998 - The java.util.Locale.getISO3Language() returns wrong result for a locale with48* language code 'ta'(Tamil).49*/50public class Bug4175998Test extends LocaleTestFmwk {51public static void main(String[] args) throws Exception {52new Bug4175998Test().run(args);53//generateTables(); //uncomment this to regenerate data tables54}5556public void testIt() throws Exception {57boolean bad = false;58for (int i = 0; i < CODES.length; i++) {59final String[] localeCodes = CODES[i];60final Locale l = new Locale(localeCodes[0], "");61final String iso3 = l.getISO3Language();62if (!iso3.equals(localeCodes[1]) /*&& !iso3.equals(localeCodes[2])*/) {63logln("Locale("+l+") returned bad ISO3 language code."64+" Got '"+iso3+"' instead of '"+localeCodes[1]+"'"/*+" or '"+localeCodes[2]+"'"*/);65bad = true;66}67}68if (bad) {69errln("Bad ISO3 language codes detected.");70}71}7273private static final String[][] CODES = {74{"pt","por","por"},75{"eu","eus","baq"},76{"ps","pus","pus"},77{"et","est","est"},78{"ka","kat","geo"},79{"es","spa","spa"},80{"eo","epo","epo"},81{"en","eng","eng"},82{"pl","pol","pol"},83{"el","ell","gre"},84{"uz","uzb","uzb"},85{"jv","jav","jav"},86{"ur","urd","urd"},87{"uk","ukr","ukr"},88{"ug","uig","uig"},89{"zu","zul","zul"},90{"ja","jpn","jpn"},91{"or","ori","ori"},92{"om","orm","orm"},93{"zh","zho","chi"},94{"tw","twi","twi"},95{"de","deu","ger"},96{"oc","oci","oci"},97{"za","zha","zha"},98{"tt","tat","tat"},99{"iu","iku","iku"},100{"ts","tso","tso"},101{"it","ita","ita"},102{"tr","tur","tur"},103{"da","dan","dan"},104{"is","isl","ice"},105{"to","ton","ton"},106{"tl","tgl","tgl"},107{"tk","tuk","tuk"},108{"ik","ipk","ipk"},109{"ti","tir","tir"},110{"th","tha","tha"},111{"tg","tgk","tgk"},112{"te","tel","tel"},113{"cy","cym","wel"},114{"ie","ile","ile"},115{"id","ind","ind"},116{"ta","tam","tam"},117{"ia","ina","ina"},118{"cs","ces","cze"},119{"yo","yor","yor"},120{"no","nor","nor"},121{"co","cos","cos"},122{"nl","nld","dut"},123{"yi","yid","yid"},124{"hy","hye","arm"},125{"sw","swa","swa"},126{"ne","nep","nep"},127{"sv","swe","swe"},128{"su","sun","sun"},129{"hu","hun","hun"},130{"na","nau","nau"},131{"sr","srp","scc"},132{"ca","cat","cat"},133{"sq","sqi","alb"},134{"hr","hrv","scr"},135{"so","som","som"},136{"sn","sna","sna"},137{"sm","smo","smo"},138{"sl","slv","slv"},139{"sk","slk","slo"},140{"si","sin","sin"},141{"hi","hin","hin"},142{"my","mya","bur"},143{"sd","snd","snd"},144{"he","heb","heb"},145{"sa","san","san"},146{"mt","mlt","mlt"},147{"ms","msa","may"},148{"ha","hau","hau"},149{"mr","mar","mar"},150{"br","bre","bre"},151{"mo","mol","mol"},152{"bo","bod","tib"},153{"mn","mon","mon"},154{"bn","ben","ben"},155{"ml","mal","mal"},156{"mk","mkd","mac"},157{"xh","xho","xho"},158{"mi","mri","mao"},159{"bi","bis","bis"},160{"bh","bih","bih"},161{"mg","mlg","mlg"},162{"bg","bul","bul"},163{"rw","kin","kin"},164{"be","bel","bel"},165{"ru","rus","rus"},166{"gu","guj","guj"},167{"ba","bak","bak"},168{"ro","ron","rum"},169{"rm","roh","roh"},170{"gn","grn","grn"},171{"az","aze","aze"},172{"ay","aym","aym"},173{"gd","gla","gla"},174{"lv","lav","lav"},175{"lt","lit","lit"},176{"ga","gle","gle"},177{"as","asm","asm"},178{"ar","ara","ara"},179{"wo","wol","wol"},180{"ln","lin","lin"},181{"am","amh","amh"},182{"fy","fry","fry"},183{"af","afr","afr"},184{"qu","que","que"},185{"ab","abk","abk"},186{"la","lat","lat"},187{"aa","aar","aar"},188{"fr","fra","fre"},189{"fo","fao","fao"},190{"fj","fij","fij"},191{"fi","fin","fin"},192{"ky","kir","kir"},193{"ku","kur","kur"},194{"fa","fas","per"},195{"ks","kas","kas"},196{"vo","vol","vol"},197{"ko","kor","kor"},198{"kn","kan","kan"},199{"kk","kaz","kaz"},200{"vi","vie","vie"},201};202203/*204The following code was used to generate the table above from the two ISO standards.205It matches the language names (not the codes) from both standards to associate206the two and three letter codes.207208private static final String ISO639 = "d:\\temp\\iso639.txt";209private static final String ISO6392 = "d:\\temp\\iso-639-2.txt";210private static void generateTables() {211try {212BufferedReader ISO639File = new BufferedReader(new FileReader(ISO639));213Hashtable i639 = new Hashtable();214for (String line = ISO639File.readLine(); line != null; line = ISO639File.readLine()) {215if (!line.startsWith("#")) {216final int ndx = line.indexOf(' ');217final String arg1 = line.substring(0, ndx);218final int ndx2 = line.indexOf(' ', ndx+1);219final String arg2 = line.substring(ndx+1, ndx2 < 0 ? line.length() : ndx2);220i639.put(arg1, arg2);221}222}223224BufferedReader ISO6392File = new BufferedReader(new FileReader(ISO6392));225Hashtable i6392 = new Hashtable();226for (String line = ISO6392File.readLine(); line != null; line = ISO6392File.readLine()) {227final int ndx = line.indexOf(' ');228final int ndx2 = line.indexOf(' ', ndx+1);229int ndx3 = line.indexOf(' ', ndx2+1);230if (ndx3 < 0) ndx3 = line.length();231final String arg1 = line.substring(0, ndx);232final String arg2 = line.substring(ndx+1, ndx2);233final String arg3 = line.substring(ndx2+1, ndx3);234i6392.put(arg3, new ISO6392Entry(arg1, arg2));235}236237Enumeration keys = i639.keys();238while (keys.hasMoreElements()) {239final Object key = keys.nextElement();240final Object name = i639.get(key);241final Object value = i6392.get(name);242243if (value != null) {244System.out.print("{");245System.out.print("\""+key+"\",");246System.out.print(value);247System.out.println("},");248}249}250} catch (Exception e) {251System.out.println(e);252}253}254255256private static final class ISO6392Entry {257public final String code;258public final String name;259public ISO6392Entry(String code, String name) {260this.code = code;261this.name = name;262}263public String toString() {264return "\""+code+"\",\""+name+"\"";265}266267}268*/269270}271272/*273274data from ftp://dkuug.dk on March 4, 1999275verified by http://www.triacom.com/archive/iso639-2.en.html276277iso 639 data278aa Afar279ab Abkhazian280af Afrikaans281am Amharic282ar Arabic283as Assamese284ay Aymara285az Azerbaijani286ba Bashkir287be Belarussian288bg Bulgarian289bh Bihari290bi Bislama291bn Bengali292bo Tibetan293br Breton294ca Catalan295co Corsican296cs Czech297cy Welsh298da Danish299de German300dz Bhutani301el Greek302en English303eo Esperanto304es Spanish305et Estonian306eu Basque307fa Persian308fi Finnish309fj Fijian310fo Faroese311fr French312fy Frisian313ga Irish314gd Gaelic315gl Galician316gn Guarani317gu Gujarati318ha Hausa319he Hebrew320hi Hindi321hr Croatian322hu Hungarian323hy Armenian324ia Interlingua325id Indonesian326ie Interlingue327ik Inupiak328is Icelandic329it Italian330iu Inuktitut331ja Japanese332jw Javanese333ka Georgian334kk Kazakh335kl Greenlandic336km Cambodian337kn Kannada338ko Korean339ks Kashmiri340ku Kurdish341ky Kirghiz342la Latin343ln Lingala344lo Laothian345lt Lithuanian346lv Latvian347mg Malagasy348mi Maori349mk Macedonian350ml Malayalam351mn Mongolian352mo Moldavian353mr Marathi354ms Malay355mt Maltese356my Burmese357na Nauru358ne Nepali359nl Dutch360no Norwegian361oc Occitan362om Oromo363or Oriya364pa Punjabi365pl Polish366ps Pushto367pt Portuguese368qu Quechua369rm Raeto-Romance370rn Kirundi371ro Romanian372ru Russian373rw Kinyarwanda374sa Sanskrit375sd Sindhi376sg Sangho377sh Croatian (Serbo)378si Sinhalese379sk Slovak380sl Slovenian381sm Samoan382sn Shona383so Somali384sq Albanian385sr Serbian386ss Siswati387st Sesotho388su Sundanese389sv Swedish390sw Swahili391ta Tamil392te Telugu393tg Tajik394th Thai395ti Tigrinya396tk Turkmen397tl Tagalog398tn Setswana399to Tonga400tr Turkish401ts Tsonga402tt Tatar403tw Twi404ug Uighur405uk Ukrainian406ur Urdu407uz Uzbek408vi Vietnamese409vo Volapuk410wo Wolof411xh Xhosa412yi Yiddish413yo Yoruba414za Zhuang415zh Chinese416zu Zulu417418ISO 639-2 data419420aar aar Afar421abk abk Abkhazian422ace ace Achinese423ach ach Acoli424ada ada Adangme425afa afa Afro-Asiatic (Other)426afh afh Afrihili427afr afr Afrikaans428aka aka Akan429akk akk Akkadian430ale ale Aleut431alg alg Algonquian languages432amh amh Amharic433ang ang English-Old (ca. 450-1100)434apa apa Apache languages435ara ara Arabic436arc arc Aramaic437arn arn Araucanian438arp arp Arapaho439art art Artificial (Other)440arw arw Arawak441asm asm Assamese442ath ath Athapascan languages443aus aus Australian languages444ava ava Avaric445ave ave Avestan446awa awa Awadhi447aym aym Aymara448aze aze Azerbaijani449bad bad Banda450bai bai Bamileke languages451bak bak Bashkir452bal bal Baluchi453bam bam Bambara454ban ban Balinese455bas bas Basa456bat bat Baltic (Other)457bej bej Beja458bel bel Belarussian459bem bem Bemba460ben ben Bengali461ber ber Berber (Other)462bho bho Bhojpuri463bih bih Bihari464bik bik Bikol465bin bin Bini466bis bis Bislama467bla bla Siksika468bnt bnt Bantu (Other)469bod tib Tibetan470bra bra Braj471bre bre Breton472btk btk Batak (Indonesia)473bua bua Buriat474bug bug Buginese475bul bul Bulgarian476cad cad Caddo477cai cai Central-American-Indian (Other)478car car Carib479cat cat Catalan480cau cau Caucasian (Other)481ceb ceb Cebuano482cel cel Celtic (Other)483ces cze Czech484cha cha Chamorro485chb chb Chibcha486che che Chechen487chg chg Chagatai488chk chk Chuukese489chm chm Mari490chn chn Chinook-jargon491cho cho Choctaw492chp chp Chipewyan493chr chr Cherokee494chu chu Church-Slavic495chv chv Chuvash496chy chy Cheyenne497cmc cmc Chamic languages498cop cop Coptic499cor cor Cornish500cos cos Corsican501cpe cpe Creoles-and-pidgins-English-based (Other)502cpf cpf Creoles-and-pidgins-French-based (Other)503cpp cpp Creoles-and-pidgins-Portuguese-based (Other)504cre cre Cree505crp crp Creoles-and-pidgins (Other)506cus cus Cushitic (Other)507cym wel Welsh508dak dak Dakota509dan dan Danish510day day Dayak511del del Delaware512den den Slave (Athapascan)513deu ger German514dgr dgr Dogrib515din din Dinka516div div Divehi517doi doi Dogri518dra dra Dravidian (Other)519dua dua Duala520dum dum Dutch-Middle (ca. 1050-1350)521dyu dyu Dyula522dzo dzo Dzongkha523efi efi Efik524egy egy Egyptian (Ancient)525eka eka Ekajuk526ell gre Greek Modern (post 1453)527elx elx Elamite528eng eng English529enm enm English-Middle (1100-1500)530epo epo Esperanto531est est Estonian532eus baq Basque533ewe ewe Ewe534ewo ewo Ewondo535fan fan Fang536fao fao Faroese537fas per Persian538fat fat Fanti539fij fij Fijian540fin fin Finnish541fiu fiu Finno-Ugrian (Other)542fon fon Fon543fra fre French544frm frm French-Middle (ca. 1400-1600)545fro fro French-Old (842-ca. 1400)546fry fry Frisian547ful ful Fulah548fur fur Friulian549gaa gaa Ga550gay gay Gayo551gba gba Gbaya552gem gem Germanic (Other)553gez gez Geez554gil gil Gilbertese555gdh gae Gaelic556gai iri Irish557glg glg Gallegan558glv glv Manx559gmh gmh German-Middle High (ca. 1050-1500)560goh goh German-Old High (ca. 750-1050)561gon gon Gondi562gor gor Gorontalo563got got Gothic564grb grb Grebo565grc grc Greek-Ancient (to 1453)566grn grn Guarani567guj guj Gujarati568gwi gwi Gwich'in569hai hai Haida570hau hau Hausa571haw haw Hawaiian572heb heb Hebrew573her her Herero574hil hil Hiligaynon575him him Himachali576hin hin Hindi577hit hit Hittite578hmn hmn Hmong579hmo hmo Hiri Motu580hrv scr Croatian581hun hun Hungarian582hup hup Hupa583hye arm Armenian584iba iba Iban585ibo ibo Igbo586ijo ijo Ijo587iku iku Inuktitut588ile ile Interlingue589ilo ilo Iloko590ina ina Interlingua (International Auxilary Language Association)591inc inc Indic (Other)592ind ind Indonesian593ine ine Indo-European (Other)594ipk ipk Inupiak595ira ira Iranian (Other)596iro iro Iroquoian languages597isl ice Icelandic598ita ita Italian599jaw jav Javanese600jpn jpn Japanese601jpr jpr Judeo-Persian602jrb jrb Judeo-Arabic603kaa kaa Kara-Kalpak604kab kab Kabyle605kac kac Kachin606kal kal Kalaallisut607kam kam Kamba608kan kan Kannada609kar kar Karen610kas kas Kashmiri611kat geo Georgian612kau kau Kanuri613kaw kaw Kawi614kaz kaz Kazakh615kha kha Khasi616khi khi Khoisan (Other)617khm khm Khmer618kho kho Khotanese619kik kik Kikuyu620kin kin Kinyarwanda621kir kir Kirghiz622kmb kmb Kimbundu623kok kok Konkani624kom kom Komi625kon kon Kongo626kor kor Korean627kos kos Kosraean628kpe kpe Kpelle629kro kro Kru630kru kru Kurukh631kua kua Kuanyama632kum kum Kumyk633kur kur Kurdish634kut kut Kutenai635lad lad Ladino636lah lah Lahnda637lam lam Lamba638lao lao Lao639lat lat Latin640lav lav Latvian641lez lez Lezghian642lin lin Lingala643lit lit Lithuanian644lol lol Mongo645loz loz Lozi646ltz ltz Letzeburgesch647lua lua Luba-Lulua648lub lub Luba-Katanga649lug lug Ganda650lui lui Luiseno651lun lun Lunda652luo luo Luo (Kenya and Tanzania)653lus lus Lushai654mad mad Madurese655mag mag Magahi656mah mah Marshall657mai mai Maithili658mak mak Makasar659mal mal Malayalam660man man Mandingo661map map Austronesian (Other)662mar mar Marathi663mas mas Masai664mdr mdr Mandar665men men Mende666mga mga Irish-Middle (900-1200)667mic mic Micmac668min min Minangkabau669mis mis Miscellaneous languages670mkd mac Macedonian671mkh mkh Mon-Khmer (Other)672mlg mlg Malagasy673mlt mlt Maltese674mni mni Manipuri675mno mno Manobo languages676moh moh Mohawk677mol mol Moldavian678mon mon Mongolian679mos mos Mossi680mri mao Maori681msa may Malay682mul mul Multiple languages683mun mun Munda languages684mus mus Creek685mwr mwr Marwari686mya bur Burmese687myn myn Mayan languages688nah nah Nahuatl689nai nai North American Indian (Other)690nau nau Nauru691nav nav Navajo692nbl nbl Ndebele, South693nde nde Ndebele, North694ndo ndo Ndonga695nep nep Nepali696new new Newari697nia nia Nias698nic nic Niger-Kordofanian (Other)699niu niu Niuean700nld dut Dutch701non non Norse, Old702nor nor Norwegian703nso nso Sohto, Northern704nub nub Nubian languages705nya nya Nyanja706nym nym Nyamwezi707nyn nyn Nyankole708nyo nyo Nyoro709nzi nzi Nzima710oci oci Occitan (post 1500)711oji oji Ojibwa712ori ori Oriya713orm orm Oromo714osa osa Osage715oss oss Ossetic716ota ota Turkish, Ottoman (1500-1928)717oto oto Otomian languages718paa paa Papuan (Other)719pag pag Pangasinan720pal pal Pahlavi721pam pam Pampanga722pan pan Panjabi723pap pap Papiamento724pau pau Palauan725peo peo Persian, Old (ca. 600-400 B.C.)726phi phi Philippine (Other)727phn phn Phoenician728pli pli Pali729pol pol Polish730pon pon Pohnpeian731por por Portuguese732pra pra Prakrit languages733pro pro Proven�al, Old (to 1500)734pus pus Pushto735qaa-qtz qaa-qtz Reserved for local use736que que Quechua737raj raj Rajasthani738rap rap Rapanui739rar rar Rarotongan740roa roa Romance (Other)741roh roh Raeto-Romance742rom rom Romany743ron rum Romanian744run run Rundi745rus rus Russian746sad sad Sandawe747sag sag Sango748sah sah Yakut749sai sai South American Indian (Other)750sal sal Salishan languages751sam sam Samaritan Aramaic752san san Sanskrit753sas sas Sasak754sat sat Santali755sco sco Scots756sel sel Selkup757sem sem Semitic (Other)758sga sga Irish-Old (to 900)759shn shn Shan760sid sid Sidamo761sin sin Sinhalese762sio sio Siouan languages763sit sit Sino-Tibetan (Other)764sla sla Slavic (Other)765slk slo Slovak766slv slv Slovenian767smi smi Sami languages768smo smo Samoan769sna sna Shona770snd snd Sindhi771snk snk Soninke772sog sog Sogdian773som som Somali774son son Songhai775sot sot Sotho Southern776spa spa Spanish777sqi alb Albanian778srd srd Sardinian779srp scc Serbian780srr srr Serer781ssa ssa Nilo-Saharan (Other)782ssw ssw Swati783suk suk Sukuma784sun sun Sundanese785sus sus Susu786sux sux Sumerian787swa swa Swahili788swe swe Swedish789syr syr Syriac790tah tah Tahitian791tai tai Tai (Other)792tam tam Tamil793tat tat Tatar794tel tel Telugu795tem tem Timne796ter ter Tereno797tet tet Tetum798tgk tgk Tajik799tgl tgl Tagalog800tha tha Thai801tig tig Tigre802tir tir Tigrinya803tiv tiv Tiv804tkl tkl Tokelau805tli tli Tlingit806tmh tmh Tamashek807tog tog Tonga (Nyasa)808ton ton Tonga (Tonga Islands)809tpi tpi Tok Pisin810tsi tsi Tsimshian811tsn tsn Tswana812tso tso Tsonga813tuk tuk Turkmen814tum tum Tumbuka815tur tur Turkish816tut tut Altaic817tvl tvl Tuvalu818twi twi Twi819tyv tyv Tuvinian820uga uga Ugaritic821uig uig Uighur822ukr ukr Ukrainian823umb umb Umbundu824und und Undetermined825urd urd Urdu826uzb uzb Uzbek827vai vai Vai828ven ven Venda829vie vie Vietnamese830vol vol Volapuk831vot vot Votic832wak wak Wakashan833wal wal Walamo834war war Waray835was was Washo836wen wen Sorbian837wol wol Wolof838xho xho Xhosa839yao yao Yao840yap yap Yapese841yid yid Yiddish842yor yor Yoruba843ypk ypk Yupik844zap zap Zapotec845zen zen Zenaga846zha zha Zhuang847zho chi Chinese848znd znd Zande849zul zul Zulu850zun zun Zuni851852*/853854855