diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointPrefixTermsEnum.java b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointPrefixTermsEnum.java index 6429b92d75c..c8975f2bbb3 100644 --- a/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointPrefixTermsEnum.java +++ b/lucene/spatial/src/java/org/apache/lucene/spatial/geopoint/search/GeoPointPrefixTermsEnum.java @@ -55,7 +55,7 @@ final class GeoPointPrefixTermsEnum extends GeoPointTermsEnum { public GeoPointPrefixTermsEnum(final TermsEnum tenum, final GeoPointMultiTermQuery query) { super(tenum, query); this.start = GeoPointField.encodeLatLon(query.minLat, query.minLon); - this.currentRange = new Range(0, shift, true); + this.currentRange = new Range(-1, shift, true); // start shift at maxShift value (from computeMaxShift) this.shift = maxShift; final long mask = (1L << shift) - 1; diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java b/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java index cfd66305389..8aeb5b833a4 100644 --- a/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java +++ b/lucene/spatial/src/test/org/apache/lucene/spatial/geopoint/search/TestGeoPointQuery.java @@ -17,12 +17,15 @@ package org.apache.lucene.spatial.geopoint.search; import org.apache.lucene.document.Document; +import org.apache.lucene.index.IndexReader; +import org.apache.lucene.index.RandomIndexWriter; +import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.geo.BaseGeoPointTestCase; import org.apache.lucene.geo.Polygon; -import org.apache.lucene.geo.Rectangle; import org.apache.lucene.spatial.geopoint.document.GeoPointField; import org.apache.lucene.spatial.geopoint.document.GeoPointField.TermEncoding; +import org.apache.lucene.store.Directory; /** * random testing for GeoPoint query logic @@ -61,25 +64,23 @@ public class TestGeoPointQuery extends BaseGeoPointTestCase { return new GeoPointInPolygonQuery(field, TermEncoding.PREFIX, polygons); } - // TODO: remove these once we get tests passing! + /** explicit test failure for LUCENE-7325 */ + public void testInvalidShift() throws Exception { + Directory dir = newDirectory(); + RandomIndexWriter writer = new RandomIndexWriter(random(), dir); - @Override - protected double nextLongitude() { - return GeoPointTestUtil.nextLongitude(); - } + // add a doc with a point + Document document = new Document(); + addPointToDoc("field", document, 80, -65); + writer.addDocument(document); - @Override - protected double nextLatitude() { - return GeoPointTestUtil.nextLatitude(); - } + // search and verify we found our doc + IndexReader reader = writer.getReader(); + IndexSearcher searcher = newSearcher(reader); + assertEquals(0, searcher.count(newRectQuery("field", 90, 90, -180, 0))); - @Override - protected Rectangle nextBox() { - return GeoPointTestUtil.nextBox(); - } - - @Override - protected Polygon nextPolygon() { - return GeoPointTestUtil.nextPolygon(); + reader.close(); + writer.close(); + dir.close(); } }