You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2019/06/28 19:11:09 UTC

[lucene-solr] branch master updated: SOLR-13580: update test to account for different versions of java using different locale specific numeric formatting characters

This is an automated email from the ASF dual-hosted git repository.

hossman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/master by this push:
     new 8b72e91  SOLR-13580: update test to account for different versions of java using different locale specific numeric formatting characters
8b72e91 is described below

commit 8b72e91df7b8ea545b6344d665bbb80e27a80aa4
Author: Chris Hostetter <ho...@apache.org>
AuthorDate: Fri Jun 28 12:10:33 2019 -0700

    SOLR-13580: update test to account for different versions of java using different locale specific numeric formatting characters
---
 .../ParsingFieldUpdateProcessorsTest.java          | 68 +++++++++-------------
 1 file changed, 29 insertions(+), 39 deletions(-)

diff --git a/solr/core/src/test/org/apache/solr/update/processor/ParsingFieldUpdateProcessorsTest.java b/solr/core/src/test/org/apache/solr/update/processor/ParsingFieldUpdateProcessorsTest.java
index ec978c8..168db8d 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/ParsingFieldUpdateProcessorsTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/ParsingFieldUpdateProcessorsTest.java
@@ -17,8 +17,7 @@
 package org.apache.solr.update.processor;
 
 import java.io.IOException;
-import java.math.RoundingMode;
-import java.text.NumberFormat;
+import java.text.DecimalFormatSymbols;
 import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -37,10 +36,6 @@ import java.util.Map;
 import java.util.Set;
 
 import org.hamcrest.core.IsInstanceOf;
-import org.hamcrest.core.IsEqual;
-import org.hamcrest.core.IsNot;
-
-import static org.junit.Assume.assumeThat;
 
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.schema.IndexSchema;
@@ -291,12 +286,16 @@ public class ParsingFieldUpdateProcessorsTest extends UpdateProcessorTestBase {
   }
 
   public void testParseIntNonRootLocale() throws Exception {
+    final DecimalFormatSymbols ru_RU = DecimalFormatSymbols.getInstance(new Locale("ru","RU"));
+    final char groupChar = ru_RU.getGroupingSeparator();
+    
+    int value = 1089883491;
+    String intString1 = "1089883491";
+    String intString2 = "1"+groupChar+"089"+groupChar+"883"+groupChar+"491";
+    
     IndexSchema schema = h.getCore().getLatestSchema();
     assertNotNull(schema.getFieldOrNull("int_i")); // should match dynamic field "*_i"
     assertNull(schema.getFieldOrNull("not_in_schema"));
-    int value = 1089883491;
-    String intString1 = "1089883491";
-    String intString2 = "1 089 883 491"; // no-break space U+00A0
     SolrInputDocument d = processAdd("parse-int-russian-no-run-processor",
         doc(f("id", "113"), f("int_i", intString1), f("not_in_schema", intString2)));
     assertNotNull(d);
@@ -389,20 +388,16 @@ public class ParsingFieldUpdateProcessorsTest extends UpdateProcessorTestBase {
   }
 
   public void testParseLongNonRootLocale() throws Exception {
-    {
-      final NumberFormat sanityCheck = NumberFormat.getInstance(new Locale("fr","FR"));
-      sanityCheck.setParseIntegerOnly(false);
-      sanityCheck.setRoundingMode(RoundingMode.CEILING);
-      assumeThat("Your JVM appears to have NumberFormat parse bugs using U+00A0 in the fr_FR Locale",
-                 sanityCheck.parse("10 898"), new IsNot(new IsEqual(10L)));
-    }
+    final DecimalFormatSymbols ru_RU = DecimalFormatSymbols.getInstance(new Locale("ru","RU"));
+    final char groupChar = ru_RU.getGroupingSeparator();
+    
+    long value = 1089883491L;
+    String longString1 = "1089883491";
+    String longString2 = "1"+groupChar+"089"+groupChar+"883"+groupChar+"491";
     
     IndexSchema schema = h.getCore().getLatestSchema();
     assertNotNull(schema.getFieldOrNull("long_l")); // should match dynamic field "*_l"
     assertNull(schema.getFieldOrNull("not_in_schema"));
-    long value = 1089883491L;
-    String longString1 = "1089883491";
-    String longString2 = "1 089 883 491"; // no-break space U+00A0
     SolrInputDocument d = processAdd("parse-long-russian-no-run-processor",
                                      doc(f("id", "113"), f("long_l", longString1), f("not_in_schema", longString2)));
     assertNotNull(d);
@@ -480,17 +475,14 @@ public class ParsingFieldUpdateProcessorsTest extends UpdateProcessorTestBase {
   }
 
   public void testParseFloatNonRootLocale() throws Exception {
-    {
-      final NumberFormat sanityCheck = NumberFormat.getInstance(new Locale("fr","FR"));
-      sanityCheck.setParseIntegerOnly(false);
-      sanityCheck.setRoundingMode(RoundingMode.CEILING);
-      assumeThat("Your JVM appears to have NumberFormat parse bugs using U+00A0 in the fr_FR Locale",
-                 sanityCheck.parse("10 898"), new IsNot(new IsEqual(10L)));
-    }
+    final DecimalFormatSymbols fr_FR = DecimalFormatSymbols.getInstance(new Locale("fr","FR"));
+    final char groupChar = fr_FR.getGroupingSeparator();
+    final char decimalChar = fr_FR.getDecimalSeparator();
 
-    float value = 10898.83491f;
-    String floatString1 = "10898,83491";
-    String floatString2 = "10 898,83491"; // no-break space: U+00A0
+    float value = 10898.83491F;
+    String floatString1 = "10898"+decimalChar+"83491";
+    String floatString2 = "10"+groupChar+"898"+decimalChar+"83491";
+    
     IndexSchema schema = h.getCore().getLatestSchema();
     assertNotNull(schema.getFieldOrNull("float_f")); // should match dynamic field "*_f"
     assertNull(schema.getFieldOrNull("not_in_schema"));
@@ -590,19 +582,17 @@ public class ParsingFieldUpdateProcessorsTest extends UpdateProcessorTestBase {
   }
 
   public void testParseDoubleNonRootLocale() throws Exception {
-    {
-      final NumberFormat sanityCheck = NumberFormat.getInstance(new Locale("fr","FR"));
-      sanityCheck.setParseIntegerOnly(false);
-      sanityCheck.setRoundingMode(RoundingMode.CEILING);
-      assumeThat("Your JVM appears to have NumberFormat parse bugs using U+00A0 in the fr_FR Locale",
-                 sanityCheck.parse("10 898"), new IsNot(new IsEqual(10L)));
-    }
+    final DecimalFormatSymbols fr_FR = DecimalFormatSymbols.getInstance(new Locale("fr","FR"));
+    final char groupChar = fr_FR.getGroupingSeparator();
+    final char decimalChar = fr_FR.getDecimalSeparator();
+
+    double value = 10898.83491D;
+    String doubleString1 = "10898"+decimalChar+"83491";
+    String doubleString2 = "10"+groupChar+"898"+decimalChar+"83491";
+    
     IndexSchema schema = h.getCore().getLatestSchema();
     assertNotNull(schema.getFieldOrNull("double_d")); // should match dynamic field "*_d"
     assertNull(schema.getFieldOrNull("not_in_schema"));
-    double value = 10898.83491;
-    String doubleString1 = "10898,83491";
-    String doubleString2 = "10 898,83491"; // no-break space: U+00A0
     SolrInputDocument d = processAdd("parse-double-french-no-run-processor",
                                      doc(f("id", "140"), f("double_d", doubleString1), 
                                          f("not_in_schema", doubleString2)));