22
22
import static org .junit .jupiter .api .TestInstance .Lifecycle .PER_CLASS ;
23
23
import static org .junit .jupiter .engine .discovery .JupiterUniqueIdBuilder .appendTestTemplateInvocationSegment ;
24
24
import static org .junit .jupiter .engine .discovery .JupiterUniqueIdBuilder .uniqueIdForTestTemplateMethod ;
25
+ import static org .junit .jupiter .params .converter .DefaultArgumentConverter .DEFAULT_LOCALE_CONVERSION_FORMAT_PROPERTY_NAME ;
25
26
import static org .junit .jupiter .params .provider .Arguments .arguments ;
26
27
import static org .junit .platform .engine .discovery .DiscoverySelectors .selectClass ;
27
28
import static org .junit .platform .engine .discovery .DiscoverySelectors .selectIteration ;
@@ -476,6 +477,29 @@ void failsWhenNoArgumentsSourceIsDeclared() {
476
477
"Configuration error: You must configure at least one arguments source for this @ParameterizedTest" ))));
477
478
}
478
479
480
+ @ Test
481
+ void executesWithDefaultLocaleConversionFormat () {
482
+ var results = execute (LocaleConversionTestCase .class , "testWithBcp47" , Locale .class );
483
+
484
+ results .allEvents ().assertStatistics (stats -> stats .started (4 ).succeeded (4 ));
485
+ }
486
+
487
+ @ Test
488
+ void executesWithBcp47LocaleConversionFormat () {
489
+ var results = execute (Map .of (DEFAULT_LOCALE_CONVERSION_FORMAT_PROPERTY_NAME , "bcp_47" ),
490
+ LocaleConversionTestCase .class , "testWithBcp47" , Locale .class );
491
+
492
+ results .allEvents ().assertStatistics (stats -> stats .started (4 ).succeeded (4 ));
493
+ }
494
+
495
+ @ Test
496
+ void executesWithIso639LocaleConversionFormat () {
497
+ var results = execute (Map .of (DEFAULT_LOCALE_CONVERSION_FORMAT_PROPERTY_NAME , "iso_639" ),
498
+ LocaleConversionTestCase .class , "testWithIso639" , Locale .class );
499
+
500
+ results .allEvents ().assertStatistics (stats -> stats .started (4 ).succeeded (4 ));
501
+ }
502
+
479
503
private EngineExecutionResults execute (DiscoverySelector ... selectors ) {
480
504
return EngineTestKit .engine (new JupiterTestEngine ()).selectors (selectors ).execute ();
481
505
}
@@ -484,6 +508,14 @@ private EngineExecutionResults execute(Class<?> testClass, String methodName, Cl
484
508
return execute (selectMethod (testClass , methodName , ClassUtils .nullSafeToString (methodParameterTypes )));
485
509
}
486
510
511
+ private EngineExecutionResults execute (Map <String , String > configurationParameters , Class <?> testClass ,
512
+ String methodName , Class <?>... methodParameterTypes ) {
513
+ return EngineTestKit .engine (new JupiterTestEngine ()) //
514
+ .selectors (selectMethod (testClass , methodName , ClassUtils .nullSafeToString (methodParameterTypes ))) //
515
+ .configurationParameters (configurationParameters ) //
516
+ .execute ();
517
+ }
518
+
487
519
private EngineExecutionResults execute (String methodName , Class <?>... methodParameterTypes ) {
488
520
return execute (TestCase .class , methodName , methodParameterTypes );
489
521
}
@@ -2508,6 +2540,24 @@ public static Stream<Arguments> zeroArgumentsProvider() {
2508
2540
}
2509
2541
}
2510
2542
2543
+ static class LocaleConversionTestCase {
2544
+
2545
+ @ ParameterizedTest
2546
+ @ ValueSource (strings = "en-US" )
2547
+ void testWithBcp47 (Locale locale ) {
2548
+ assertEquals ("en" , locale .getLanguage ());
2549
+ assertEquals ("US" , locale .getCountry ());
2550
+ }
2551
+
2552
+ @ ParameterizedTest
2553
+ @ ValueSource (strings = "en-US" )
2554
+ void testWithIso639 (Locale locale ) {
2555
+ assertEquals ("en-us" , locale .getLanguage ());
2556
+ assertEquals ("" , locale .getCountry ());
2557
+ }
2558
+
2559
+ }
2560
+
2511
2561
private static class TwoSingleStringArgumentsProvider implements ArgumentsProvider {
2512
2562
2513
2563
@ Override
0 commit comments