LUCENE-3205: Re-add missing extra test for empty enums, also fix distance, as only negative numbers were tested (because of reduced test document count)

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1201375 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Uwe Schindler 2011-11-13 00:28:49 +00:00
parent 19b9b3c96f
commit 82c51029f8
2 changed files with 34 additions and 2 deletions

View File

@ -39,7 +39,7 @@ import org.junit.Test;
public class TestNumericRangeQuery32 extends LuceneTestCase { public class TestNumericRangeQuery32 extends LuceneTestCase {
// distance of entries // distance of entries
private static final int distance = 6666; private static int distance;
// shift the starting of the values to the left, to also have negative values: // shift the starting of the values to the left, to also have negative values:
private static final int startOffset = - 1 << 15; private static final int startOffset = - 1 << 15;
// number of docs to generate for testing // number of docs to generate for testing
@ -52,6 +52,7 @@ public class TestNumericRangeQuery32 extends LuceneTestCase {
@BeforeClass @BeforeClass
public static void beforeClass() throws Exception { public static void beforeClass() throws Exception {
noDocs = atLeast(4096); noDocs = atLeast(4096);
distance = (1 << 30) / noDocs;
directory = newDirectory(); directory = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random, directory, RandomIndexWriter writer = new RandomIndexWriter(random, directory,
newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)) newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random))
@ -377,6 +378,21 @@ public class TestNumericRangeQuery32 extends LuceneTestCase {
} }
} }
@Test
public void testEmptyEnums() throws Exception {
int count=3000;
int lower=(distance*3/2)+startOffset, upper=lower + count*distance + (distance/3);
// test empty enum
assert lower < upper;
assertTrue(0 < countTerms(NumericRangeQuery.newIntRange("field4", 4, lower, upper, true, true)));
assertEquals(0, countTerms(NumericRangeQuery.newIntRange("field4", 4, upper, lower, true, true)));
// test empty enum outside of bounds
lower = distance*noDocs+startOffset;
upper = 2 * lower;
assert lower < upper;
assertEquals(0, countTerms(NumericRangeQuery.newIntRange("field4", 4, lower, upper, true, true)));
}
private int countTerms(MultiTermQuery q) throws Exception { private int countTerms(MultiTermQuery q) throws Exception {
final Terms terms = MultiFields.getTerms(reader, q.getField()); final Terms terms = MultiFields.getTerms(reader, q.getField());
if (terms == null) if (terms == null)

View File

@ -39,7 +39,7 @@ import org.junit.Test;
public class TestNumericRangeQuery64 extends LuceneTestCase { public class TestNumericRangeQuery64 extends LuceneTestCase {
// distance of entries // distance of entries
private static final long distance = 66666L; private static long distance;
// shift the starting of the values to the left, to also have negative values: // shift the starting of the values to the left, to also have negative values:
private static final long startOffset = - 1L << 31; private static final long startOffset = - 1L << 31;
// number of docs to generate for testing // number of docs to generate for testing
@ -52,6 +52,7 @@ public class TestNumericRangeQuery64 extends LuceneTestCase {
@BeforeClass @BeforeClass
public static void beforeClass() throws Exception { public static void beforeClass() throws Exception {
noDocs = atLeast(4096); noDocs = atLeast(4096);
distance = (1L << 60) / noDocs;
directory = newDirectory(); directory = newDirectory();
RandomIndexWriter writer = new RandomIndexWriter(random, directory, RandomIndexWriter writer = new RandomIndexWriter(random, directory,
newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)) newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random))
@ -397,6 +398,21 @@ public class TestNumericRangeQuery64 extends LuceneTestCase {
} }
} }
@Test
public void testEmptyEnums() throws Exception {
int count=3000;
long lower=(distance*3/2)+startOffset, upper=lower + count*distance + (distance/3);
// test empty enum
assert lower < upper;
assertTrue(0 < countTerms(NumericRangeQuery.newLongRange("field4", 4, lower, upper, true, true)));
assertEquals(0, countTerms(NumericRangeQuery.newLongRange("field4", 4, upper, lower, true, true)));
// test empty enum outside of bounds
lower = distance*noDocs+startOffset;
upper = 2L * lower;
assert lower < upper;
assertEquals(0, countTerms(NumericRangeQuery.newLongRange("field4", 4, lower, upper, true, true)));
}
private int countTerms(MultiTermQuery q) throws Exception { private int countTerms(MultiTermQuery q) throws Exception {
final Terms terms = MultiFields.getTerms(reader, q.getField()); final Terms terms = MultiFields.getTerms(reader, q.getField());
if (terms == null) if (terms == null)