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));
}