| /* |
| ******************************************************************************* |
| * Copyright (C) 2008, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ******************************************************************************* |
| */ |
| package com.ibm.icu.dev.test.localespi; |
| |
| import java.util.Locale; |
| |
| import com.ibm.icu.dev.test.TestFmwk; |
| import com.ibm.icu.util.ULocale; |
| |
| public class LocaleNameTest extends TestFmwk { |
| public static void main(String[] args) throws Exception { |
| new LocaleNameTest().run(args); |
| } |
| |
| public void TestLanguageNames() { |
| Locale[] locales = Locale.getAvailableLocales(); |
| StringBuffer icuid = new StringBuffer(); |
| for (Locale inLocale : locales) { |
| if (TestUtil.isProblematicIBMLocale(inLocale)) { |
| logln("Skipped " + inLocale); |
| continue; |
| } |
| |
| ULocale inULocale = ULocale.forLocale(inLocale); |
| Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale); |
| for (Locale forLocale : locales) { |
| if (forLocale.getLanguage().length() == 0) { |
| continue; |
| } |
| icuid.setLength(0); |
| icuid.append(forLocale.getLanguage()); |
| String country = forLocale.getCountry(); |
| String variant = forLocale.getVariant(); |
| if (country.length() != 0) { |
| icuid.append("_"); |
| icuid.append(country); |
| } |
| if (variant.length() != 0) { |
| if (country.length() == 0) { |
| icuid.append("_"); |
| } |
| icuid.append("_"); |
| icuid.append(variant); |
| } |
| ULocale forULocale = new ULocale(icuid.toString()); |
| String icuname = ULocale.getDisplayLanguage(forULocale.getLanguage(), inULocale); |
| if (icuname.equals(forULocale.getLanguage()) || icuname.length() == 0) { |
| continue; |
| } |
| |
| String name = forLocale.getDisplayLanguage(inLocale); |
| if (TestUtil.isICUExtendedLocale(inLocale)) { |
| // The name should be taken from ICU |
| if (!name.equals(icuname)) { |
| errln("FAIL: Language name by ICU is " + icuname + ", but got " + name |
| + " for locale " + forLocale + " in locale " + inLocale); |
| } |
| } else { |
| if (!name.equals(icuname)) { |
| logln("INFO: Language name by JDK is " + name + ", but " + icuname + |
| " by ICU, for locale " + forLocale + " in locale " + inLocale); |
| } |
| // Try explicit ICU locale (xx_yy_ICU) |
| name = forLocale.getDisplayLanguage(inLocaleICU); |
| if (!name.equals(icuname)) { |
| errln("FAIL: Language name by ICU is " + icuname + ", but got " + name |
| + " for locale " + forLocale + " in locale " + inLocaleICU); |
| } |
| } |
| } |
| } |
| } |
| |
| public void TestCountryNames() { |
| Locale[] locales = Locale.getAvailableLocales(); |
| for (Locale inLocale : locales) { |
| if (TestUtil.isProblematicIBMLocale(inLocale)) { |
| logln("Skipped " + inLocale); |
| continue; |
| } |
| |
| ULocale inULocale = ULocale.forLocale(inLocale); |
| Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale); |
| for (Locale forLocale : locales) { |
| if (forLocale.getCountry().length() == 0) { |
| continue; |
| } |
| // ULocale#forLocale preserves country always |
| ULocale forULocale = ULocale.forLocale(forLocale); |
| String icuname = ULocale.getDisplayCountry(forULocale.getCountry(), inULocale); |
| if (icuname.equals(forULocale.getCountry()) || icuname.length() == 0) { |
| continue; |
| } |
| |
| String name = forLocale.getDisplayCountry(inLocale); |
| if (TestUtil.isICUExtendedLocale(inLocale)) { |
| // The name should be taken from ICU |
| if (!name.equals(icuname)) { |
| errln("FAIL: Country name by ICU is " + icuname + ", but got " + name |
| + " for locale " + forLocale + " in locale " + inLocale); |
| } |
| } else { |
| // The name might be taken from JDK |
| if (!name.equals(icuname)) { |
| logln("INFO: Country name by JDK is " + name + ", but " + icuname + |
| " in ICU, for locale " + forLocale + " in locale " + inLocale); |
| } |
| // Try explicit ICU locale (xx_yy_ICU) |
| name = forLocale.getDisplayCountry(inLocaleICU); |
| if (!name.equals(icuname)) { |
| errln("FAIL: Country name by ICU is " + icuname + ", but got " + name |
| + " for locale " + forLocale + " in locale " + inLocaleICU); |
| } |
| } |
| } |
| } |
| } |
| |
| public void TestVariantNames() { |
| Locale[] locales = Locale.getAvailableLocales(); |
| StringBuffer icuid = new StringBuffer(); |
| for (Locale inLocale : locales) { |
| if (TestUtil.isProblematicIBMLocale(inLocale)) { |
| logln("Skipped " + inLocale); |
| continue; |
| } |
| |
| ULocale inULocale = ULocale.forLocale(inLocale); |
| Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale); |
| for (Locale forLocale : locales) { |
| if (forLocale.getVariant().length() == 0) { |
| continue; |
| } |
| icuid.setLength(0); |
| icuid.append(forLocale.getLanguage()); |
| String country = forLocale.getCountry(); |
| String variant = forLocale.getVariant(); |
| if (country.length() != 0) { |
| icuid.append("_"); |
| icuid.append(country); |
| } |
| if (variant.length() != 0) { |
| if (country.length() == 0) { |
| icuid.append("_"); |
| } |
| icuid.append("_"); |
| icuid.append(variant); |
| } |
| ULocale forULocale = new ULocale(icuid.toString()); |
| String icuname = ULocale.getDisplayVariant(forULocale.getVariant(), inULocale); |
| if (icuname.equals(forULocale.getVariant()) || icuname.length() == 0) { |
| continue; |
| } |
| |
| String name = forLocale.getDisplayVariant(inLocale); |
| if (TestUtil.isICUExtendedLocale(inLocale)) { |
| // The name should be taken from ICU |
| if (!name.equals(icuname)) { |
| errln("FAIL: Variant name by ICU is " + icuname + ", but got " + name |
| + " for locale " + forLocale + " in locale " + inLocale); |
| } |
| } else { |
| if (!name.equals(icuname)) { |
| logln("INFO: Variant name by JDK is " + name + ", but " + icuname + |
| " in ICU, for locale " + forLocale + " in locale " + inLocale); |
| } |
| // Try explicit ICU locale (xx_yy_ICU) |
| name = forLocale.getDisplayVariant(inLocaleICU); |
| if (!name.equals(icuname)) { |
| errln("FAIL: Variant name by ICU is " + icuname + ", but got " + name |
| + " for locale " + forLocale + " in locale " + inLocaleICU); |
| } |
| } |
| } |
| } |
| } |
| } |