1aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* GENERATED SOURCE. DO NOT MODIFY. */ 2aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* 3aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ******************************************************************************* 4aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Copyright (C) 2003-2015, International Business Machines Corporation and * 5aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * others. All Rights Reserved. * 6aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ******************************************************************************* 7aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 8aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpackage android.icu.dev.test.util; 9aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 10aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport java.util.Arrays; 11aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport java.util.HashSet; 12aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 13aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.dev.test.TestFmwk; 14aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.impl.ICUResourceBundle; 15aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.lang.UScript; 16aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.UnicodeSet; 17aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.text.UnicodeSetIterator; 18aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.util.ICUException; 19aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.util.LocaleData; 20aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport android.icu.util.ULocale; 213a45e58d9461ee00f295ca8a6a29ef0860559e7ePaul Duffinimport org.junit.runner.RunWith; 223a45e58d9461ee00f295ca8a6a29ef0860559e7ePaul Duffinimport android.icu.junit.IcuTestFmwkRunner; 23aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 24aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/** 25aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * @author ram 26aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * 27aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * To change the template for this generated type comment go to 28aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Window>Preferences>Java>Code Generation>Code and Comments 29aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 303a45e58d9461ee00f295ca8a6a29ef0860559e7ePaul Duffin@RunWith(IcuTestFmwkRunner.class) 31aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpublic class LocaleDataTest extends TestFmwk{ 32aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 33aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public static void main(String[] args) throws Exception{ 34aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin new LocaleDataTest().run(args); 35aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 36aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 37aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin private ULocale[] availableLocales = null; 38aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 39aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public LocaleDataTest(){ 40aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 41aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin protected void init(){ 42aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin availableLocales = ICUResourceBundle.getAvailableULocales(); 43aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 44aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestPaperSize(){ 45aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int i = 0; i < availableLocales.length; i++){ 46aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ULocale locale = availableLocales[i]; 47aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData.PaperSize paperSize = LocaleData.getPaperSize(locale); 48aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // skip testing of "in" .. deprecated code for Indonesian 49aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String lang = locale.getLanguage(); 50aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(lang.equals("in")){ 51aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin continue; 52aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 53aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ULocale fullLoc = ULocale.addLikelySubtags(locale); 54aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(fullLoc.toString().indexOf("_BZ") >= 0 || fullLoc.toString().indexOf("_CA") >= 0 || 55aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin fullLoc.toString().indexOf("_CL") >= 0 || fullLoc.toString().indexOf("_CO") >= 0 || 56aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin fullLoc.toString().indexOf("_CR") >= 0 || fullLoc.toString().indexOf("_GT") >= 0 || 57aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin fullLoc.toString().indexOf("_MX") >= 0 || fullLoc.toString().indexOf("_NI") >= 0 || 58aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin fullLoc.toString().indexOf("_PA") >= 0 || fullLoc.toString().indexOf("_PH") >= 0 || 59aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin fullLoc.toString().indexOf("_PR") >= 0 || fullLoc.toString().indexOf("_SV") >= 0 || 60aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin fullLoc.toString().indexOf("_US") >= 0 || fullLoc.toString().indexOf("_VE") >= 0 ){ 61aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(paperSize.getHeight()!= 279 || paperSize.getWidth() != 216 ){ 62aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("PaperSize did not return the expected value for locale "+ locale+ 63aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin " Expected height: 279 width: 216."+ 64aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin " Got height: "+paperSize.getHeight()+" width: "+paperSize.getWidth() 65aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ); 66aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }else{ 67aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("PaperSize returned the expected values for locale " + locale); 68aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 69aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }else{ 70aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(paperSize.getHeight()!= 297 || paperSize.getWidth() != 210 ){ 71aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("PaperSize did not return the expected value for locale "+ locale + 72aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin " Expected height: 297 width: 210."+ 73aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin " Got height: "+paperSize.getHeight() +" width: "+paperSize.getWidth() 74aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ); 75aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }else{ 76aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("PaperSize returned the expected values for locale " + locale); 77aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 78aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 79aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 80aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 81aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestMeasurementSystem(){ 82aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int i=0; i<availableLocales.length; i++){ 83aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ULocale locale = availableLocales[i]; 84aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData.MeasurementSystem ms = LocaleData.getMeasurementSystem(locale); 85aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // skip testing of "in" .. deprecated code for Indonesian 86aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String lang = locale.getLanguage(); 87aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(lang.equals("in")){ 88aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin continue; 89aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 90aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ULocale fullLoc = ULocale.addLikelySubtags(locale); 91aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(fullLoc.toString().indexOf("_US") >= 0 || fullLoc.toString().indexOf("_MM") >= 0 || fullLoc.toString().indexOf("_LR") >= 0){ 92aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(ms == LocaleData.MeasurementSystem.US){ 93aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Got the expected measurement system for locale: " + locale); 94aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }else{ 95aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Did not get the expected measurement system for locale: "+ locale); 96aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 97aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if(fullLoc.toString().indexOf("_GB") >= 0){ 98aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(ms == LocaleData.MeasurementSystem.UK){ 99aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Got the expected measurement system for locale: " + locale); 100aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }else{ 101aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Did not get the expected measurement system for locale: "+ locale); 102aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 103aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }else{ 104aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(ms == LocaleData.MeasurementSystem.SI){ 105aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("Got the expected measurement system for locale: " + locale); 106aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }else{ 107aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Did not get the expected measurement system for locale: "+ locale); 108aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 109aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 110aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 111aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 112aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 113aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // Simple test case for checking exemplar character type coverage 114aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestEnglishExemplarCharacters() { 115aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin final char[] testChars = { 116aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 0x61, // standard 117aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 0xE1, // auxiliary 118aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 0x41, // index 119aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 0, // filler for deprecated currency exemplar 120aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 0x2D, // punctuation 121aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }; 122aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData ld = LocaleData.getInstance(ULocale.ENGLISH); 123aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int type = 0; type < LocaleData.ES_COUNT; type++) { 124aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSet exSet = ld.getExemplarSet(0, type); 125aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (exSet != null) { 126aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (testChars[type] > 0 && !exSet.contains(testChars[type])) { 127aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Character '" + testChars[type] + "' is not included in exemplar type " + type); 128aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 129aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 130aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 131aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 132aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ld.getExemplarSet(0, LocaleData.ES_COUNT); // out of bounds value 133aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin throw new ICUException("Test failure; should throw exception"); 134aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (IllegalArgumentException e) { 135aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("", "java.lang.ArrayIndexOutOfBoundsException", e.getCause().getClass().getName()); 136aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 137aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 138aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 139aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 140aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // Bundle together a UnicodeSet (of expemplars) and ScriptCode combination. 141aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // We keep a set of combinations that have already been tested, to 142aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // avoid repeated (time consuming) retesting of the same data. 143aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // Instances of this class must be well behaved as members of a set. 144aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin static class ExemplarGroup { 145aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin private int[] scs; 146aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin private UnicodeSet set; 147aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 148aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ExemplarGroup(UnicodeSet s, int[] scriptCodes) { 149aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin set = s; 150aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin scs = scriptCodes; 151aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 152aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public int hashCode() { 153aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int hash = 0; 154aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int i=0; i<scs.length && i<4; i++) { 155aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin hash = (hash<<8)+scs[i]; 156aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 157aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return hash; 158aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 159aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public boolean equals(Object other) { 160aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ExemplarGroup o = (ExemplarGroup)other; 161aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin boolean r = Arrays.equals(scs, o.scs) && 162aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin set.equals(o.set); 163aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return r; 164aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 165aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 166aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 167aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestExemplarSet(){ 168aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin HashSet testedExemplars = new HashSet(); 169aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int equalCount = 0; 170aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int i=0; i<availableLocales.length; i++){ 171aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ULocale locale = availableLocales[i]; 172aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int[] scriptCodes = UScript.getCode(locale); 173aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (scriptCodes==null) { 174aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // I hate the JDK's solution for deprecated language codes. 175aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // Why does the Locale constructor change the string I passed to it ? 176aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // such a broken hack !!!!! 177aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // so in effect I can never test the script code for Indonesian :( 178aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(locale.toString().indexOf(("in"))<0){ 179aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("UScript.getCode returned null for locale: " + locale); 180aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 181aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin continue; 182aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 183aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSet exemplarSets[] = new UnicodeSet[2]; 184aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int k=0; k<2; ++k) { // for casing option in (normal, caseInsensitive) 185aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int option = (k==0) ? 0 : UnicodeSet.CASE; 186aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSet exemplarSet = LocaleData.getExemplarSet(locale, option); 187aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin exemplarSets[k] = exemplarSet; 188aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ExemplarGroup exGrp = new ExemplarGroup(exemplarSet, scriptCodes); 189aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!testedExemplars.contains(exGrp)) { 190aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin testedExemplars.add(exGrp); 191aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSet[] sets = new UnicodeSet[scriptCodes.length]; 192aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // create the UnicodeSets for the script 193aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int j=0; j < scriptCodes.length; j++){ 194aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin sets[j] = new UnicodeSet("[:" + UScript.getShortName(scriptCodes[j]) + ":]"); 195aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 196aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin boolean existsInScript = false; 197aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSetIterator iter = new UnicodeSetIterator(exemplarSet); 198aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // iterate over the 199aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin while (!existsInScript && iter.nextRange()) { 200aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (iter.codepoint != UnicodeSetIterator.IS_STRING) { 201aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int j=0; j<sets.length; j++){ 202aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(sets[j].contains(iter.codepoint, iter.codepointEnd)){ 203aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin existsInScript = true; 204aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin break; 205aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 206aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 207aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else { 208aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int j=0; j<sets.length; j++){ 209aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(sets[j].contains(iter.string)){ 210aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin existsInScript = true; 211aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin break; 212aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 213aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 214aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 215aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 216aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(existsInScript == false){ 217aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ExemplarSet containment failed for locale : "+ locale); 218aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 219aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 220aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 221aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // This is expensive, so only do it if it will be visible 222aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (isVerbose()) { 223aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(locale.toString() + " exemplar " + exemplarSets[0]); 224aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(locale.toString() + " exemplar(case-folded) " + exemplarSets[1]); 225aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 226aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(locale.toString() + " case-folded is a superset", 227aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin exemplarSets[1].containsAll(exemplarSets[0])); 228aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (exemplarSets[1].equals(exemplarSets[0])) { 229aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ++equalCount; 230aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 231aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 232aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // Note: The case-folded set should sometimes be a strict superset 233aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // and sometimes be equal. 234aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue("case-folded is sometimes a strict superset, and sometimes equal", 235aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin equalCount > 0 && equalCount < availableLocales.length); 236aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 237aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestExemplarSet2(){ 238aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int equalCount = 0; 239aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin HashSet testedExemplars = new HashSet(); 240aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int i=0; i<availableLocales.length; i++){ 241aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ULocale locale = availableLocales[i]; 242aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData ld = LocaleData.getInstance(locale); 243aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int[] scriptCodes = UScript.getCode(locale); 244aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (scriptCodes==null) { 245aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(locale.toString().indexOf(("in"))<0){ 246aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("UScript.getCode returned null for locale: "+ locale); 247aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 248aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin continue; 249aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 250aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSet exemplarSets[] = new UnicodeSet[4]; 251aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 252aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int k=0; k<2; ++k) { // for casing option in (normal, uncased) 253aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int option = (k==0) ? 0 : UnicodeSet.CASE; 254aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int h=0; h<2; ++h){ 255aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int type = (h==0) ? LocaleData.ES_STANDARD : LocaleData.ES_AUXILIARY; 256aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 257aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSet exemplarSet = ld.getExemplarSet(option, type); 258aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin exemplarSets[k*2+h] = exemplarSet; 259aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 260aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ExemplarGroup exGrp = new ExemplarGroup(exemplarSet, scriptCodes); 261aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!testedExemplars.contains(exGrp)) { 262aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin testedExemplars.add(exGrp); 263aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSet[] sets = new UnicodeSet[scriptCodes.length]; 264aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // create the UnicodeSets for the script 265aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int j=0; j < scriptCodes.length; j++){ 266aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin sets[j] = new UnicodeSet("[:" + UScript.getShortName(scriptCodes[j]) + ":]"); 267aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 268aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin boolean existsInScript = false; 269aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSetIterator iter = new UnicodeSetIterator(exemplarSet); 270aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // iterate over the 271aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin while (!existsInScript && iter.nextRange()) { 272aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (iter.codepoint != UnicodeSetIterator.IS_STRING) { 273aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int j=0; j<sets.length; j++){ 274aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(sets[j].contains(iter.codepoint, iter.codepointEnd)){ 275aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin existsInScript = true; 276aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin break; 277aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 278aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 279aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else { 280aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int j=0; j<sets.length; j++){ 281aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(sets[j].contains(iter.string)){ 282aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin existsInScript = true; 283aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin break; 284aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 285aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 286aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 287aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 288aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // TODO: How to verify LocaleData.ES_AUXILIARY ??? 289aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if(existsInScript == false && h == 0){ 290aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("ExemplarSet containment failed for locale,option,type : "+ locale + ", " + option + ", " + type); 291aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 292aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 293aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 294aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 295aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // This is expensive, so only do it if it will be visible 296aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (isVerbose()) { 297aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(locale.toString() + " exemplar(ES_STANDARD)" + exemplarSets[0]); 298aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(locale.toString() + " exemplar(ES_AUXILIARY) " + exemplarSets[1]); 299aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(locale.toString() + " exemplar(case-folded,ES_STANDARD) " + exemplarSets[2]); 300aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(locale.toString() + " exemplar(case-folded,ES_AUXILIARY) " + exemplarSets[3]); 301aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 302aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(locale.toString() + " case-folded is a superset", 303aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin exemplarSets[2].containsAll(exemplarSets[0])); 304aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue(locale.toString() + " case-folded is a superset", 305aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin exemplarSets[3].containsAll(exemplarSets[1])); 306aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (exemplarSets[2].equals(exemplarSets[0])) { 307aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ++equalCount; 308aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 309aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (exemplarSets[3].equals(exemplarSets[1])) { 310aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ++equalCount; 311aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 312aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 313aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // Note: The case-folded set should sometimes be a strict superset 314aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // and sometimes be equal. 315aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertTrue("case-folded is sometimes a strict superset, and sometimes equal", 316aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin equalCount > 0 && equalCount < availableLocales.length * 2); 317aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 318aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 319aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // Test case created for checking type coverage of static getExemplarSet method. 320aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // See #9785, #9794 and #9795 321aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestExemplarSetTypes() { 322aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin final String[] testLocales = { 323aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "am", // No auxiliary / index exemplars as of ICU 50 324aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "en", 325aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "th", // #9785 326aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "foo", // Bogus locale 327aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }; 328aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 329aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin final int[] testTypes = { 330aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData.ES_STANDARD, 331aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData.ES_AUXILIARY, 332aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData.ES_INDEX, 333aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData.ES_CURRENCY, 334aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData.ES_PUNCTUATION, 335aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }; 336aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 337aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin final String[] testTypeNames = { 338aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "ES_STANDARD", 339aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "ES_AUXILIARY", 340aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "ES_INDEX", 341aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "ES_CURRENCY", 342aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin "ES_PUNCTUATION", 343aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin }; 344aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 345aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (String locstr : testLocales) { 346aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ULocale loc = new ULocale(locstr); 347aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int i = 0; i < testTypes.length; i++) { 348aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 349aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin UnicodeSet set = LocaleData.getExemplarSet(loc, 0, testTypes[i]); 350aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (set == null) { 351aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // Not sure null is really OK (#9795) 352aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(loc + "(" + testTypeNames[i] + ") returned null"); 353aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } else if (set.isEmpty()) { 354aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // This is probably reasonable when data is absent 355aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(loc + "(" + testTypeNames[i] + ") returned an empty set"); 356aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 357aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } catch (Exception e) { 358aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln(loc + "(" + testTypeNames[i] + ") Exception:" + e.getMessage()); 359aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 360aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 361aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 362aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 363aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 364aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestCoverage(){ 365aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData ld = LocaleData.getInstance(); 366aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin boolean t = ld.getNoSubstitute(); 367aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ld.setNoSubstitute(t); 368aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("LocaleData get/set NoSubstitute", 369aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin t, 370aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ld.getNoSubstitute()); 371aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 372aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(ld.getDelimiter(LocaleData.QUOTATION_START)); 373aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(ld.getDelimiter(LocaleData.QUOTATION_END)); 374aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(ld.getDelimiter(LocaleData.ALT_QUOTATION_START)); 375aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(ld.getDelimiter(LocaleData.ALT_QUOTATION_END)); 376aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 377aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 378aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestFallback(){ 379aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData fr_FR = LocaleData.getInstance(ULocale.FRANCE); 380aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData fr_CH = LocaleData.getInstance(new ULocale("fr_CH")); 381aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 382aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin // This better not crash when only some values are overridden 383aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("Start quotes are not equal", fr_FR.getDelimiter(LocaleData.QUOTATION_START), fr_CH.getDelimiter(LocaleData.QUOTATION_START)); 384aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertEquals("End quotes are not equals", fr_FR.getDelimiter(LocaleData.QUOTATION_END), fr_CH.getDelimiter(LocaleData.QUOTATION_END)); 385aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertNotEquals("Alt start quotes are equal", fr_FR.getDelimiter(LocaleData.ALT_QUOTATION_START), fr_CH.getDelimiter(LocaleData.ALT_QUOTATION_START)); 386aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin assertNotEquals("Alt end quotes are equals", fr_FR.getDelimiter(LocaleData.ALT_QUOTATION_END), fr_CH.getDelimiter(LocaleData.ALT_QUOTATION_END)); 387aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 388aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 389aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public void TestLocaleDisplayPattern(){ 390aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ULocale locale = ULocale.ENGLISH; 391aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin LocaleData ld = LocaleData.getInstance(locale); 392aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String pattern = ld.getLocaleDisplayPattern(); 393aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String separator = ld.getLocaleSeparator(); 394aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("LocaleDisplayPattern for locale " + locale + ": " + pattern); 395aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!pattern.equals("{0} ({1})")) { 396aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Unexpected LocaleDisplayPattern for locale: "+ locale); 397aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 398aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("LocaleSeparator for locale " + locale + ": " + separator); 399aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!separator.equals(", ")) { 400aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Unexpected LocaleSeparator for locale: "+ locale); 401aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 402aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 403aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin locale = ULocale.CHINESE; 404aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ld = LocaleData.getInstance(locale); 405aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pattern = ld.getLocaleDisplayPattern(); 406aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin separator = ld.getLocaleSeparator(); 407aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("LocaleDisplayPattern for locale " + locale + ": " + pattern); 408aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!pattern.equals("{0}\uFF08{1}\uFF09")) { 409aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Unexpected LocaleDisplayPattern for locale: "+ locale); 410aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 411aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln("LocaleSeparator for locale " + locale + ": " + separator); 412aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!separator.equals("\u3001")) { 413aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin errln("Unexpected LocaleSeparator for locale: "+ locale); 414aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 415aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 416aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for(int i = 0; i < availableLocales.length; i++){ 417aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin locale = availableLocales[i]; 418aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ld = LocaleData.getInstance(locale); 419aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(locale.toString() + " LocaleDisplayPattern:" + ld.getLocaleDisplayPattern()); 420aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin logln(locale.toString() + " LocaleSeparator:" + ld.getLocaleSeparator()); 421aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 422aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 423aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin} 424