test/jdk/java/util/Locale/LocaleProviders.java
changeset 58972 dc998d4a227e
parent 57549 bfe9696bf57f
child 59043 1a79b4bfc85a
equal deleted inserted replaced
58969:a4430bb9f97d 58972:dc998d4a227e
    27 import sun.util.locale.provider.LocaleProviderAdapter;
    27 import sun.util.locale.provider.LocaleProviderAdapter;
    28 
    28 
    29 public class LocaleProviders {
    29 public class LocaleProviders {
    30 
    30 
    31     private static final boolean IS_WINDOWS = System.getProperty("os.name").startsWith("Windows");
    31     private static final boolean IS_WINDOWS = System.getProperty("os.name").startsWith("Windows");
       
    32     private static final boolean IS_MAC = System.getProperty("os.name").startsWith("Mac");
    32 
    33 
    33     public static void main(String[] args) {
    34     public static void main(String[] args) {
    34         String methodName = args[0];
    35         String methodName = args[0];
    35 
    36 
    36         switch (methodName) {
    37         switch (methodName) {
    78                 bug8220227Test();
    79                 bug8220227Test();
    79                 break;
    80                 break;
    80 
    81 
    81             case "bug8228465Test":
    82             case "bug8228465Test":
    82                 bug8228465Test();
    83                 bug8228465Test();
       
    84                 break;
       
    85 
       
    86             case "bug8232871Test":
       
    87                 bug8232871Test();
    83                 break;
    88                 break;
    84 
    89 
    85             default:
    90             default:
    86                 throw new RuntimeException("Test method '"+methodName+"' not found.");
    91                 throw new RuntimeException("Test method '"+methodName+"' not found.");
    87         }
    92         }
   284             } else {
   289             } else {
   285                 System.out.println("bug8228465Test succeeded.");
   290                 System.out.println("bug8228465Test succeeded.");
   286             }
   291             }
   287         }
   292         }
   288     }
   293     }
       
   294 
       
   295     static void bug8232871Test() {
       
   296         LocaleProviderAdapter lda = LocaleProviderAdapter.getAdapter(CalendarNameProvider.class, Locale.US);
       
   297         LocaleProviderAdapter.Type type = lda.getAdapterType();
       
   298         var lang = Locale.getDefault().getLanguage();
       
   299         var cal = Calendar.getInstance();
       
   300         var calType = cal.getCalendarType();
       
   301         var expected = "\u4ee4\u548c1\u5e745\u67081\u65e5 \u6c34\u66dc\u65e5 \u5348\u524d0:00:00 \u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u590f\u6642\u9593";
       
   302 
       
   303         if (type == LocaleProviderAdapter.Type.HOST &&
       
   304             IS_MAC &&
       
   305             lang.equals("ja") &&
       
   306             calType.equals("japanese")) {
       
   307             cal.set(1, 4, 1, 0, 0, 0);
       
   308             cal.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
       
   309             DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL,
       
   310                             Locale.JAPAN);
       
   311             df.setCalendar(cal);
       
   312             var result = df.format(cal.getTime());
       
   313             if (result.equals(expected)) {
       
   314                 System.out.println("bug8232871Test succeeded.");
       
   315             } else {
       
   316                 throw new RuntimeException(
       
   317                             "Japanese calendar names mismatch. result: " +
       
   318                             result +
       
   319                             ", expected: " +
       
   320                             expected);
       
   321             }
       
   322         } else {
       
   323             System.out.println("Test ignored. Either :-\n" +
       
   324                 "OS is not macOS, or\n" +
       
   325                 "provider is not HOST: " + type + ", or\n" +
       
   326                 "Language is not Japanese: " + lang + ", or\n" +
       
   327                 "native calendar is not JapaneseCalendar: " + calType);
       
   328         }
       
   329     }
   289 }
   330 }