You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by to...@apache.org on 2008/01/31 06:27:59 UTC

svn commit: r617004 - in /harmony/enhanced/classlib/trunk/modules/luni: make/exclude.common src/main/java/java/util/Currency.java src/test/api/common/org/apache/harmony/luni/tests/java/util/CurrencyTest.java

Author: tonywu
Date: Wed Jan 30 21:27:58 2008
New Revision: 617004

URL: http://svn.apache.org/viewvc?rev=617004&view=rev
Log:
Fix for Harmony-5407,
1. correct all the test according to CLDR data in ICU38.
2. correct a testcase on Antarctica, whose contry code should be AQ rather than AE.
3. work around a different exception handling of ICU, recorded on wiki, will report to ICU later.

Modified:
    harmony/enhanced/classlib/trunk/modules/luni/make/exclude.common
    harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Currency.java
    harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/CurrencyTest.java

Modified: harmony/enhanced/classlib/trunk/modules/luni/make/exclude.common
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/make/exclude.common?rev=617004&r1=617003&r2=617004&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/make/exclude.common (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/make/exclude.common Wed Jan 30 21:27:58 2008
@@ -2,5 +2,3 @@
 org/apache/harmony/luni/tests/java/net/ExcludedProxyTest.java
 org/apache/harmony/luni/tests/java/util/FormatterTest.java
 org/apache/harmony/luni/tests/java/util/ScannerTest.java
-# HARMONY-5407
-org/apache/harmony/luni/tests/java/util/CurrencyTest.java

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Currency.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Currency.java?rev=617004&r1=617003&r2=617004&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Currency.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/util/Currency.java Wed Jan 30 21:27:58 2008
@@ -72,9 +72,14 @@
      *             if the locale's country is not a supported ISO 3166 Country
      */
     public static Currency getInstance(Locale locale) {
-        com.ibm.icu.util.Currency currency = com.ibm.icu.util.Currency.getInstance(locale);
-        if(currency == null) {
+        com.ibm.icu.util.Currency currency = null;
+        try {
+            currency = com.ibm.icu.util.Currency.getInstance(locale);
+        } catch (IllegalArgumentException e) {
             return null;
+        }
+        if (currency == null) {
+            throw new IllegalArgumentException(locale.getCountry());
         }
         String currencyCode = currency.getCurrencyCode();
 

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/CurrencyTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/CurrencyTest.java?rev=617004&r1=617003&r2=617004&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/CurrencyTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/util/CurrencyTest.java Wed Jan 30 21:27:58 2008
@@ -75,17 +75,25 @@
                 + "isn't equal to " + "Currency.getInstance(Locale_"
                 + localeKn.toString() + "))", cGu == cKn);
 
-        // some teritories do not have currencies, like Antarctica
+        // some territories do not have currencies, like Antarctica(AQ)
         Locale loc = new Locale("", "AQ");
+        Currency curr = Currency.getInstance(loc);
+        assertNull(curr);
+        
         try {
-            Currency curr = Currency.getInstance(loc);
-            assertNull(
-                    "Currency.getInstance(new Locale(\"\", \"AQ\")) did not return null",
-                    curr);
+            Currency.getInstance((Locale) null);
+            fail("should throw NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+        
+        try {
+            Currency.getInstance(new Locale("ABC","DEF"));
+            fail("should throw IllegalArgumentException");
         } catch (IllegalArgumentException e) {
-            fail("Unexpected IllegalArgumentException " + e);
+            // expected
         }
-
+        
         // unsupported/legacy iso3 countries
         // RI does not support them.
         loc = new Locale("", "ZR");
@@ -130,7 +138,7 @@
         assertEquals("currK.getSymbol()", "KRW", currK.getSymbol());
         assertEquals("currI.getSymbol()", "0#Rs.|1#Re.|1<Rs.", currI
                 .getSymbol());
-        assertEquals("currUS.getSymbol()", "$", currUS.getSymbol());
+        assertEquals("currUS.getSymbol()", "US$", currUS.getSymbol());
     }
 
     /**
@@ -149,37 +157,37 @@
         Currency currJ = Currency.getInstance("JPY");
         assertEquals("\uffe5", currJ.getSymbol(Locale.JAPAN));
         assertEquals("JPY", currJ.getSymbol(Locale.JAPANESE));
-        assertEquals("\u00a5", currJ.getSymbol(Locale.FRANCE));
+        assertEquals("\u00a5JP", currJ.getSymbol(Locale.FRANCE));
         assertEquals("JPY", currJ.getSymbol(Locale.FRENCH));
 
         Currency currUS = Currency.getInstance("USD");
-        assertEquals("$", currUS.getSymbol(Locale.JAPAN));
+        assertEquals("US$", currUS.getSymbol(Locale.JAPAN));
 
         Locale.setDefault(new Locale("ja", "JP"));
-        assertEquals("\u00a5", currJ.getSymbol(new Locale("", "JP")));
-        assertEquals("$", currUS.getSymbol(new Locale("", "JP")));
+        assertEquals("JP\u00a5", currJ.getSymbol(new Locale("", "JP")));
+        assertEquals("US$", currUS.getSymbol(new Locale("", "JP")));
 
         Locale.setDefault(Locale.US);
-        assertEquals("\u00a5", currJ.getSymbol(new Locale("", "JP")));
-        assertEquals("$", currUS.getSymbol(new Locale("", "JP")));
+        assertEquals("JP\u00a5", currJ.getSymbol(new Locale("", "JP")));
+        assertEquals("US$", currUS.getSymbol(new Locale("", "JP")));
 
         assertEquals("USD", currUS.getSymbol(Locale.JAPANESE));
-        assertEquals("$", currUS.getSymbol(Locale.FRANCE));
+        assertEquals("$US", currUS.getSymbol(Locale.FRANCE));
         assertEquals("USD", currUS.getSymbol(Locale.FRENCH));
-        assertEquals("$", currUS.getSymbol(new Locale("fr", "FR")));
-        assertEquals("$", currUS.getSymbol(new Locale("", "FR"))); // default
+        assertEquals("$US", currUS.getSymbol(new Locale("fr", "FR")));
+        assertEquals("US$", currUS.getSymbol(new Locale("", "FR"))); // default
         // locale
 
         assertEquals("$", currUS.getSymbol(Locale.US));
         assertEquals("USD", currUS.getSymbol(Locale.ENGLISH));
 
         assertEquals("$", currUS.getSymbol(new Locale("en", "US")));
-        assertEquals("$", currUS.getSymbol(new Locale("", "US")));
+        assertEquals("US$", currUS.getSymbol(new Locale("", "US")));
 
         Currency currCA = Currency.getInstance("CAD");
         assertEquals("CAD", currCA.getSymbol(Locale.JAPAN));
         assertEquals("CAD", currCA.getSymbol(Locale.JAPANESE));
-        assertEquals("CAD", currCA.getSymbol(Locale.FRANCE));
+        assertEquals("$Ca", currCA.getSymbol(Locale.FRANCE));
         assertEquals("CAD", currCA.getSymbol(Locale.FRENCH));
         assertEquals("Can$", currCA.getSymbol(Locale.US));
         assertEquals("CAD", currCA.getSymbol(Locale.ENGLISH));
@@ -194,9 +202,9 @@
 
         // tests what happens with improper locales, i.e. countries without the
         // given language
-        assertEquals("currUS.getSymbol(new Locale(\"ar\", \"US\"))", "$",
+        assertEquals("currUS.getSymbol(new Locale(\"ar\", \"US\"))", "US$",
                 currUS.getSymbol(new Locale("ar", "US")));
-        assertEquals("currUS.getSymbol(new Locale(\"ar\", \"CA\"))", "$",
+        assertEquals("currUS.getSymbol(new Locale(\"ar\", \"CA\"))", "US$",
                 currUS.getSymbol(new Locale("ar", "CA")));
         assertEquals("currCA.getSymbol(new Locale(\"ar\", \"US\"))", "CAD",
                 currCA.getSymbol(new Locale("ar", "US")));
@@ -204,7 +212,7 @@
                 currCA.getSymbol(new Locale("ar", "CA")));
         assertEquals("currJ.getSymbol(new Locale(\"ja\", \"US\"))", "\uffe5",
                 currJ.getSymbol(new Locale("ja", "US")));
-        assertEquals("currUS.getSymbol(new Locale(\"ja\", \"US\"))", "$",
+        assertEquals("currUS.getSymbol(new Locale(\"ja\", \"US\"))", "US$",
                 currUS.getSymbol(new Locale("ja", "US")));
 
         // cross testing between USD and JPY when locale is JAPANESE JAPAN
@@ -219,20 +227,20 @@
         assertEquals("\uffe5", currJ2.getSymbol(new Locale("ja", "JP")));
 
         // no language
-        assertEquals("\u00a5", currJ2.getSymbol(new Locale("", "JP")));
+        assertEquals("JP\u00a5", currJ2.getSymbol(new Locale("", "JP")));
 
         // no country
         assertEquals("JPY", currJ2.getSymbol(new Locale("ja", "")));
 
         // no language
-        assertEquals("\u00a5", currJ2.getSymbol(new Locale("", "US")));
+        assertEquals("JP\u00a5", currJ2.getSymbol(new Locale("", "US")));
 
         // no country
         assertEquals("JPY", currJ2.getSymbol(new Locale("en", "")));
 
         // bogus Locales , when default locale is Locale_ja_JP
-        assertEquals("\u00a5", currJ2.getSymbol(new Locale("ar", "JP")));
-        assertEquals("\u00a5", currJ2.getSymbol(new Locale("ar", "US")));
+        assertEquals("JP\u00a5", currJ2.getSymbol(new Locale("ar", "JP")));
+        assertEquals("JP\u00a5", currJ2.getSymbol(new Locale("ar", "US")));
         assertEquals("\uffe5", currJ2.getSymbol(new Locale("ja", "AE")));
         assertEquals("\u00a5", currJ2.getSymbol(new Locale("en", "AE")));
         assertEquals("currJ.getSymbol(new Locale(\"ja\", \"US\"))", "\uffe5",
@@ -245,20 +253,20 @@
         assertEquals("USD", currUS2.getSymbol(new Locale("ja", "")));
 
         // no language
-        assertEquals("$", currUS2.getSymbol(new Locale("", "JP")));
+        assertEquals("US$", currUS2.getSymbol(new Locale("", "JP")));
 
         // no language
-        assertEquals("$", currUS2.getSymbol(new Locale("", "US")));
+        assertEquals("US$", currUS2.getSymbol(new Locale("", "US")));
 
         // no country
         assertEquals("USD", currUS2.getSymbol(new Locale("en", "")));
 
         // bogus Locales , when default locale is Locale_ja_JP
-        assertEquals("$", currUS2.getSymbol(new Locale("ar", "JP")));
-        assertEquals("$", currUS2.getSymbol(new Locale("ar", "US")));
-        assertEquals("$", currUS2.getSymbol(new Locale("ja", "AE")));
-        assertEquals("US$", currUS2.getSymbol(new Locale("en", "AE")));
-        assertEquals("currUS.getSymbol(new Locale(\"ja\", \"US\"))", "$",
+        assertEquals("US$", currUS2.getSymbol(new Locale("ar", "JP")));
+        assertEquals("US$", currUS2.getSymbol(new Locale("ar", "US")));
+        assertEquals("US$", currUS2.getSymbol(new Locale("ja", "AE")));
+        assertEquals("$", currUS2.getSymbol(new Locale("en", "AE")));
+        assertEquals("currUS.getSymbol(new Locale(\"ja\", \"US\"))", "US$",
                 currUS.getSymbol(new Locale("ja", "US")));
 
         Locale.setDefault(Locale.US);