From fc6eab0cd74ab260f0109cc18886057b117374ff Mon Sep 17 00:00:00 2001 From: Yoshito Umaoka Date: Wed, 4 Jun 2008 03:58:31 +0000 Subject: [PATCH] ICU-5976 Updated build files and project files. Added TestGetInstance for all service provider classes. Some bug fixes. X-SVN-Rev: 24104 --- .gitattributes | 4 +- icu4j/localespi/.classpath | 4 +- .../localespi_jar.launch | 23 ++++ icu4j/localespi/.project | 10 ++ .../org.eclipse.core.resources.prefs | 3 + .../.settings/org.eclipse.jdt.core.prefs | 10 +- .../.settings/org.eclipse.jdt.ui.prefs | 9 +- icu4j/localespi/build.xml | 78 +++++++++++--- ...ICU => java.util.spi.TimeZoneNameProvider} | 0 .../dev/test/localespi/BreakIteratorTest.java | 87 +++++++++++++++ .../icu/dev/test/localespi/CollatorTest.java | 39 +++++++ .../test/localespi/DateFormatSymbolsTest.java | 39 +++++++ .../dev/test/localespi/DateFormatTest.java | 63 +++++++++++ .../localespi/DecimalFormatSymbolsTest.java | 40 +++++++ .../dev/test/localespi/NumberFormatTest.java | 102 ++++++++++++++++++ .../ibm/icu/dev/test/localespi/TestAll.java | 27 +++++ .../ibm/icu/dev/test/localespi/TestUtil.java | 74 +++++++++++++ ...ider.java => TimeZoneNameProviderICU.java} | 2 +- 18 files changed, 591 insertions(+), 23 deletions(-) create mode 100644 icu4j/localespi/.externalToolBuilders/localespi_jar.launch create mode 100644 icu4j/localespi/.settings/org.eclipse.core.resources.prefs rename icu4j/localespi/src/META-INF/services/{java.util.spi.TimeZoneNameProviderICU => java.util.spi.TimeZoneNameProvider} (100%) create mode 100644 icu4j/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java create mode 100644 icu4j/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java create mode 100644 icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java create mode 100644 icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java create mode 100644 icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java create mode 100644 icu4j/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java create mode 100644 icu4j/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java create mode 100644 icu4j/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java rename icu4j/localespi/src/com/ibm/icu/impl/javaspi/util/{TimeZoneNameProvider.java => TimeZoneNameProviderICU.java} (94%) diff --git a/.gitattributes b/.gitattributes index 6a588eeccd3..3204e360378 100644 --- a/.gitattributes +++ b/.gitattributes @@ -84,7 +84,9 @@ icu4j/eclipseProjectMisc/initSrc.launch -text icu4j/eclipseProjectMisc/normSrc.launch -text icu4j/ee.foundation.jar -text icu4j/localespi/.classpath -text +icu4j/localespi/.externalToolBuilders/localespi_jar.launch -text icu4j/localespi/.project -text +icu4j/localespi/.settings/org.eclipse.core.resources.prefs -text icu4j/localespi/.settings/org.eclipse.jdt.core.prefs -text icu4j/localespi/.settings/org.eclipse.jdt.ui.prefs -text icu4j/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider -text @@ -95,7 +97,7 @@ icu4j/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider icu4j/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider -text icu4j/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider -text icu4j/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider -text -icu4j/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProviderICU -text +icu4j/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider -text icu4j/localespi/src/com/ibm/icu/impl/javaspi/ICUProvider.properties -text icu4j/preprocessor.txt -text icu4j/src/com/ibm/icu/ICUConfig.properties -text diff --git a/icu4j/localespi/.classpath b/icu4j/localespi/.classpath index 97f96540eba..9b307679968 100644 --- a/icu4j/localespi/.classpath +++ b/icu4j/localespi/.classpath @@ -1,7 +1,7 @@ - - + + diff --git a/icu4j/localespi/.externalToolBuilders/localespi_jar.launch b/icu4j/localespi/.externalToolBuilders/localespi_jar.launch new file mode 100644 index 00000000000..05caed41246 --- /dev/null +++ b/icu4j/localespi/.externalToolBuilders/localespi_jar.launch @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/icu4j/localespi/.project b/icu4j/localespi/.project index 2e177ee9705..f754268daa1 100644 --- a/icu4j/localespi/.project +++ b/icu4j/localespi/.project @@ -10,6 +10,16 @@ + + org.eclipse.ui.externaltools.ExternalToolBuilder + auto,full,incremental, + + + LaunchConfigHandle + <project>/.externalToolBuilders/localespi_jar.launch + + + org.eclipse.jdt.core.javanature diff --git a/icu4j/localespi/.settings/org.eclipse.core.resources.prefs b/icu4j/localespi/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000000..5dcfaac5761 --- /dev/null +++ b/icu4j/localespi/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +#Tue Jun 03 11:37:05 EDT 2008 +eclipse.preferences.version=1 +encoding/=US-ASCII diff --git a/icu4j/localespi/.settings/org.eclipse.jdt.core.prefs b/icu4j/localespi/.settings/org.eclipse.jdt.core.prefs index 16f6a5f465e..f814717c741 100644 --- a/icu4j/localespi/.settings/org.eclipse.jdt.core.prefs +++ b/icu4j/localespi/.settings/org.eclipse.jdt.core.prefs @@ -1,5 +1,13 @@ -#Mon May 19 23:22:16 EDT 2008 +#Tue May 20 15:13:23 EDT 2008 eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes= +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve diff --git a/icu4j/localespi/.settings/org.eclipse.jdt.ui.prefs b/icu4j/localespi/.settings/org.eclipse.jdt.ui.prefs index 01486d659fe..2499b0e3653 100644 --- a/icu4j/localespi/.settings/org.eclipse.jdt.ui.prefs +++ b/icu4j/localespi/.settings/org.eclipse.jdt.ui.prefs @@ -1,5 +1,10 @@ -#Mon May 19 23:24:17 EDT 2008 +#Tue Jun 03 11:18:15 EDT 2008 eclipse.preferences.version=1 -formatter_profile=_ICU +formatter_profile=_ICU4J standard formatter_settings_version=11 +org.eclipse.jdt.ui.exception.name=e +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.javadoc=false +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.overrideannotation=true org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/icu4j/localespi/build.xml b/icu4j/localespi/build.xml index 4726e5edba0..1d7066f9296 100644 --- a/icu4j/localespi/build.xml +++ b/icu4j/localespi/build.xml @@ -7,7 +7,7 @@ * This is the ant build file for ICU4J Locale SPI implementation. */ --> - + @@ -15,19 +15,13 @@ + + + - - - - - - - - - - + @@ -37,17 +31,37 @@ - + + + + + + + + - - - + encoding="ascii"> + + + + + + + + + + + + +
@@ -65,9 +79,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/icu4j/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProviderICU b/icu4j/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider similarity index 100% rename from icu4j/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProviderICU rename to icu4j/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider diff --git a/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java new file mode 100644 index 00000000000..79ee57f8471 --- /dev/null +++ b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java @@ -0,0 +1,87 @@ +/* + ******************************************************************************* + * Copyright (C) 2008, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.test.localespi; + +import java.text.BreakIterator; +import java.util.Locale; + +import com.ibm.icu.dev.test.TestFmwk; + +public class BreakIteratorTest extends TestFmwk { + public static void main(String[] args) throws Exception { + new BreakIteratorTest().run(args); + } + + private static final int CHARACTER_BRK = 0; + private static final int WORD_BRK = 1; + private static final int LINE_BRK = 2; + private static final int SENTENCE_BRK = 3; + + public void TestGetInstance() { + for (Locale loc : TestUtil.getICULocales()) { + checkGetInstance(CHARACTER_BRK, loc); + checkGetInstance(WORD_BRK, loc); + checkGetInstance(LINE_BRK, loc); + checkGetInstance(SENTENCE_BRK, loc); + } + } + + private void checkGetInstance(int type, Locale loc) { + BreakIterator brkitr = null; + String method = null; + switch (type) { + case CHARACTER_BRK: + brkitr = BreakIterator.getCharacterInstance(loc); + method = "getCharacterInstance"; + break; + case WORD_BRK: + brkitr = BreakIterator.getWordInstance(loc); + method = "getWordInstance"; + break; + case LINE_BRK: + brkitr = BreakIterator.getLineInstance(loc); + method = "getLineInstance"; + break; + case SENTENCE_BRK: + brkitr = BreakIterator.getSentenceInstance(loc); + method = "getSentenceInstance"; + break; + default: + errln("FAIL: Unknown break iterator type"); + return; + } + + if (TestUtil.isICUOnly(loc)) { + if (!(brkitr instanceof com.ibm.icu.impl.jdkadapter.BreakIteratorICU)) { + errln("FAIL: " + method + " returned JDK BreakIterator for locale " + loc); + } + } else { + if (brkitr instanceof com.ibm.icu.impl.jdkadapter.BreakIteratorICU) { + logln("INFO: " + method + " returned ICU BreakIterator for locale " + loc); + } else { + Locale iculoc = TestUtil.toICUExtendedLocale(loc); + switch (type) { + case CHARACTER_BRK: + brkitr = BreakIterator.getCharacterInstance(iculoc); + break; + case WORD_BRK: + brkitr = BreakIterator.getWordInstance(iculoc); + break; + case LINE_BRK: + brkitr = BreakIterator.getLineInstance(iculoc); + break; + case SENTENCE_BRK: + brkitr = BreakIterator.getSentenceInstance(iculoc); + break; + } + if (!(brkitr instanceof com.ibm.icu.impl.jdkadapter.BreakIteratorICU)) { + errln("FAIL: " + method + " returned JDK BreakIterator for locale " + iculoc); + } + } + } + } +} diff --git a/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java new file mode 100644 index 00000000000..c29ce1272fd --- /dev/null +++ b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java @@ -0,0 +1,39 @@ +/* + ******************************************************************************* + * Copyright (C) 2008, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.test.localespi; + +import java.text.Collator; +import java.util.Locale; + +import com.ibm.icu.dev.test.TestFmwk; + +public class CollatorTest extends TestFmwk { + public static void main(String[] args) throws Exception { + new CollatorTest().run(args); + } + + public void TestGetInstance() { + for (Locale loc : TestUtil.getICULocales()) { + Collator coll = Collator.getInstance(loc); + if (TestUtil.isICUOnly(loc)) { + if (!(coll instanceof com.ibm.icu.impl.jdkadapter.CollatorICU)) { + errln("FAIL: getInstance returned JDK Collator for locale " + loc); + } + } else { + if (coll instanceof com.ibm.icu.impl.jdkadapter.CollatorICU) { + logln("INFO: getInstance returned ICU Collator for locale " + loc); + } else { + Locale iculoc = TestUtil.toICUExtendedLocale(loc); + coll = Collator.getInstance(iculoc); + if (!(coll instanceof com.ibm.icu.impl.jdkadapter.CollatorICU)) { + errln("FAIL: getInstance returned JDK Collator for locale " + iculoc); + } + } + } + } + } +} diff --git a/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java new file mode 100644 index 00000000000..78f1f1ea15c --- /dev/null +++ b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java @@ -0,0 +1,39 @@ +/* + ******************************************************************************* + * Copyright (C) 2008, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.test.localespi; + +import java.text.DateFormatSymbols; +import java.util.Locale; + +import com.ibm.icu.dev.test.TestFmwk; + +public class DateFormatSymbolsTest extends TestFmwk { + public static void main(String[] args) throws Exception { + new DateFormatSymbolsTest().run(args); + } + + public void TestGetInstance() { + for (Locale loc : TestUtil.getICULocales()) { + DateFormatSymbols dfs = DateFormatSymbols.getInstance(loc); + if (TestUtil.isICUOnly(loc)) { + if (!(dfs instanceof com.ibm.icu.impl.jdkadapter.DateFormatSymbolsICU)) { + errln("FAIL: getInstance returned JDK DateFormatSymbols for locale " + loc); + } + } else { + if (dfs instanceof com.ibm.icu.impl.jdkadapter.DateFormatSymbolsICU) { + logln("INFO: getInstance returned ICU DateFormatSymbols for locale " + loc); + } else { + Locale iculoc = TestUtil.toICUExtendedLocale(loc); + dfs = DateFormatSymbols.getInstance(iculoc); + if (!(dfs instanceof com.ibm.icu.impl.jdkadapter.DateFormatSymbolsICU)) { + errln("FAIL: getInstance returned JDK DateFormatSymbols for locale " + iculoc); + } + } + } + } + } +} diff --git a/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java new file mode 100644 index 00000000000..58fcb597fd3 --- /dev/null +++ b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java @@ -0,0 +1,63 @@ +/* + ******************************************************************************* + * Copyright (C) 2008, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.test.localespi; + +import java.text.DateFormat; +import java.util.Locale; + +import com.ibm.icu.dev.test.TestFmwk; + +public class DateFormatTest extends TestFmwk { + + public static void main(String[] args) throws Exception { + new DateFormatTest().run(args); + } + + public void TestGetInstance() { + for (Locale loc : TestUtil.getICULocales()) { + checkGetInstance(DateFormat.FULL, DateFormat.LONG, loc); + checkGetInstance(DateFormat.MEDIUM, -1, loc); + checkGetInstance(1, DateFormat.SHORT, loc); + } + } + + private void checkGetInstance(int dstyle, int tstyle, Locale loc) { + DateFormat df; + String method; + if (dstyle < 0) { + df = DateFormat.getTimeInstance(DateFormat.SHORT, loc); + method = "getTimeInstance"; + } else if (tstyle < 0) { + df = DateFormat.getDateInstance(DateFormat.MEDIUM, loc); + method = "getDateInstance"; + } else { + df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.LONG, loc); + method = "getDateTimeInstance"; + } + if (TestUtil.isICUOnly(loc)) { + if (!(df instanceof com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU)) { + errln("FAIL: " + method + " returned JDK DateFormat for locale " + loc); + } + } else { + if (df instanceof com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU) { + logln("INFO: " + method + " returned ICU DateFormat for locale " + loc); + } else { + Locale iculoc = TestUtil.toICUExtendedLocale(loc); + if (dstyle < 0) { + df = DateFormat.getTimeInstance(DateFormat.SHORT, iculoc); + } else if (tstyle < 0) { + df = DateFormat.getDateInstance(DateFormat.MEDIUM, iculoc); + } else { + df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.LONG, iculoc); + } + if (!(df instanceof com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU)) { + errln("FAIL: " + method + " returned JDK DateFormat for locale " + iculoc); + } + } + } + } +} diff --git a/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java new file mode 100644 index 00000000000..b12a9aea656 --- /dev/null +++ b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java @@ -0,0 +1,40 @@ +/* + ******************************************************************************* + * Copyright (C) 2008, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.test.localespi; + +import java.text.DecimalFormatSymbols; +import java.util.Locale; + +import com.ibm.icu.dev.test.TestFmwk; + +public class DecimalFormatSymbolsTest extends TestFmwk { + public static void main(String[] args) throws Exception { + new DecimalFormatSymbolsTest().run(args); + } + + public void TestGetInstance() { + for (Locale loc : TestUtil.getICULocales()) { + DecimalFormatSymbols decfs = DecimalFormatSymbols.getInstance(loc); + if (TestUtil.isICUOnly(loc)) { + if (!(decfs instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatSymbolsICU)) { + errln("FAIL: getInstance returned JDK DecimalFormatSymbols for locale " + loc); + } + } else { + if (decfs instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatSymbolsICU) { + logln("INFO: getInstance returned ICU DecimalFormatSymbols for locale " + loc); + } else { + Locale iculoc = TestUtil.toICUExtendedLocale(loc); + decfs = DecimalFormatSymbols.getInstance(iculoc); + if (!(decfs instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatSymbolsICU)) { + errln("FAIL: getInstance returned JDK DecimalFormatSymbols for locale " + iculoc); + } + } + } + } + } + +} diff --git a/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java new file mode 100644 index 00000000000..53e58d289a7 --- /dev/null +++ b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java @@ -0,0 +1,102 @@ +/* + ******************************************************************************* + * Copyright (C) 2008, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.test.localespi; + +import java.text.NumberFormat; +import java.util.Locale; + +import com.ibm.icu.dev.test.TestFmwk; + +public class NumberFormatTest extends TestFmwk { + public static void main(String[] args) throws Exception { + new NumberFormatTest().run(args); + } + + private static final int DEFAULT_TYPE = 0; + private static final int NUMBER_TYPE = 1; + private static final int INTEGER_TYPE = 2; + private static final int PERCENT_TYPE = 3; + private static final int CURRENCY_TYPE = 4; + + public void TestGetInstance() { + for (Locale loc : TestUtil.getICULocales()) { + checkGetInstance(DEFAULT_TYPE, loc); + checkGetInstance(NUMBER_TYPE, loc); + checkGetInstance(INTEGER_TYPE, loc); + checkGetInstance(PERCENT_TYPE, loc); + checkGetInstance(CURRENCY_TYPE, loc); + } + } + + private void checkGetInstance(int type, Locale loc) { + NumberFormat nf = null; + String method = null; + + switch (type) { + case DEFAULT_TYPE: + nf = NumberFormat.getInstance(loc); + method = "getInstance"; + break; + case NUMBER_TYPE: + nf = NumberFormat.getNumberInstance(loc); + method = "getNumberInstance"; + break; + case INTEGER_TYPE: + nf = NumberFormat.getIntegerInstance(loc); + method = "getIntegerInstance"; + break; + case PERCENT_TYPE: + nf = NumberFormat.getPercentInstance(loc); + method = "getPercentInstance"; + break; + case CURRENCY_TYPE: + nf = NumberFormat.getCurrencyInstance(loc); + method = "getCurrencyInstance"; + break; + default: + errln("FAIL: Unknown number format type"); + return; + } + + if (TestUtil.isICUOnly(loc)) { + if (!(nf instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatICU)) { + errln("FAIL: " + method + " returned JDK NumberFormat for locale " + loc); + } + } else { + if (nf instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatICU) { + logln("INFO: " + method + " returned ICU NumberFormat for locale " + loc); + } else { + Locale iculoc = TestUtil.toICUExtendedLocale(loc); + switch (type) { + case DEFAULT_TYPE: + nf = NumberFormat.getInstance(iculoc); + method = "getInstance"; + break; + case NUMBER_TYPE: + nf = NumberFormat.getNumberInstance(iculoc); + method = "getNumberInstance"; + break; + case INTEGER_TYPE: + nf = NumberFormat.getIntegerInstance(iculoc); + method = "getIntegerInstance"; + break; + case PERCENT_TYPE: + nf = NumberFormat.getPercentInstance(iculoc); + method = "getPercentInstance"; + break; + case CURRENCY_TYPE: + nf = NumberFormat.getCurrencyInstance(iculoc); + method = "getCurrencyInstance"; + break; + } + if (!(nf instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatICU)) { + errln("FAIL: " + method + " returned JDK NumberFormat for locale " + iculoc); + } + } + } + } +} diff --git a/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java new file mode 100644 index 00000000000..042b8f2c878 --- /dev/null +++ b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java @@ -0,0 +1,27 @@ +/* + ******************************************************************************* + * Copyright (C) 2008, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.test.localespi; + +import com.ibm.icu.dev.test.TestFmwk.TestGroup; + +public class TestAll extends TestGroup { + + public static void main(String[] args) { + new TestAll().run(args); + } + + public TestAll() { + super(new String[] { + "BreakIteratorTest", + "CollatorTest", + "DateFormatSymbolsTest", + "DateFormatTest", + "DecimalFormatSymbolsTest", + "NumberFormatTest", + }); + } +} diff --git a/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java new file mode 100644 index 00000000000..5d6b814d802 --- /dev/null +++ b/icu4j/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java @@ -0,0 +1,74 @@ +/* + ******************************************************************************* + * Copyright (C) 2008, International Business Machines Corporation and * + * others. All Rights Reserved. * + ******************************************************************************* + */ +package com.ibm.icu.dev.test.localespi; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Locale; +import java.util.Set; + +import com.ibm.icu.impl.ICUResourceBundle; + +public class TestUtil { + + private static final Locale[] JDK_LOCALES = Locale.getAvailableLocales(); + private static final Locale[] ICU_LOCALES = ICUResourceBundle.getAvailableLocales(); + private static final Locale[] ICU_ONLY_LOCALES; + private static final Set JDK_LOCALE_SET = new HashSet(); + private static final Set ICU_LOCALE_SET = new HashSet(); + private static final Set ICU_ONLY_LOCALE_SET = new HashSet(); + + private static final String ICU_VARIANT = "ICU"; + private static final String ICU_VARIANT_SUFFIX = "_ICU"; + + static { + for (Locale jdkloc : JDK_LOCALES) { + JDK_LOCALE_SET.add(jdkloc); + } + + for (Locale iculoc : ICU_LOCALES) { + ICU_LOCALE_SET.add(iculoc); + if (!JDK_LOCALE_SET.contains(iculoc)) { + ICU_ONLY_LOCALE_SET.add(iculoc); + } + } + ICU_ONLY_LOCALES = ICU_ONLY_LOCALE_SET.toArray(new Locale[0]); + } + + public static boolean isICUOnly(Locale locale) { + return ICU_ONLY_LOCALE_SET.contains(locale); + } + + public static Locale[] getICUOnlyLocales() { + return Arrays.copyOf(ICU_ONLY_LOCALES, ICU_ONLY_LOCALES.length); + } + + public static Locale[] getJDKLocales() { + return Arrays.copyOf(JDK_LOCALES, JDK_LOCALES.length); + } + + public static Locale[] getICULocales() { + return Arrays.copyOf(ICU_LOCALES, ICU_LOCALES.length); + } + + public static Locale toICUExtendedLocale(Locale locale) { + if (isICUExtendedLocale(locale)) { + return locale; + } + String variant = locale.getVariant(); + variant = variant.length() == 0 ? ICU_VARIANT : variant + ICU_VARIANT_SUFFIX; + return new Locale(locale.getLanguage(), locale.getCountry(), variant); + } + + public static boolean isICUExtendedLocale(Locale locale) { + String variant = locale.getVariant(); + if (variant.equals(ICU_VARIANT) || variant.endsWith(ICU_VARIANT_SUFFIX)) { + return true; + } + return false; + } +} diff --git a/icu4j/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProvider.java b/icu4j/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java similarity index 94% rename from icu4j/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProvider.java rename to icu4j/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java index 15c714fc383..c09080f3de2 100644 --- a/icu4j/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProvider.java +++ b/icu4j/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java @@ -12,7 +12,7 @@ import com.ibm.icu.impl.javaspi.ICULocale; import com.ibm.icu.lang.UCharacter; import com.ibm.icu.util.TimeZone; -public class TimeZoneNameProvider extends java.util.spi.TimeZoneNameProvider { +public class TimeZoneNameProviderICU extends java.util.spi.TimeZoneNameProvider { @Override public String getDisplayName(String ID, boolean daylight, int style, Locale locale) {