You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2015/04/06 11:03:35 UTC

svn commit: r1671497 - in /lucene/dev/trunk/lucene/core/src: java/org/apache/lucene/util/automaton/Automata.java test/org/apache/lucene/util/automaton/TestAutomaton.java

Author: mikemccand
Date: Mon Apr  6 09:03:35 2015
New Revision: 1671497

URL: http://svn.apache.org/r1671497
Log:
fix empty string corner cases

Modified:
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/automaton/Automata.java
    lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/automaton/TestAutomaton.java

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/automaton/Automata.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/automaton/Automata.java?rev=1671497&r1=1671496&r2=1671497&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/automaton/Automata.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/automaton/Automata.java Mon Apr  6 09:03:35 2015
@@ -233,25 +233,27 @@ final public class Automata {
       throw new IllegalArgumentException("maxInclusive must be true when max is null (open ended)");
     }
 
-    if (min != null && min.length == 0 && minInclusive == true) {
-      // Silly empty string corner case:
-      min = null;
-    }
-
     if (min == null) {
-      if (max == null) {
-        // Accepts all terms:
-        return makeAnyBinary();
-      }
       min = new BytesRef();
       minInclusive = true;
     }
+
+    // Empty string corner case:
+    if (max != null && maxInclusive == false && max.length == 1 && max.bytes[max.offset] == 0) {
+      max = new BytesRef();
+      maxInclusive = true;
+    }
+
     int cmp;
     if (max != null) {
       cmp = min.compareTo(max);
     } else {
       cmp = -1;
+      if (min.length == 0 && minInclusive) {
+        return makeAnyBinary();
+      }
     }
+
     if (cmp == 0) {
       if (minInclusive == false || maxInclusive == false) {
         return makeEmpty();

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/automaton/TestAutomaton.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/automaton/TestAutomaton.java?rev=1671497&r1=1671496&r2=1671497&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/automaton/TestAutomaton.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/automaton/TestAutomaton.java Mon Apr  6 09:03:35 2015
@@ -1125,6 +1125,8 @@ public class TestAutomaton extends Lucen
         System.out.println("Original was not minimal:");
         System.out.println("Original:\n" + a.toDot());
         System.out.println("Minimized:\n" + minA.toDot());
+        System.out.println("minTerm=" + minTerm + " minInclusive=" + minInclusive);
+        System.out.println("maxTerm=" + maxTerm + " maxInclusive=" + maxInclusive);
         fail("auotmaton was not minimal");
       }
 
@@ -1233,7 +1235,6 @@ public class TestAutomaton extends Lucen
 
   public void testAcceptAllEmptyStringMin() throws Exception {
     Automaton a = Automata.makeBinaryInterval(new BytesRef(), true, null, true);
-    System.out.println("HERE: " + a.toDot());
     assertTrue(Operations.sameLanguage(Automata.makeAnyBinary(), a));
   }