test/jdk/java/util/Locale/LocaleProviders.java
changeset 59043 1a79b4bfc85a
parent 58972 dc998d4a227e
equal deleted inserted replaced
59042:8910b995a2ee 59043:1a79b4bfc85a
    22  */
    22  */
    23 import java.text.*;
    23 import java.text.*;
    24 import java.text.spi.*;
    24 import java.text.spi.*;
    25 import java.util.*;
    25 import java.util.*;
    26 import java.util.spi.*;
    26 import java.util.spi.*;
       
    27 import java.util.stream.IntStream;
    27 import sun.util.locale.provider.LocaleProviderAdapter;
    28 import sun.util.locale.provider.LocaleProviderAdapter;
    28 
    29 
    29 public class LocaleProviders {
    30 public class LocaleProviders {
    30 
    31 
    31     private static final boolean IS_WINDOWS = System.getProperty("os.name").startsWith("Windows");
    32     private static final boolean IS_WINDOWS = System.getProperty("os.name").startsWith("Windows");
    83                 bug8228465Test();
    84                 bug8228465Test();
    84                 break;
    85                 break;
    85 
    86 
    86             case "bug8232871Test":
    87             case "bug8232871Test":
    87                 bug8232871Test();
    88                 bug8232871Test();
       
    89                 break;
       
    90 
       
    91             case "bug8232860Test":
       
    92                 bug8232860Test();
    88                 break;
    93                 break;
    89 
    94 
    90             default:
    95             default:
    91                 throw new RuntimeException("Test method '"+methodName+"' not found.");
    96                 throw new RuntimeException("Test method '"+methodName+"' not found.");
    92         }
    97         }
   325                 "provider is not HOST: " + type + ", or\n" +
   330                 "provider is not HOST: " + type + ", or\n" +
   326                 "Language is not Japanese: " + lang + ", or\n" +
   331                 "Language is not Japanese: " + lang + ", or\n" +
   327                 "native calendar is not JapaneseCalendar: " + calType);
   332                 "native calendar is not JapaneseCalendar: " + calType);
   328         }
   333         }
   329     }
   334     }
       
   335 
       
   336     static void bug8232860Test() {
       
   337         var inputList = List.of(123, 123.4);
       
   338         var nfExpectedList = List.of("123", "123.4");
       
   339         var ifExpectedList = List.of("123", "123");
       
   340 
       
   341         var type = LocaleProviderAdapter.getAdapter(CalendarNameProvider.class, Locale.US)
       
   342                                         .getAdapterType();
       
   343         if (type == LocaleProviderAdapter.Type.HOST && (IS_WINDOWS || IS_MAC)) {
       
   344             final var numf = NumberFormat.getNumberInstance(Locale.US);
       
   345             final var intf = NumberFormat.getIntegerInstance(Locale.US);
       
   346 
       
   347             IntStream.range(0, inputList.size())
       
   348                 .forEach(i -> {
       
   349                     var input = inputList.get(i);
       
   350                     var nfExpected = nfExpectedList.get(i);
       
   351                     var result = numf.format(input);
       
   352                     if (!result.equals(nfExpected)) {
       
   353                         throw new RuntimeException("Incorrect number format. " +
       
   354                             "input: " + input + ", expected: " +
       
   355                             nfExpected + ", result: " + result);
       
   356                     }
       
   357 
       
   358                     var ifExpected = ifExpectedList.get(i);
       
   359                     result = intf.format(input);
       
   360                     if (!result.equals(ifExpected)) {
       
   361                         throw new RuntimeException("Incorrect integer format. " +
       
   362                             "input: " + input + ", expected: " +
       
   363                             ifExpected + ", result: " + result);
       
   364                     }
       
   365                 });
       
   366             System.out.println("bug8232860Test succeeded.");
       
   367         } else {
       
   368             System.out.println("Test ignored. Either :-\n" +
       
   369                 "OS is neither macOS/Windows, or\n" +
       
   370                 "provider is not HOST: " + type);
       
   371         }
       
   372     }
   330 }
   373 }