test/java/util/Locale/LocaleProviders.java

Print this page
rev 7043 : imported patch 8013086
rev 7044 : imported patch 8013233

@@ -122,23 +122,38 @@
                 System.out.printf("Windows version: %.1f\n", ver);
                 if (ver >= 6.0) {
                     LocaleProviderAdapter lda = LocaleProviderAdapter.getAdapter(LocaleNameProvider.class, Locale.ENGLISH);
                     LocaleProviderAdapter.Type type = lda.getAdapterType();
                     if (type == LocaleProviderAdapter.Type.HOST) {
+                        LocaleNameProvider lnp = lda.getLocaleNameProvider();
                         Locale mkmk = Locale.forLanguageTag("mk-MK");
                         String result = mkmk.getDisplayLanguage(Locale.ENGLISH);
-                        if (!"Macedonian (FYROM)".equals(result)) {
-                            throw new RuntimeException("Windows locale name provider did not return expected localized language name for \"mk\". Returned name was \"" + result + "\"");
+                        String expected = lnp.getDisplayLanguage(mkmk.getLanguage(), Locale.ENGLISH);
+                        System.out.printf("  Display language name for (mk_MK): expected: \"%s\", returned: \"%s\"\n", expected, result);
+                        if (result != null &&
+                            expected != null &&
+                            !result.equals(expected)) {
+                            throw new RuntimeException("Windows locale name provider did not return expected localized language name for \"mk\". Returned name was \"" + result + "\", expected: \"" + expected +  "\"");
                         }
                         result = Locale.US.getDisplayLanguage(Locale.ENGLISH);
-                        if (!"English".equals(result)) {
-                            throw new RuntimeException("Windows locale name provider did not return expected localized language name for \"en\". Returned name was \"" + result + "\"");
+                        expected = lnp.getDisplayLanguage(Locale.US.getLanguage(), Locale.ENGLISH);
+                        System.out.printf("  Display language name for (en_US): expected: \"%s\", returned: \"%s\"\n", expected, result);
+                        if (result != null &&
+                            expected != null &&
+                            !result.equals(expected)) {
+                            throw new RuntimeException("Windows locale name provider did not return expected localized language name for \"en\". Returned name was \"" + result + "\", expected: \"" + expected +  "\"");
                         }
+                        if (ver >= 6.1) {
                         result = Locale.US.getDisplayCountry(Locale.ENGLISH);
-                        if (ver >= 6.1 && !"United States".equals(result)) {
-                            throw new RuntimeException("Windows locale name provider did not return expected localized country name for \"US\". Returned name was \"" + result + "\"");
+                            expected = lnp.getDisplayCountry(Locale.US.getCountry(), Locale.ENGLISH);
+                            System.out.printf("  Display country name for (en_US): expected: \"%s\", returned: \"%s\"\n", expected, result);
+                            if (result != null &&
+                                expected != null &&
+                                !result.equals(expected)) {
+                                throw new RuntimeException("Windows locale name provider did not return expected localized country name for \"US\". Returned name was \"" + result + "\", expected: \"" + expected + "\"");
                         }
+                        }
                     } else {
                         throw new RuntimeException("Windows Host LocaleProviderAdapter was not selected for English locale.");
                     }
                 }
             } catch (ParseException pe) {