/* GENERATED SOURCE. DO NOT MODIFY. */ /* ******************************************************************************* * Copyright (C) 2003-2015, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* */ package android.icu.dev.test.util; import java.util.Arrays; import java.util.HashSet; import android.icu.dev.test.TestFmwk; import android.icu.impl.ICUResourceBundle; import android.icu.lang.UScript; import android.icu.text.UnicodeSet; import android.icu.text.UnicodeSetIterator; import android.icu.util.ICUException; import android.icu.util.LocaleData; import android.icu.util.ULocale; import org.junit.runner.RunWith; import android.icu.junit.IcuTestFmwkRunner; /** * @author ram * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ @RunWith(IcuTestFmwkRunner.class) public class LocaleDataTest extends TestFmwk{ public static void main(String[] args) throws Exception{ new LocaleDataTest().run(args); } private ULocale[] availableLocales = null; public LocaleDataTest(){ } protected void init(){ availableLocales = ICUResourceBundle.getAvailableULocales(); } public void TestPaperSize(){ for(int i = 0; i < availableLocales.length; i++){ ULocale locale = availableLocales[i]; LocaleData.PaperSize paperSize = LocaleData.getPaperSize(locale); // skip testing of "in" .. deprecated code for Indonesian String lang = locale.getLanguage(); if(lang.equals("in")){ continue; } ULocale fullLoc = ULocale.addLikelySubtags(locale); if(fullLoc.toString().indexOf("_BZ") >= 0 || fullLoc.toString().indexOf("_CA") >= 0 || fullLoc.toString().indexOf("_CL") >= 0 || fullLoc.toString().indexOf("_CO") >= 0 || fullLoc.toString().indexOf("_CR") >= 0 || fullLoc.toString().indexOf("_GT") >= 0 || fullLoc.toString().indexOf("_MX") >= 0 || fullLoc.toString().indexOf("_NI") >= 0 || fullLoc.toString().indexOf("_PA") >= 0 || fullLoc.toString().indexOf("_PH") >= 0 || fullLoc.toString().indexOf("_PR") >= 0 || fullLoc.toString().indexOf("_SV") >= 0 || fullLoc.toString().indexOf("_US") >= 0 || fullLoc.toString().indexOf("_VE") >= 0 ){ if(paperSize.getHeight()!= 279 || paperSize.getWidth() != 216 ){ errln("PaperSize did not return the expected value for locale "+ locale+ " Expected height: 279 width: 216."+ " Got height: "+paperSize.getHeight()+" width: "+paperSize.getWidth() ); }else{ logln("PaperSize returned the expected values for locale " + locale); } }else{ if(paperSize.getHeight()!= 297 || paperSize.getWidth() != 210 ){ errln("PaperSize did not return the expected value for locale "+ locale + " Expected height: 297 width: 210."+ " Got height: "+paperSize.getHeight() +" width: "+paperSize.getWidth() ); }else{ logln("PaperSize returned the expected values for locale " + locale); } } } } public void TestMeasurementSystem(){ for(int i=0; i= 0 || fullLoc.toString().indexOf("_MM") >= 0 || fullLoc.toString().indexOf("_LR") >= 0){ if(ms == LocaleData.MeasurementSystem.US){ logln("Got the expected measurement system for locale: " + locale); }else{ errln("Did not get the expected measurement system for locale: "+ locale); } } else if(fullLoc.toString().indexOf("_GB") >= 0){ if(ms == LocaleData.MeasurementSystem.UK){ logln("Got the expected measurement system for locale: " + locale); }else{ errln("Did not get the expected measurement system for locale: "+ locale); } }else{ if(ms == LocaleData.MeasurementSystem.SI){ logln("Got the expected measurement system for locale: " + locale); }else{ errln("Did not get the expected measurement system for locale: "+ locale); } } } } // Simple test case for checking exemplar character type coverage public void TestEnglishExemplarCharacters() { final char[] testChars = { 0x61, // standard 0xE1, // auxiliary 0x41, // index 0, // filler for deprecated currency exemplar 0x2D, // punctuation }; LocaleData ld = LocaleData.getInstance(ULocale.ENGLISH); for (int type = 0; type < LocaleData.ES_COUNT; type++) { UnicodeSet exSet = ld.getExemplarSet(0, type); if (exSet != null) { if (testChars[type] > 0 && !exSet.contains(testChars[type])) { errln("Character '" + testChars[type] + "' is not included in exemplar type " + type); } } } try { ld.getExemplarSet(0, LocaleData.ES_COUNT); // out of bounds value throw new ICUException("Test failure; should throw exception"); } catch (IllegalArgumentException e) { assertEquals("", "java.lang.ArrayIndexOutOfBoundsException", e.getCause().getClass().getName()); } } // Bundle together a UnicodeSet (of expemplars) and ScriptCode combination. // We keep a set of combinations that have already been tested, to // avoid repeated (time consuming) retesting of the same data. // Instances of this class must be well behaved as members of a set. static class ExemplarGroup { private int[] scs; private UnicodeSet set; ExemplarGroup(UnicodeSet s, int[] scriptCodes) { set = s; scs = scriptCodes; } public int hashCode() { int hash = 0; for (int i=0; i 0 && equalCount < availableLocales.length); } public void TestExemplarSet2(){ int equalCount = 0; HashSet testedExemplars = new HashSet(); for(int i=0; i 0 && equalCount < availableLocales.length * 2); } // Test case created for checking type coverage of static getExemplarSet method. // See #9785, #9794 and #9795 public void TestExemplarSetTypes() { final String[] testLocales = { "am", // No auxiliary / index exemplars as of ICU 50 "en", "th", // #9785 "foo", // Bogus locale }; final int[] testTypes = { LocaleData.ES_STANDARD, LocaleData.ES_AUXILIARY, LocaleData.ES_INDEX, LocaleData.ES_CURRENCY, LocaleData.ES_PUNCTUATION, }; final String[] testTypeNames = { "ES_STANDARD", "ES_AUXILIARY", "ES_INDEX", "ES_CURRENCY", "ES_PUNCTUATION", }; for (String locstr : testLocales) { ULocale loc = new ULocale(locstr); for (int i = 0; i < testTypes.length; i++) { try { UnicodeSet set = LocaleData.getExemplarSet(loc, 0, testTypes[i]); if (set == null) { // Not sure null is really OK (#9795) logln(loc + "(" + testTypeNames[i] + ") returned null"); } else if (set.isEmpty()) { // This is probably reasonable when data is absent logln(loc + "(" + testTypeNames[i] + ") returned an empty set"); } } catch (Exception e) { errln(loc + "(" + testTypeNames[i] + ") Exception:" + e.getMessage()); } } } } public void TestCoverage(){ LocaleData ld = LocaleData.getInstance(); boolean t = ld.getNoSubstitute(); ld.setNoSubstitute(t); assertEquals("LocaleData get/set NoSubstitute", t, ld.getNoSubstitute()); logln(ld.getDelimiter(LocaleData.QUOTATION_START)); logln(ld.getDelimiter(LocaleData.QUOTATION_END)); logln(ld.getDelimiter(LocaleData.ALT_QUOTATION_START)); logln(ld.getDelimiter(LocaleData.ALT_QUOTATION_END)); } public void TestFallback(){ LocaleData fr_FR = LocaleData.getInstance(ULocale.FRANCE); LocaleData fr_CH = LocaleData.getInstance(new ULocale("fr_CH")); // This better not crash when only some values are overridden assertEquals("Start quotes are not equal", fr_FR.getDelimiter(LocaleData.QUOTATION_START), fr_CH.getDelimiter(LocaleData.QUOTATION_START)); assertEquals("End quotes are not equals", fr_FR.getDelimiter(LocaleData.QUOTATION_END), fr_CH.getDelimiter(LocaleData.QUOTATION_END)); assertNotEquals("Alt start quotes are equal", fr_FR.getDelimiter(LocaleData.ALT_QUOTATION_START), fr_CH.getDelimiter(LocaleData.ALT_QUOTATION_START)); assertNotEquals("Alt end quotes are equals", fr_FR.getDelimiter(LocaleData.ALT_QUOTATION_END), fr_CH.getDelimiter(LocaleData.ALT_QUOTATION_END)); } public void TestLocaleDisplayPattern(){ ULocale locale = ULocale.ENGLISH; LocaleData ld = LocaleData.getInstance(locale); String pattern = ld.getLocaleDisplayPattern(); String separator = ld.getLocaleSeparator(); logln("LocaleDisplayPattern for locale " + locale + ": " + pattern); if (!pattern.equals("{0} ({1})")) { errln("Unexpected LocaleDisplayPattern for locale: "+ locale); } logln("LocaleSeparator for locale " + locale + ": " + separator); if (!separator.equals(", ")) { errln("Unexpected LocaleSeparator for locale: "+ locale); } locale = ULocale.CHINESE; ld = LocaleData.getInstance(locale); pattern = ld.getLocaleDisplayPattern(); separator = ld.getLocaleSeparator(); logln("LocaleDisplayPattern for locale " + locale + ": " + pattern); if (!pattern.equals("{0}\uFF08{1}\uFF09")) { errln("Unexpected LocaleDisplayPattern for locale: "+ locale); } logln("LocaleSeparator for locale " + locale + ": " + separator); if (!separator.equals("\u3001")) { errln("Unexpected LocaleSeparator for locale: "+ locale); } for(int i = 0; i < availableLocales.length; i++){ locale = availableLocales[i]; ld = LocaleData.getInstance(locale); logln(locale.toString() + " LocaleDisplayPattern:" + ld.getLocaleDisplayPattern()); logln(locale.toString() + " LocaleSeparator:" + ld.getLocaleSeparator()); } } }