This is an automated email from the ASF dual-hosted git repository. mgrigorov pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/wicket.git
commit 534d8894844d4ab4c8cca8657065eaaef6c07bf8 Author: Martin Tzvetanov Grigorov <[email protected]> AuthorDate: Thu Jun 13 16:40:47 2019 +0300 Fix Converter related tests to pass with latest Java 13 (build 21+) --- .../convert/converter/AbstractNumberConverter.java | 6 ++- .../util/convert/converters/ConvertersTest.java | 63 +++++++++++++++++++--- 2 files changed, 59 insertions(+), 10 deletions(-) diff --git a/wicket-util/src/main/java/org/apache/wicket/util/convert/converter/AbstractNumberConverter.java b/wicket-util/src/main/java/org/apache/wicket/util/convert/converter/AbstractNumberConverter.java index de237d2..f179826 100644 --- a/wicket-util/src/main/java/org/apache/wicket/util/convert/converter/AbstractNumberConverter.java +++ b/wicket-util/src/main/java/org/apache/wicket/util/convert/converter/AbstractNumberConverter.java @@ -18,6 +18,7 @@ package org.apache.wicket.util.convert.converter; import java.math.BigDecimal; import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; import java.text.NumberFormat; import java.util.Locale; import java.util.concurrent.ConcurrentHashMap; @@ -102,9 +103,10 @@ public abstract class AbstractNumberConverter<N extends Number> extends Abstract } else if (value instanceof String) { - // Convert spaces to no-break space (U+00A0) as required by Java formats: + char groupingSeparator = DecimalFormatSymbols.getInstance(locale).getGroupingSeparator(); + // Convert spaces to no-break space (groupingSeparator) as required by Java formats: // http://bugs.sun.com/view_bug.do?bug_id=4510618 - value = ((String)value).replaceAll("(\\d+)\\s(?=\\d)", "$1\u00A0"); + value = ((String)value).replaceAll("(\\d+)\\s(?=\\d)", "$1" + groupingSeparator); } final NumberFormat numberFormat = getNumberFormat(locale); diff --git a/wicket-util/src/test/java/org/apache/wicket/util/convert/converters/ConvertersTest.java b/wicket-util/src/test/java/org/apache/wicket/util/convert/converters/ConvertersTest.java index 2760080..e09c645 100644 --- a/wicket-util/src/test/java/org/apache/wicket/util/convert/converters/ConvertersTest.java +++ b/wicket-util/src/test/java/org/apache/wicket/util/convert/converters/ConvertersTest.java @@ -17,14 +17,15 @@ package org.apache.wicket.util.convert.converters; +import static java.lang.String.format; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; import java.math.BigDecimal; import java.text.ChoiceFormat; +import java.text.DecimalFormatSymbols; import java.text.NumberFormat; -import java.text.ParsePosition; import java.util.Calendar; import java.util.Date; import java.util.Locale; @@ -42,6 +43,8 @@ import org.apache.wicket.util.convert.converter.IntegerConverter; import org.apache.wicket.util.convert.converter.LongConverter; import org.apache.wicket.util.convert.converter.ShortConverter; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledOnJre; +import org.junit.jupiter.api.condition.JRE; @SuppressWarnings("javadoc") final class ConvertersTest @@ -74,13 +77,15 @@ final class ConvertersTest return NumberFormat.getCurrencyInstance(locale); } }; + final Locale locale = Locale.FRENCH; + final DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance(locale); + char groupingSeparator = decimalFormatSymbols.getGroupingSeparator(); + String currencySymbol = decimalFormatSymbols.getCurrencySymbol(); - // \u00A0 = nbsp - // \u00A4 = currency symbol (unspecified currency) - String string = "1\u00A0234,00\u00A0\u00A4"; + String expected = format("1%s234,00\u00A0%s", groupingSeparator, currencySymbol); - assertEquals(string, fc.convertToString(1234f, Locale.FRENCH)); - assertEquals(Float.valueOf(1234f), fc.convertToObject(string, Locale.FRENCH)); + assertEquals(expected, fc.convertToString(1234f, locale)); + assertEquals(Float.valueOf(1234f), fc.convertToObject(expected, locale)); } @Test @@ -383,8 +388,9 @@ final class ConvertersTest }); } + @EnabledOnJre({JRE.JAVA_11, JRE.JAVA_12}) @Test - void validDateConverters() + void validDateConverters_upToJava12() { DateConverter converter = new DateConverter(); @@ -402,6 +408,26 @@ final class ConvertersTest assertEquals(date, converter.convertToObject("10/24/02", Locale.US)); } + @EnabledOnJre({JRE.JAVA_13}) + @Test + void validDateConverters_Java13() + { + DateConverter converter = new DateConverter(); + + assertNull(new DateConverter().convertToObject("", Locale.US)); + + Calendar cal = Calendar.getInstance(DUTCH_LOCALE); + cal.clear(); + cal.set(2002, Calendar.OCTOBER, 24); + Date date = cal.getTime(); + + assertEquals("24-10-2002", converter.convertToString(date, DUTCH_LOCALE)); + assertEquals(date, converter.convertToObject("24-10-02", DUTCH_LOCALE)); + + assertEquals("10/24/02", converter.convertToString(date, Locale.US)); + assertEquals(date, converter.convertToObject("10/24/02", Locale.US)); + } + @Test public void invalidDateConversion1() { @@ -420,8 +446,9 @@ final class ConvertersTest }); } + @EnabledOnJre({JRE.JAVA_11, JRE.JAVA_12}) @Test - void calendarConverter() + void calendarConverter_upToJava12() { CalendarConverter converter = new CalendarConverter(); @@ -439,6 +466,26 @@ final class ConvertersTest assertEquals(cal, converter.convertToObject("5/1/11", Locale.US)); } + @EnabledOnJre({JRE.JAVA_13}) + @Test + void calendarConverter_Java13() + { + CalendarConverter converter = new CalendarConverter(); + + Calendar cal = Calendar.getInstance(DUTCH_LOCALE); + cal.clear(); + cal.set(2011, Calendar.MAY, 1); + + assertEquals("01-05-2011", converter.convertToString(cal, DUTCH_LOCALE)); + assertEquals(cal, converter.convertToObject("1-5-11", DUTCH_LOCALE)); + + cal = Calendar.getInstance(Locale.US); + cal.clear(); + cal.set(2011, Calendar.MAY, 1); + assertEquals("5/1/11", converter.convertToString(cal, Locale.US)); + assertEquals(cal, converter.convertToObject("5/1/11", Locale.US)); + } + @Test public void invalidCalendarConversion1() {
