test/java/util/PluggableLocale/CurrencyNameProviderTest.java

Print this page
rev 5974 : imported patch 8000997

@@ -46,14 +46,17 @@
         test2();
     }
 
     void test1() {
         com.bar.CurrencyNameProviderImpl cnp = new com.bar.CurrencyNameProviderImpl();
+        com.bar.CurrencyNameProviderImpl2 cnp2 = new com.bar.CurrencyNameProviderImpl2();
         Locale[] availloc = Locale.getAvailableLocales();
         Locale[] testloc = availloc.clone();
         List<Locale> jreimplloc = Arrays.asList(LocaleProviderAdapter.forJRE().getCurrencyNameProvider().getAvailableLocales());
-        List<Locale> providerloc = Arrays.asList(cnp.getAvailableLocales());
+        List<Locale> providerloc = new ArrayList<Locale>();
+        providerloc.addAll(Arrays.asList(cnp.getAvailableLocales()));
+        providerloc.addAll(Arrays.asList(cnp2.getAvailableLocales()));
 
         for (Locale target: availloc) {
             // pure JRE implementation
             OpenListResourceBundle rb = (OpenListResourceBundle)LocaleProviderAdapter.forJRE().getLocaleData().getCurrencyNames(target);
             boolean jreSupportsTarget = jreimplloc.contains(target);

@@ -77,13 +80,18 @@
 
                 // provider's name (if any)
                 String providerscurrency = null;
                 String providersname = null;
                 if (providerloc.contains(target)) {
+                    if (cnp.isSupportedLocale(target)) {
                     providerscurrency = cnp.getSymbol(c.getCurrencyCode(), target);
                     providersname = cnp.getDisplayName(c.getCurrencyCode(), target);
+                    } else {
+                        providerscurrency = cnp2.getSymbol(c.getCurrencyCode(), target);
+                        providersname = cnp2.getDisplayName(c.getCurrencyCode(), target);
                 }
+                }
 
                 // JRE's name
                 String jrescurrency = null;
                 String jresname = null;
                 String key = c.getCurrencyCode();

@@ -107,36 +115,52 @@
 
 
     final String pattern = "###,###\u00A4";
     final String YEN_IN_OSAKA = "100,000\u5186\u3084\u3002";
     final String YEN_IN_KYOTO = "100,000\u5186\u3069\u3059\u3002";
+    final String YEN_IN_TOKYO= "100,000JPY-tokyo";
     final Locale OSAKA = new Locale("ja", "JP", "osaka");
     final Locale KYOTO = new Locale("ja", "JP", "kyoto");
+    final Locale TOKYO = new Locale("ja", "JP", "tokyo");
     Integer i = new Integer(100000);
     String formatted;
     DecimalFormat df;
 
     void test2() {
+        Locale defloc = Locale.getDefault();
+
         try {
             df = new DecimalFormat(pattern, DecimalFormatSymbols.getInstance(OSAKA));
             System.out.println(formatted = df.format(i));
             if(!formatted.equals(YEN_IN_OSAKA)) {
-                throw new RuntimeException("formatted zone names mismatch. " +
+                throw new RuntimeException("formatted currency names mismatch. " +
                     "Should match with " + YEN_IN_OSAKA);
             }
 
             df.parse(YEN_IN_OSAKA);
 
             Locale.setDefault(KYOTO);
             df = new DecimalFormat(pattern, DecimalFormatSymbols.getInstance());
             System.out.println(formatted = df.format(i));
             if(!formatted.equals(YEN_IN_KYOTO)) {
-                throw new RuntimeException("formatted zone names mismatch. " +
+                throw new RuntimeException("formatted currency names mismatch. " +
                     "Should match with " + YEN_IN_KYOTO);
             }
 
             df.parse(YEN_IN_KYOTO);
+
+            Locale.setDefault(TOKYO);
+            df = new DecimalFormat(pattern, DecimalFormatSymbols.getInstance());
+            System.out.println(formatted = df.format(i));
+            if(!formatted.equals(YEN_IN_TOKYO)) {
+                throw new RuntimeException("formatted currency names mismatch. " +
+                    "Should match with " + YEN_IN_TOKYO);
+            }
+
+            df.parse(YEN_IN_TOKYO);
         } catch (ParseException pe) {
             throw new RuntimeException("parse error occured" + pe);
+        } finally {
+            Locale.setDefault(defloc);
         }
     }
 }