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);
}
}
}