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()
        {

Reply via email to