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 2016/03/01 18:06:50 UTC

[07/50] [abbrv] lucene-solr git commit: LUCENE-7015: Refactor spatial module to spatial-extras

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test-files/simple-Queries-BBox.txt
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test-files/simple-Queries-BBox.txt b/lucene/spatial/src/test-files/simple-Queries-BBox.txt
deleted file mode 100644
index 9f3d5b0..0000000
--- a/lucene/spatial/src/test-files/simple-Queries-BBox.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-C5 @ IsWithin(ENVELOPE(-6, 6, 6, -6))
-C5 @ BBoxWithin(ENVELOPE(-6, 6, 6, -6))
-C10 @ Contains(ENVELOPE(-6, 6, 6, -6))
-C10 @ IsEqualTo(ENVELOPE(-10, 10, 10, -10))
-C5 C10 @ Intersects(ENVELOPE(-2, 2, 2, -2))
- @ Overlaps(ENVELOPE(-2, 2, 2, -2))
-C5 @ Overlaps(ENVELOPE(-2, 2, 8, -2))
-C5 C10 @ BBoxIntersects(ENVELOPE(-2, 2, 2, -2))
-NW15 @ IsDisjointTo(ENVELOPE(-10, 10, 10, -10))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test-files/states-Intersects-BBox.txt
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test-files/states-Intersects-BBox.txt b/lucene/spatial/src/test-files/states-Intersects-BBox.txt
deleted file mode 100644
index a45df7b..0000000
--- a/lucene/spatial/src/test-files/states-Intersects-BBox.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-WY CO	@ Intersects(ENVELOPE(-106.964844, -105.734375, 42.800781, 39.460938))
-TX @ Intersects(ENVELOPE(-99.669922, -98.439453, 32.253906, 30.583984))
-MS TX LA @ Intersects(ENVELOPE(-95.363281, -90.133789, 32.473633, 29.792969))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test-files/states-IsWithin-BBox.txt
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test-files/states-IsWithin-BBox.txt b/lucene/spatial/src/test-files/states-IsWithin-BBox.txt
deleted file mode 100644
index 6a504da..0000000
--- a/lucene/spatial/src/test-files/states-IsWithin-BBox.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-KS	@ IsWithin(ENVELOPE(-103.493164, -93.825195, 41.086914, 36.208984))
-WA @ IsWithin(ENVELOPE(-126.916016, -115.314453, 50.688965, 44.36084))
-MA CT RI @ IsWithin(ENVELOPE(-73.894043, -69.521484, 43.198242, 40.825195))
-AL GA @ IsWithin(ENVELOPE(-89.472656, -80.244141, 35.90332, 29.311523))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/DistanceStrategyTest.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/DistanceStrategyTest.java b/lucene/spatial/src/test/org/apache/lucene/spatial/DistanceStrategyTest.java
deleted file mode 100644
index 9a29677..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/DistanceStrategyTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.shape.Point;
-import com.spatial4j.core.shape.Shape;
-import org.apache.lucene.document.FieldType;
-import org.apache.lucene.index.IndexOptions;
-import org.apache.lucene.spatial.bbox.BBoxStrategy;
-import org.apache.lucene.spatial.prefix.RecursivePrefixTreeStrategy;
-import org.apache.lucene.spatial.prefix.TermQueryPrefixTreeStrategy;
-import org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.PackedQuadPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.QuadPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree;
-import org.apache.lucene.spatial.serialized.SerializedDVStrategy;
-import org.apache.lucene.spatial.vector.PointVectorStrategy;
-import org.junit.Test;
-
-public class DistanceStrategyTest extends StrategyTestCase {
-  @ParametersFactory(argumentFormatting = "strategy=%s")
-  public static Iterable<Object[]> parameters() {
-    List<Object[]> ctorArgs = new ArrayList<>();
-
-    SpatialContext ctx = SpatialContext.GEO;
-    SpatialPrefixTree grid;
-    SpatialStrategy strategy;
-
-    grid = new QuadPrefixTree(ctx,25);
-    strategy = new RecursivePrefixTreeStrategy(grid, "recursive_quad");
-    ctorArgs.add(new Object[]{strategy.getFieldName(), strategy});
-
-    grid = new GeohashPrefixTree(ctx,12);
-    strategy = new TermQueryPrefixTreeStrategy(grid, "termquery_geohash");
-    ctorArgs.add(new Object[]{strategy.getFieldName(), strategy});
-
-    grid = new PackedQuadPrefixTree(ctx,25);
-    strategy = new RecursivePrefixTreeStrategy(grid, "recursive_packedquad");
-    ctorArgs.add(new Object[]{strategy.getFieldName(), strategy});
-
-    strategy = new PointVectorStrategy(ctx, "pointvector");
-    ctorArgs.add(new Object[]{strategy.getFieldName(), strategy});
-
-    strategy = new BBoxStrategy(ctx, "bbox");
-    ctorArgs.add(new Object[]{strategy.getFieldName(), strategy});
-
-    strategy = new SerializedDVStrategy(ctx, "serialized");
-    ctorArgs.add(new Object[]{strategy.getFieldName(), strategy});
-
-    return ctorArgs;
-  }
-
-  public DistanceStrategyTest(String suiteName, SpatialStrategy strategy) {
-    this.ctx = strategy.getSpatialContext();
-    this.strategy = strategy;
-  }
-
-  @Override
-  public void setUp() throws Exception {
-    super.setUp();
-    if (strategy instanceof BBoxStrategy && random().nextBoolean()) {//disable indexing sometimes
-      BBoxStrategy bboxStrategy = (BBoxStrategy)strategy;
-      final FieldType fieldType = new FieldType(bboxStrategy.getFieldType());
-      fieldType.setIndexOptions(IndexOptions.NONE);
-      bboxStrategy.setFieldType(fieldType);
-    }
-  }
-
-  @Override
-  protected boolean needsDocValues() {
-    return true;
-  }
-
-  @Test
-  public void testDistanceOrder() throws IOException {
-    adoc("100", ctx.makePoint(2, 1));
-    adoc("101", ctx.makePoint(-1, 4));
-    adoc("103", (Shape)null);//test score for nothing
-    adoc("999", ctx.makePoint(2, 1));//test deleted
-    commit();
-    deleteDoc("999");
-    commit();
-    //FYI distances are in docid order
-    checkDistValueSource(ctx.makePoint(4, 3), 2.8274937f, 5.0898066f, 180f);
-    checkDistValueSource(ctx.makePoint(0, 4), 3.6043684f, 0.9975641f, 180f);
-  }
-
-  @Test
-  public void testRecipScore() throws IOException {
-    Point p100 = ctx.makePoint(2, 1);
-    adoc("100", p100);
-    Point p101 = ctx.makePoint(-1, 4);
-    adoc("101", p101);
-    adoc("103", (Shape)null);//test score for nothing
-    adoc("999", ctx.makePoint(2, 1));//test deleted
-    commit();
-    deleteDoc("999");
-    commit();
-
-    double dist = ctx.getDistCalc().distance(p100, p101);
-    Shape queryShape = ctx.makeCircle(2.01, 0.99, dist);
-    checkValueSource(strategy.makeRecipDistanceValueSource(queryShape),
-        new float[]{1.00f, 0.10f, 0f}, 0.09f);
-  }
-
-  void checkDistValueSource(Point pt, float... distances) throws IOException {
-    float multiplier = random().nextFloat() * 100f;
-    float[] dists2 = Arrays.copyOf(distances, distances.length);
-    for (int i = 0; i < dists2.length; i++) {
-      dists2[i] *= multiplier;
-    }
-    checkValueSource(strategy.makeDistanceValueSource(pt, multiplier), dists2, 1.0e-3f);
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/PortedSolr3Test.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/PortedSolr3Test.java b/lucene/spatial/src/test/org/apache/lucene/spatial/PortedSolr3Test.java
deleted file mode 100644
index 8506c86..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/PortedSolr3Test.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.distance.DistanceUtils;
-import com.spatial4j.core.shape.Point;
-import com.spatial4j.core.shape.Shape;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.spatial.prefix.RecursivePrefixTreeStrategy;
-import org.apache.lucene.spatial.prefix.TermQueryPrefixTreeStrategy;
-import org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.QuadPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree;
-import org.apache.lucene.spatial.query.SpatialArgs;
-import org.apache.lucene.spatial.query.SpatialOperation;
-import org.apache.lucene.spatial.vector.PointVectorStrategy;
-import org.junit.Test;
-
-/**
- * Based off of Solr 3's SpatialFilterTest.
- */
-public class PortedSolr3Test extends StrategyTestCase {
-
-  @ParametersFactory(argumentFormatting = "strategy=%s")
-  public static Iterable<Object[]> parameters() {
-    List<Object[]> ctorArgs = new ArrayList<>();
-
-    SpatialContext ctx = SpatialContext.GEO;
-    SpatialPrefixTree grid;
-    SpatialStrategy strategy;
-
-    grid = new GeohashPrefixTree(ctx,12);
-    strategy = new RecursivePrefixTreeStrategy(grid, "recursive_geohash");
-    ctorArgs.add(new Object[]{strategy.getFieldName(), strategy});
-
-    grid = new QuadPrefixTree(ctx,25);
-    strategy = new RecursivePrefixTreeStrategy(grid, "recursive_quad");
-    ctorArgs.add(new Object[]{strategy.getFieldName(), strategy});
-
-    grid = new GeohashPrefixTree(ctx,12);
-    strategy = new TermQueryPrefixTreeStrategy(grid, "termquery_geohash");
-    ctorArgs.add(new Object[]{strategy.getFieldName(), strategy});
-
-    strategy = new PointVectorStrategy(ctx, "pointvector");
-    ctorArgs.add(new Object[]{strategy.getFieldName(), strategy});
-
-    return ctorArgs;
-  }
-
-  public PortedSolr3Test(String suiteName, SpatialStrategy strategy) {
-    this.ctx = strategy.getSpatialContext();
-    this.strategy = strategy;
-  }
-
-  private void setupDocs() throws Exception {
-    super.deleteAll();
-    adoc("1", ctx.makePoint(-79.9289094, 32.7693246));
-    adoc("2", ctx.makePoint(-80.9289094, 33.7693246));
-    adoc("3", ctx.makePoint(50.9289094, -32.7693246));
-    adoc("4", ctx.makePoint(60.9289094, -50.7693246));
-    adoc("5", ctx.makePoint(0, 0));
-    adoc("6", ctx.makePoint(0.1, 0.1));
-    adoc("7", ctx.makePoint(-0.1, -0.1));
-    adoc("8", ctx.makePoint(179.9, 0));
-    adoc("9", ctx.makePoint(-179.9, 0));
-    adoc("10", ctx.makePoint(50, 89.9));
-    adoc("11", ctx.makePoint(-130, 89.9));
-    adoc("12", ctx.makePoint(50, -89.9));
-    adoc("13", ctx.makePoint(-130, -89.9));
-    commit();
-  }
-
-
-  @Test
-  public void testIntersections() throws Exception {
-    setupDocs();
-    //Try some edge cases
-      //NOTE: 2nd arg is distance in kilometers
-    checkHitsCircle(ctx.makePoint(1, 1), 175, 3, 5, 6, 7);
-    checkHitsCircle(ctx.makePoint(179.8, 0), 200, 2, 8, 9);
-    checkHitsCircle(ctx.makePoint(50, 89.8), 200, 2, 10, 11);//this goes over the north pole
-    checkHitsCircle(ctx.makePoint(50, -89.8), 200, 2, 12, 13);//this goes over the south pole
-    //try some normal cases
-    checkHitsCircle(ctx.makePoint(-80.0, 33.0), 300, 2);
-    //large distance
-    checkHitsCircle(ctx.makePoint(1, 1), 5000, 3, 5, 6, 7);
-    //Because we are generating a box based on the west/east longitudes and the south/north latitudes, which then
-    //translates to a range query, which is slightly more inclusive.  Thus, even though 0.0 is 15.725 kms away,
-    //it will be included, b/c of the box calculation.
-    checkHitsBBox(ctx.makePoint(0.1, 0.1), 15, 2, 5, 6);
-    //try some more
-    deleteAll();
-    adoc("14", ctx.makePoint(5, 0));
-    adoc("15", ctx.makePoint(15, 0));
-    //3000KM from 0,0, see http://www.movable-type.co.uk/scripts/latlong.html
-    adoc("16", ctx.makePoint(19.79750, 18.71111));
-    adoc("17", ctx.makePoint(-95.436643, 44.043900));
-    commit();
-
-    checkHitsCircle(ctx.makePoint(0, 0), 1000, 1, 14);
-    checkHitsCircle(ctx.makePoint(0, 0), 2000, 2, 14, 15);
-    checkHitsBBox(ctx.makePoint(0, 0), 3000, 3, 14, 15, 16);
-    checkHitsCircle(ctx.makePoint(0, 0), 3001, 3, 14, 15, 16);
-    checkHitsCircle(ctx.makePoint(0, 0), 3000.1, 3, 14, 15, 16);
-
-    //really fine grained distance and reflects some of the vagaries of how we are calculating the box
-    checkHitsCircle(ctx.makePoint(-96.789603, 43.517030), 109, 0);
-
-    // falls outside of the real distance, but inside the bounding box
-    checkHitsCircle(ctx.makePoint(-96.789603, 43.517030), 110, 0);
-    checkHitsBBox(ctx.makePoint(-96.789603, 43.517030), 110, 1, 17);
-  }
-
-  //---- these are similar to Solr test methods
-
-  private void checkHitsCircle(Point pt, double distKM, int assertNumFound, int... assertIds) {
-    _checkHits(false, pt, distKM, assertNumFound, assertIds);
-  }
-  private void checkHitsBBox(Point pt, double distKM, int assertNumFound, int... assertIds) {
-    _checkHits(true, pt, distKM, assertNumFound, assertIds);
-  }
-
-  private void _checkHits(boolean bbox, Point pt, double distKM, int assertNumFound, int... assertIds) {
-    SpatialOperation op = SpatialOperation.Intersects;
-    double distDEG = DistanceUtils.dist2Degrees(distKM, DistanceUtils.EARTH_MEAN_RADIUS_KM);
-    Shape shape = ctx.makeCircle(pt, distDEG);
-    if (bbox)
-      shape = shape.getBoundingBox();
-
-    SpatialArgs args = new SpatialArgs(op,shape);
-    //args.setDistPrecision(0.025);
-    Query query = strategy.makeQuery(args);
-    SearchResults results = executeQuery(query, 100);
-    assertEquals(""+shape,assertNumFound,results.numFound);
-    if (assertIds != null) {
-      Set<Integer> resultIds = new HashSet<>();
-      for (SearchResult result : results.results) {
-        resultIds.add(Integer.valueOf(result.document.get("id")));
-      }
-      for (int assertId : assertIds) {
-        assertTrue("has " + assertId, resultIds.contains(assertId));
-      }
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/QueryEqualsHashCodeTest.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/QueryEqualsHashCodeTest.java b/lucene/spatial/src/test/org/apache/lucene/spatial/QueryEqualsHashCodeTest.java
deleted file mode 100644
index b1a5e54..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/QueryEqualsHashCodeTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.shape.Shape;
-import org.apache.lucene.spatial.bbox.BBoxStrategy;
-import org.apache.lucene.spatial.composite.CompositeSpatialStrategy;
-import org.apache.lucene.spatial.prefix.RecursivePrefixTreeStrategy;
-import org.apache.lucene.spatial.prefix.TermQueryPrefixTreeStrategy;
-import org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.QuadPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree;
-import org.apache.lucene.spatial.query.SpatialArgs;
-import org.apache.lucene.spatial.query.SpatialOperation;
-import org.apache.lucene.spatial.serialized.SerializedDVStrategy;
-import org.apache.lucene.spatial.vector.PointVectorStrategy;
-import org.apache.lucene.util.LuceneTestCase;
-import org.junit.Test;
-
-public class QueryEqualsHashCodeTest extends LuceneTestCase {
-
-  private final SpatialContext ctx = SpatialContext.GEO;
-
-  private SpatialOperation predicate;
-
-  @Test
-  public void testEqualsHashCode() {
-
-    switch (random().nextInt(4)) {//0-3
-      case 0: predicate = SpatialOperation.Contains; break;
-      case 1: predicate = SpatialOperation.IsWithin; break;
-
-      default: predicate = SpatialOperation.Intersects; break;
-    }
-    final SpatialPrefixTree gridQuad = new QuadPrefixTree(ctx,10);
-    final SpatialPrefixTree gridGeohash = new GeohashPrefixTree(ctx,10);
-
-    Collection<SpatialStrategy> strategies = new ArrayList<>();
-    RecursivePrefixTreeStrategy recursive_geohash = new RecursivePrefixTreeStrategy(gridGeohash, "recursive_geohash");
-    strategies.add(recursive_geohash);
-    strategies.add(new TermQueryPrefixTreeStrategy(gridQuad, "termquery_quad"));
-    strategies.add(new PointVectorStrategy(ctx, "pointvector"));
-    strategies.add(new BBoxStrategy(ctx, "bbox"));
-    final SerializedDVStrategy serialized = new SerializedDVStrategy(ctx, "serialized");
-    strategies.add(serialized);
-    strategies.add(new CompositeSpatialStrategy("composite", recursive_geohash, serialized));
-    for (SpatialStrategy strategy : strategies) {
-      testEqualsHashcode(strategy);
-    }
-  }
-
-  private void testEqualsHashcode(final SpatialStrategy strategy) {
-    final SpatialArgs args1 = makeArgs1();
-    final SpatialArgs args2 = makeArgs2();
-    testEqualsHashcode(args1, args2, new ObjGenerator() {
-      @Override
-      public Object gen(SpatialArgs args) {
-        return strategy.makeQuery(args);
-      }
-    });
-    testEqualsHashcode(args1, args2, new ObjGenerator() {
-      @Override
-      public Object gen(SpatialArgs args) {
-        return strategy.makeDistanceValueSource(args.getShape().getCenter());
-      }
-    });
-  }
-
-  private void testEqualsHashcode(SpatialArgs args1, SpatialArgs args2, ObjGenerator generator) {
-    Object first;
-    try {
-      first = generator.gen(args1);
-    } catch (UnsupportedOperationException e) {
-      return;
-    }
-    if (first == null)
-      return;//unsupported op?
-    Object second = generator.gen(args1);//should be the same
-    assertEquals(first, second);
-    assertEquals(first.hashCode(), second.hashCode());
-    assertTrue(args1.equals(args2) == false);
-    second = generator.gen(args2);//now should be different
-    assertTrue(first.equals(second) == false);
-    assertTrue(first.hashCode() != second.hashCode());
-  }
-
-  private SpatialArgs makeArgs1() {
-    final Shape shape1 = ctx.makeRectangle(0, 0, 10, 10);
-    return new SpatialArgs(predicate, shape1);
-  }
-
-  private SpatialArgs makeArgs2() {
-    final Shape shape2 = ctx.makeRectangle(0, 0, 20, 20);
-    return new SpatialArgs(predicate, shape2);
-  }
-
-  interface ObjGenerator {
-    Object gen(SpatialArgs args);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialArgsTest.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialArgsTest.java b/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialArgsTest.java
deleted file mode 100644
index 09b5d46..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialArgsTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.shape.Shape;
-import org.apache.lucene.spatial.query.SpatialArgs;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-public class SpatialArgsTest {
-
-  @Test
-  public void calcDistanceFromErrPct() {
-    final SpatialContext ctx = SpatialContext.GEO;
-    final double DEP = 0.5;//distErrPct
-
-    //the result is the diagonal distance from the center to the closest corner,
-    // times distErrPct
-
-    Shape superwide = ctx.makeRectangle(-180, 180, 0, 0);
-    //0 distErrPct means 0 distance always
-    assertEquals(0, SpatialArgs.calcDistanceFromErrPct(superwide, 0, ctx), 0);
-    assertEquals(180 * DEP, SpatialArgs.calcDistanceFromErrPct(superwide, DEP, ctx), 0);
-
-    Shape supertall = ctx.makeRectangle(0, 0, -90, 90);
-    assertEquals(90 * DEP, SpatialArgs.calcDistanceFromErrPct(supertall, DEP, ctx), 0);
-
-    Shape upperhalf = ctx.makeRectangle(-180, 180, 0, 90);
-    assertEquals(45 * DEP, SpatialArgs.calcDistanceFromErrPct(upperhalf, DEP, ctx), 0.0001);
-
-    Shape midCircle = ctx.makeCircle(0, 0, 45);
-    assertEquals(60 * DEP, SpatialArgs.calcDistanceFromErrPct(midCircle, DEP, ctx), 0.0001);
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialExample.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialExample.java b/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialExample.java
deleted file mode 100644
index 1bd7159..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialExample.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-import java.io.IOException;
-
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.distance.DistanceUtils;
-import com.spatial4j.core.shape.Point;
-import com.spatial4j.core.shape.Shape;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.NumericDocValuesField;
-import org.apache.lucene.document.StoredField;
-import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.queries.function.ValueSource;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.MatchAllDocsQuery;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.Sort;
-import org.apache.lucene.search.SortField;
-import org.apache.lucene.search.TopDocs;
-import org.apache.lucene.spatial.prefix.RecursivePrefixTreeStrategy;
-import org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree;
-import org.apache.lucene.spatial.query.SpatialArgs;
-import org.apache.lucene.spatial.query.SpatialArgsParser;
-import org.apache.lucene.spatial.query.SpatialOperation;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.RAMDirectory;
-import org.apache.lucene.util.LuceneTestCase;
-
-/**
- * This class serves as example code to show how to use the Lucene spatial
- * module.
- */
-public class SpatialExample extends LuceneTestCase {
-
-  //Note: Test invoked via TestTestFramework.spatialExample()
-
-  public static void main(String[] args) throws Exception {
-    new SpatialExample().test();
-  }
-
-  public void test() throws Exception {
-    init();
-    indexPoints();
-    search();
-  }
-
-  /**
-   * The Spatial4j {@link SpatialContext} is a sort of global-ish singleton
-   * needed by Lucene spatial.  It's a facade to the rest of Spatial4j, acting
-   * as a factory for {@link Shape}s and provides access to reading and writing
-   * them from Strings.
-   */
-  private SpatialContext ctx;//"ctx" is the conventional variable name
-
-  /**
-   * The Lucene spatial {@link SpatialStrategy} encapsulates an approach to
-   * indexing and searching shapes, and providing distance values for them.
-   * It's a simple API to unify different approaches. You might use more than
-   * one strategy for a shape as each strategy has its strengths and weaknesses.
-   * <p />
-   * Note that these are initialized with a field name.
-   */
-  private SpatialStrategy strategy;
-
-  private Directory directory;
-
-  protected void init() {
-    //Typical geospatial context
-    //  These can also be constructed from SpatialContextFactory
-    this.ctx = SpatialContext.GEO;
-
-    int maxLevels = 11;//results in sub-meter precision for geohash
-    //TODO demo lookup by detail distance
-    //  This can also be constructed from SpatialPrefixTreeFactory
-    SpatialPrefixTree grid = new GeohashPrefixTree(ctx, maxLevels);
-
-    this.strategy = new RecursivePrefixTreeStrategy(grid, "myGeoField");
-
-    this.directory = new RAMDirectory();
-  }
-
-  private void indexPoints() throws Exception {
-    IndexWriterConfig iwConfig = new IndexWriterConfig(null);
-    IndexWriter indexWriter = new IndexWriter(directory, iwConfig);
-
-    //Spatial4j is x-y order for arguments
-    indexWriter.addDocument(newSampleDocument(
-        2, ctx.makePoint(-80.93, 33.77)));
-
-    //Spatial4j has a WKT parser which is also "x y" order
-    indexWriter.addDocument(newSampleDocument(
-        4, ctx.readShapeFromWkt("POINT(60.9289094 -50.7693246)")));
-
-    indexWriter.addDocument(newSampleDocument(
-        20, ctx.makePoint(0.1,0.1), ctx.makePoint(0, 0)));
-
-    indexWriter.close();
-  }
-
-  private Document newSampleDocument(int id, Shape... shapes) {
-    Document doc = new Document();
-    doc.add(new StoredField("id", id));
-    doc.add(new NumericDocValuesField("id", id));
-    //Potentially more than one shape in this field is supported by some
-    // strategies; see the javadocs of the SpatialStrategy impl to see.
-    for (Shape shape : shapes) {
-      for (Field f : strategy.createIndexableFields(shape)) {
-        doc.add(f);
-      }
-      //store it too; the format is up to you
-      //  (assume point in this example)
-      Point pt = (Point) shape;
-      doc.add(new StoredField(strategy.getFieldName(), pt.getX()+" "+pt.getY()));
-    }
-
-    return doc;
-  }
-
-  private void search() throws Exception {
-    IndexReader indexReader = DirectoryReader.open(directory);
-    IndexSearcher indexSearcher = new IndexSearcher(indexReader);
-    Sort idSort = new Sort(new SortField("id", SortField.Type.INT));
-
-    //--Filter by circle (<= distance from a point)
-    {
-      //Search with circle
-      //note: SpatialArgs can be parsed from a string
-      SpatialArgs args = new SpatialArgs(SpatialOperation.Intersects,
-          ctx.makeCircle(-80.0, 33.0, DistanceUtils.dist2Degrees(200, DistanceUtils.EARTH_MEAN_RADIUS_KM)));
-      Query query = strategy.makeQuery(args);
-      TopDocs docs = indexSearcher.search(query, 10, idSort);
-      assertDocMatchedIds(indexSearcher, docs, 2);
-      //Now, lets get the distance for the 1st doc via computing from stored point value:
-      // (this computation is usually not redundant)
-      Document doc1 = indexSearcher.doc(docs.scoreDocs[0].doc);
-      String doc1Str = doc1.getField(strategy.getFieldName()).stringValue();
-      //assume doc1Str is "x y" as written in newSampleDocument()
-      int spaceIdx = doc1Str.indexOf(' ');
-      double x = Double.parseDouble(doc1Str.substring(0, spaceIdx));
-      double y = Double.parseDouble(doc1Str.substring(spaceIdx+1));
-      double doc1DistDEG = ctx.calcDistance(args.getShape().getCenter(), x, y);
-      assertEquals(121.6d, DistanceUtils.degrees2Dist(doc1DistDEG, DistanceUtils.EARTH_MEAN_RADIUS_KM), 0.1);
-      //or more simply:
-      assertEquals(121.6d, doc1DistDEG * DistanceUtils.DEG_TO_KM, 0.1);
-    }
-    //--Match all, order by distance ascending
-    {
-      Point pt = ctx.makePoint(60, -50);
-      ValueSource valueSource = strategy.makeDistanceValueSource(pt, DistanceUtils.DEG_TO_KM);//the distance (in km)
-      Sort distSort = new Sort(valueSource.getSortField(false)).rewrite(indexSearcher);//false=asc dist
-      TopDocs docs = indexSearcher.search(new MatchAllDocsQuery(), 10, distSort);
-      assertDocMatchedIds(indexSearcher, docs, 4, 20, 2);
-      //To get the distance, we could compute from stored values like earlier.
-      // However in this example we sorted on it, and the distance will get
-      // computed redundantly.  If the distance is only needed for the top-X
-      // search results then that's not a big deal. Alternatively, try wrapping
-      // the ValueSource with CachingDoubleValueSource then retrieve the value
-      // from the ValueSource now. See LUCENE-4541 for an example.
-    }
-    //demo arg parsing
-    {
-      SpatialArgs args = new SpatialArgs(SpatialOperation.Intersects,
-          ctx.makeCircle(-80.0, 33.0, 1));
-      SpatialArgs args2 = new SpatialArgsParser().parse("Intersects(BUFFER(POINT(-80 33),1))", ctx);
-      assertEquals(args.toString(),args2.toString());
-    }
-
-    indexReader.close();
-  }
-
-  private void assertDocMatchedIds(IndexSearcher indexSearcher, TopDocs docs, int... ids) throws IOException {
-    int[] gotIds = new int[docs.totalHits];
-    for (int i = 0; i < gotIds.length; i++) {
-      gotIds[i] = indexSearcher.doc(docs.scoreDocs[i].doc).getField("id").numericValue().intValue();
-    }
-    assertArrayEquals(ids,gotIds);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialMatchConcern.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialMatchConcern.java b/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialMatchConcern.java
deleted file mode 100644
index e995ee1..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialMatchConcern.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-public class SpatialMatchConcern {
-  public final boolean orderIsImportant;
-  public final boolean resultsAreSuperset; // if the strategy can not give exact answers, but used to limit results
-
-  private SpatialMatchConcern( boolean order, boolean superset ) {
-    this.orderIsImportant = order;
-    this.resultsAreSuperset = superset;
-  }
-
-  public static final SpatialMatchConcern EXACT = new SpatialMatchConcern( true, false );
-  public static final SpatialMatchConcern FILTER = new SpatialMatchConcern( false, false );
-  public static final SpatialMatchConcern SUPERSET = new SpatialMatchConcern( false, true );
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestCase.java b/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestCase.java
deleted file mode 100644
index 31b57f9..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestCase.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.logging.Logger;
-
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.distance.DistanceUtils;
-import com.spatial4j.core.shape.Point;
-import com.spatial4j.core.shape.Rectangle;
-
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.TopDocs;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.uninverting.UninvertingReader;
-import org.apache.lucene.uninverting.UninvertingReader.Type;
-import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.LuceneTestCase.SuppressSysoutChecks;
-import org.apache.lucene.util.TestUtil;
-
-import static com.carrotsearch.randomizedtesting.RandomizedTest.randomDouble;
-import static com.carrotsearch.randomizedtesting.RandomizedTest.randomGaussian;
-import static com.carrotsearch.randomizedtesting.RandomizedTest.randomInt;
-import static com.carrotsearch.randomizedtesting.RandomizedTest.randomIntBetween;
-
-/** A base test class for spatial lucene. It's mostly Lucene generic. */
-@SuppressSysoutChecks(bugUrl = "These tests use JUL extensively.")
-public abstract class SpatialTestCase extends LuceneTestCase {
-
-  protected Logger log = Logger.getLogger(getClass().getName());
-
-  private DirectoryReader indexReader;
-  protected RandomIndexWriter indexWriter;
-  private Directory directory;
-  private Analyzer analyzer;
-  protected IndexSearcher indexSearcher;
-
-  protected SpatialContext ctx;//subclass must initialize
-
-  protected Map<String,Type> uninvertMap = new HashMap<>();
-  
-  @Override
-  public void setUp() throws Exception {
-    super.setUp();
-    // TODO: change this module to index docvalues instead of uninverting
-    uninvertMap.clear();
-    uninvertMap.put("pointvector__x", Type.DOUBLE);
-    uninvertMap.put("pointvector__y", Type.DOUBLE);
-
-    directory = newDirectory();
-    final Random random = random();
-    analyzer = new MockAnalyzer(random);
-    indexWriter = new RandomIndexWriter(random,directory, newIWConfig(random, analyzer));
-    indexReader = UninvertingReader.wrap(indexWriter.getReader(), uninvertMap);
-    indexSearcher = newSearcher(indexReader);
-  }
-
-  protected IndexWriterConfig newIWConfig(Random random, Analyzer analyzer) {
-    final IndexWriterConfig indexWriterConfig = LuceneTestCase.newIndexWriterConfig(random, analyzer);
-    //TODO can we randomly choose a doc-values supported format?
-    if (needsDocValues())
-      indexWriterConfig.setCodec( TestUtil.getDefaultCodec());
-    return indexWriterConfig;
-  }
-
-  protected boolean needsDocValues() {
-    return false;
-  }
-
-  @Override
-  public void tearDown() throws Exception {
-    IOUtils.close(indexWriter, indexReader, analyzer, directory);
-    super.tearDown();
-  }
-
-  // ================================================= Helper Methods ================================================
-
-  protected void addDocument(Document doc) throws IOException {
-    indexWriter.addDocument(doc);
-  }
-
-  protected void addDocumentsAndCommit(List<Document> documents) throws IOException {
-    for (Document document : documents) {
-      indexWriter.addDocument(document);
-    }
-    commit();
-  }
-
-  protected void deleteAll() throws IOException {
-    indexWriter.deleteAll();
-  }
-
-  protected void commit() throws IOException {
-    indexWriter.commit();
-    DirectoryReader newReader = DirectoryReader.openIfChanged(indexReader);
-    if (newReader != null) {
-      IOUtils.close(indexReader);
-      indexReader = newReader;
-    }
-    indexSearcher = newSearcher(indexReader);
-  }
-
-  protected void verifyDocumentsIndexed(int numDocs) {
-    assertEquals(numDocs, indexReader.numDocs());
-  }
-
-  protected SearchResults executeQuery(Query query, int numDocs) {
-    try {
-      TopDocs topDocs = indexSearcher.search(query, numDocs);
-
-      List<SearchResult> results = new ArrayList<>();
-      for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
-        results.add(new SearchResult(scoreDoc.score, indexSearcher.doc(scoreDoc.doc)));
-      }
-      return new SearchResults(topDocs.totalHits, results);
-    } catch (IOException ioe) {
-      throw new RuntimeException("IOException thrown while executing query", ioe);
-    }
-  }
-
-  protected Point randomPoint() {
-    final Rectangle WB = ctx.getWorldBounds();
-    return ctx.makePoint(
-        randomIntBetween((int) WB.getMinX(), (int) WB.getMaxX()),
-        randomIntBetween((int) WB.getMinY(), (int) WB.getMaxY()));
-  }
-
-  protected Rectangle randomRectangle() {
-    return randomRectangle(ctx.getWorldBounds());
-  }
-
-  protected Rectangle randomRectangle(Rectangle bounds) {
-    double[] xNewStartAndWidth = randomSubRange(bounds.getMinX(), bounds.getWidth());
-    double xMin = xNewStartAndWidth[0];
-    double xMax = xMin + xNewStartAndWidth[1];
-    if (bounds.getCrossesDateLine()) {
-      xMin = DistanceUtils.normLonDEG(xMin);
-      xMax = DistanceUtils.normLonDEG(xMax);
-    }
-
-    double[] yNewStartAndHeight = randomSubRange(bounds.getMinY(), bounds.getHeight());
-    double yMin = yNewStartAndHeight[0];
-    double yMax = yMin + yNewStartAndHeight[1];
-
-    return ctx.makeRectangle(xMin, xMax, yMin, yMax);
-  }
-
-  /** Returns new minStart and new length that is inside the range specified by the arguments. */
-  protected double[] randomSubRange(double boundStart, double boundLen) {
-    if (boundLen >= 3 && usually()) { // typical
-      // prefer integers for ease of debugability ... and prefer 1/16th of bound
-      int intBoundStart = (int) Math.ceil(boundStart);
-      int intBoundEnd = (int) (boundStart + boundLen);
-      int intBoundLen = intBoundEnd - intBoundStart;
-      int newLen = (int) randomGaussianMeanMax(intBoundLen / 16.0, intBoundLen);
-      int newStart = intBoundStart + randomInt(intBoundLen - newLen);
-      return new double[]{newStart, newLen};
-    } else { // (no int rounding)
-      double newLen = randomGaussianMeanMax(boundLen / 16, boundLen);
-      double newStart = boundStart + (boundLen - newLen == 0 ? 0 : (randomDouble() % (boundLen - newLen)));
-      return new double[]{newStart, newLen};
-    }
-  }
-
-  private double randomGaussianMinMeanMax(double min, double mean, double max) {
-    assert mean > min;
-    return randomGaussianMeanMax(mean - min, max - min) + min;
-  }
-
-  /**
-   * Within one standard deviation (68% of the time) the result is "close" to
-   * mean. By "close": when greater than mean, it's the lesser of 2*mean or half
-   * way to max, when lesser than mean, it's the greater of max-2*mean or half
-   * way to 0. The other 32% of the time it's in the rest of the range, touching
-   * either 0 or max but never exceeding.
-   */
-  private double randomGaussianMeanMax(double mean, double max) {
-    // DWS: I verified the results empirically
-    assert mean <= max && mean >= 0;
-    double g = randomGaussian();
-    double mean2 = mean;
-    double flip = 1;
-    if (g < 0) {
-      mean2 = max - mean;
-      flip = -1;
-      g *= -1;
-    }
-    // pivot is the distance from mean2 towards max where the boundary of
-    // 1 standard deviation alters the calculation
-    double pivotMax = max - mean2;
-    double pivot = Math.min(mean2, pivotMax / 2);//from 0 to max-mean2
-    assert pivot >= 0 && pivotMax >= pivot && g >= 0;
-    double pivotResult;
-    if (g <= 1)
-      pivotResult = pivot * g;
-    else
-      pivotResult = Math.min(pivotMax, (g - 1) * (pivotMax - pivot) + pivot);
-
-    double result = mean + flip * pivotResult;
-    return (result < 0 || result > max) ? mean : result; // due this due to computational numerical precision
-  }
-
-  // ================================================= Inner Classes =================================================
-
-  protected static class SearchResults {
-
-    public int numFound;
-    public List<SearchResult> results;
-
-    public SearchResults(int numFound, List<SearchResult> results) {
-      this.numFound = numFound;
-      this.results = results;
-    }
-
-    public StringBuilder toDebugString() {
-      StringBuilder str = new StringBuilder();
-      str.append("found: ").append(numFound).append('[');
-      for(SearchResult r : results) {
-        String id = r.getId();
-        str.append(id).append(", ");
-      }
-      str.append(']');
-      return str;
-    }
-
-    @Override
-    public String toString() {
-      return "[found:"+numFound+" "+results+"]";
-    }
-  }
-
-  protected static class SearchResult {
-
-    public float score;
-    public Document document;
-
-    public SearchResult(float score, Document document) {
-      this.score = score;
-      this.document = document;
-    }
-
-    public String getId() {
-      return document.get("id");
-    }
-    
-    @Override
-    public String toString() {
-      return "["+score+"="+document+"]";
-    }
-  }
-}
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestData.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestData.java b/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestData.java
deleted file mode 100644
index 27d47b3..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestData.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.shape.Shape;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-// This class is modelled after SpatialTestQuery.
-// Before Lucene 4.7, this was a bit different in Spatial4j as SampleData & SampleDataReader.
-
-public class SpatialTestData {
-  public String id;
-  public String name;
-  public Shape shape;
-
-  /** Reads the stream, consuming a format that is a tab-separated values of 3 columns:
-   * an "id", a "name" and the "shape".  Empty lines and lines starting with a '#' are skipped.
-   * The stream is closed.
-   */
-  public static Iterator<SpatialTestData> getTestData(InputStream in, SpatialContext ctx) throws IOException {
-    List<SpatialTestData> results = new ArrayList<>();
-    BufferedReader bufInput = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
-    try {
-      String line;
-      while ((line = bufInput.readLine()) != null) {
-        if (line.length() == 0 || line.charAt(0) == '#')
-          continue;
-
-        SpatialTestData data = new SpatialTestData();
-        String[] vals = line.split("\t");
-        if (vals.length != 3)
-          throw new RuntimeException("bad format; expecting 3 tab-separated values for line: "+line);
-        data.id = vals[0];
-        data.name = vals[1];
-        try {
-          data.shape = ctx.readShapeFromWkt(vals[2]);
-        } catch (ParseException e) {
-          throw new RuntimeException(e);
-        }
-        results.add(data);
-      }
-    } finally {
-      bufInput.close();
-    }
-    return results.iterator();
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestQuery.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestQuery.java b/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestQuery.java
deleted file mode 100644
index bac90cf..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/SpatialTestQuery.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-import com.spatial4j.core.context.SpatialContext;
-
-import org.apache.lucene.spatial.query.SpatialArgs;
-import org.apache.lucene.spatial.query.SpatialArgsParser;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-/**
- * Helper class to execute queries
- */
-public class SpatialTestQuery {
-  public String testname;
-  public String line;
-  public int lineNumber = -1;
-  public SpatialArgs args;
-  public List<String> ids = new ArrayList<>();
-
-  /**
-   * Get Test Queries.  The InputStream is closed.
-   */
-  public static Iterator<SpatialTestQuery> getTestQueries(
-      final SpatialArgsParser parser,
-      final SpatialContext ctx,
-      final String name,
-      final InputStream in ) throws IOException {
-
-    List<SpatialTestQuery> results = new ArrayList<>();
-
-    BufferedReader bufInput = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
-    try {
-      String line;
-      for (int lineNumber = 1; (line = bufInput.readLine()) != null; lineNumber++) {
-        SpatialTestQuery test = new SpatialTestQuery();
-        test.line = line;
-        test.lineNumber = lineNumber;
-
-        try {
-          // skip a comment
-          if( line.startsWith( "[" ) ) {
-            int idx = line.indexOf( ']' );
-            if( idx > 0 ) {
-              line = line.substring( idx+1 );
-            }
-          }
-
-          int idx = line.indexOf('@');
-          StringTokenizer st = new StringTokenizer(line.substring(0, idx));
-          while (st.hasMoreTokens()) {
-            test.ids.add(st.nextToken().trim());
-          }
-          test.args = parser.parse(line.substring(idx + 1).trim(), ctx);
-          results.add(test);
-        }
-        catch( Exception ex ) {
-          throw new RuntimeException( "invalid query line: "+test.line, ex );
-        }
-      }
-    } finally {
-      bufInput.close();
-    }
-    return results.iterator();
-  }
-
-  @Override
-  public String toString() {
-    if (line != null)
-      return line;
-    return args.toString()+" "+ids;
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/StrategyTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/StrategyTestCase.java b/lucene/spatial/src/test/org/apache/lucene/spatial/StrategyTestCase.java
deleted file mode 100644
index 00e437b..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/StrategyTestCase.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Logger;
-
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.shape.Shape;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.StoredField;
-import org.apache.lucene.document.StringField;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.queries.function.FunctionQuery;
-import org.apache.lucene.queries.function.ValueSource;
-import org.apache.lucene.search.CheckHits;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.TopDocs;
-import org.apache.lucene.spatial.query.SpatialArgs;
-import org.apache.lucene.spatial.query.SpatialArgsParser;
-import org.apache.lucene.spatial.query.SpatialOperation;
-
-public abstract class StrategyTestCase extends SpatialTestCase {
-
-  public static final String DATA_SIMPLE_BBOX = "simple-bbox.txt";
-  public static final String DATA_STATES_POLY = "states-poly.txt";
-  public static final String DATA_STATES_BBOX = "states-bbox.txt";
-  public static final String DATA_COUNTRIES_POLY = "countries-poly.txt";
-  public static final String DATA_COUNTRIES_BBOX = "countries-bbox.txt";
-  public static final String DATA_WORLD_CITIES_POINTS = "world-cities-points.txt";
-
-  public static final String QTEST_States_IsWithin_BBox   = "states-IsWithin-BBox.txt";
-  public static final String QTEST_States_Intersects_BBox = "states-Intersects-BBox.txt";
-  public static final String QTEST_Cities_Intersects_BBox = "cities-Intersects-BBox.txt";
-  public static final String QTEST_Simple_Queries_BBox = "simple-Queries-BBox.txt";
-
-  protected Logger log = Logger.getLogger(getClass().getName());
-
-  protected final SpatialArgsParser argsParser = new SpatialArgsParser();
-
-  protected SpatialStrategy strategy;
-  protected boolean storeShape = true;
-
-  protected void executeQueries(SpatialMatchConcern concern, String... testQueryFile) throws IOException {
-    log.info("testing queried for strategy "+strategy);
-    for( String path : testQueryFile ) {
-      Iterator<SpatialTestQuery> testQueryIterator = getTestQueries(path, ctx);
-      runTestQueries(testQueryIterator, concern);
-    }
-  }
-
-  protected void getAddAndVerifyIndexedDocuments(String testDataFile) throws IOException {
-    List<Document> testDocuments = getDocuments(testDataFile);
-    addDocumentsAndCommit(testDocuments);
-    verifyDocumentsIndexed(testDocuments.size());
-  }
-
-  protected List<Document> getDocuments(String testDataFile) throws IOException {
-    return getDocuments(getSampleData(testDataFile));
-  }
-
-  protected List<Document> getDocuments(Iterator<SpatialTestData> sampleData) {
-    List<Document> documents = new ArrayList<>();
-    while (sampleData.hasNext()) {
-      SpatialTestData data = sampleData.next();
-      Document document = new Document();
-      document.add(new StringField("id", data.id, Field.Store.YES));
-      document.add(new StringField("name", data.name, Field.Store.YES));
-      Shape shape = data.shape;
-      shape = convertShapeFromGetDocuments(shape);
-      if (shape != null) {
-        for (Field f : strategy.createIndexableFields(shape)) {
-          document.add(f);
-        }
-        if (storeShape)//just for diagnostics
-          document.add(new StoredField(strategy.getFieldName(), shape.toString()));
-      }
-
-      documents.add(document);
-    }
-    return documents;
-  }
-
-  /** Subclasses may override to transform or remove a shape for indexing */
-  protected Shape convertShapeFromGetDocuments(Shape shape) {
-    return shape;
-  }
-
-  protected Iterator<SpatialTestData> getSampleData(String testDataFile) throws IOException {
-    String path = "data/" + testDataFile;
-    InputStream stream = getClass().getClassLoader().getResourceAsStream(path);
-    if (stream == null)
-      throw new FileNotFoundException("classpath resource not found: "+path);
-    return SpatialTestData.getTestData(stream, ctx);//closes the InputStream
-  }
-
-  protected Iterator<SpatialTestQuery> getTestQueries(String testQueryFile, SpatialContext ctx) throws IOException {
-    InputStream in = getClass().getClassLoader().getResourceAsStream(testQueryFile);
-    return SpatialTestQuery.getTestQueries(
-        argsParser, ctx, testQueryFile, in );//closes the InputStream
-  }
-
-  public void runTestQueries(
-      Iterator<SpatialTestQuery> queries,
-      SpatialMatchConcern concern) {
-    while (queries.hasNext()) {
-      SpatialTestQuery q = queries.next();
-      runTestQuery(concern, q);
-    }
-  }
-
-  public void runTestQuery(SpatialMatchConcern concern, SpatialTestQuery q) {
-    String msg = q.toString(); //"Query: " + q.args.toString(ctx);
-    SearchResults got = executeQuery(makeQuery(q), Math.max(100, q.ids.size()+1));
-    if (storeShape && got.numFound > 0) {
-      //check stored value is there
-      assertNotNull(got.results.get(0).document.get(strategy.getFieldName()));
-    }
-    if (concern.orderIsImportant) {
-      Iterator<String> ids = q.ids.iterator();
-      for (SearchResult r : got.results) {
-        String id = r.document.get("id");
-        if (!ids.hasNext()) {
-          fail(msg + " :: Did not get enough results.  Expect" + q.ids + ", got: " + got.toDebugString());
-        }
-        assertEquals("out of order: " + msg, ids.next(), id);
-      }
-
-      if (ids.hasNext()) {
-        fail(msg + " :: expect more results then we got: " + ids.next());
-      }
-    } else {
-      // We are looking at how the results overlap
-      if (concern.resultsAreSuperset) {
-        Set<String> found = new HashSet<>();
-        for (SearchResult r : got.results) {
-          found.add(r.document.get("id"));
-        }
-        for (String s : q.ids) {
-          if (!found.contains(s)) {
-            fail("Results are mising id: " + s + " :: " + found);
-          }
-        }
-      } else {
-        List<String> found = new ArrayList<>();
-        for (SearchResult r : got.results) {
-          found.add(r.document.get("id"));
-        }
-
-        // sort both so that the order is not important
-        Collections.sort(q.ids);
-        Collections.sort(found);
-        assertEquals(msg, q.ids.toString(), found.toString());
-      }
-    }
-  }
-
-  protected Query makeQuery(SpatialTestQuery q) {
-    return strategy.makeQuery(q.args);
-  }
-
-  protected void adoc(String id, String shapeStr) throws IOException, ParseException {
-    Shape shape = shapeStr==null ? null : ctx.readShapeFromWkt(shapeStr);
-    addDocument(newDoc(id, shape));
-  }
-  protected void adoc(String id, Shape shape) throws IOException {
-    addDocument(newDoc(id, shape));
-  }
-
-  protected Document newDoc(String id, Shape shape) {
-    Document doc = new Document();
-    doc.add(new StringField("id", id, Field.Store.YES));
-    if (shape != null) {
-      for (Field f : strategy.createIndexableFields(shape)) {
-        doc.add(f);
-      }
-      if (storeShape)
-        doc.add(new StoredField(strategy.getFieldName(), shape.toString()));//not to be parsed; just for debug
-    }
-    return doc;
-  }
-
-  protected void deleteDoc(String id) throws IOException {
-    indexWriter.deleteDocuments(new TermQuery(new Term("id", id)));
-  }
-
-  /** scores[] are in docId order */
-  protected void checkValueSource(ValueSource vs, float scores[], float delta) throws IOException {
-    FunctionQuery q = new FunctionQuery(vs);
-
-//    //TODO is there any point to this check?
-//    int expectedDocs[] = new int[scores.length];//fill with ascending 0....length-1
-//    for (int i = 0; i < expectedDocs.length; i++) {
-//      expectedDocs[i] = i;
-//    }
-//    CheckHits.checkHits(random(), q, "", indexSearcher, expectedDocs);
-
-    //TopDocs is sorted but we actually don't care about the order
-    TopDocs docs = indexSearcher.search(q, 1000);//calculates the score
-    for (int i = 0; i < docs.scoreDocs.length; i++) {
-      ScoreDoc gotSD = docs.scoreDocs[i];
-      float expectedScore = scores[gotSD.doc];
-      assertEquals("Not equal for doc "+gotSD.doc, expectedScore, gotSD.score, delta);
-    }
-
-    CheckHits.checkExplanations(q, "", indexSearcher);
-  }
-
-  protected void testOperation(Shape indexedShape, SpatialOperation operation,
-                               Shape queryShape, boolean match) throws IOException {
-    assertTrue("Faulty test",
-        operation.evaluate(indexedShape, queryShape) == match ||
-            indexedShape.equals(queryShape) &&
-              (operation == SpatialOperation.Contains || operation == SpatialOperation.IsWithin));
-    adoc("0", indexedShape);
-    commit();
-    Query query = strategy.makeQuery(new SpatialArgs(operation, queryShape));
-    SearchResults got = executeQuery(query, 1);
-    assert got.numFound <= 1 : "unclean test env";
-    if ((got.numFound == 1) != match)
-      fail(operation+" I:" + indexedShape + " Q:" + queryShape);
-    deleteAll();//clean up after ourselves
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/TestTestFramework.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/TestTestFramework.java b/lucene/spatial/src/test/org/apache/lucene/spatial/TestTestFramework.java
deleted file mode 100644
index 6a8d59c..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/TestTestFramework.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial;
-
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.shape.Rectangle;
-import org.apache.lucene.spatial.query.SpatialArgsParser;
-import org.apache.lucene.spatial.query.SpatialOperation;
-import org.apache.lucene.util.LuceneTestCase;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-
-/**
- * Make sure we are reading the tests as expected
- */
-public class TestTestFramework extends LuceneTestCase {
-
-  @Test
-  public void testQueries() throws IOException {
-    String name = StrategyTestCase.QTEST_Cities_Intersects_BBox;
-
-    InputStream in = getClass().getClassLoader().getResourceAsStream(name);
-    SpatialContext ctx = SpatialContext.GEO;
-    Iterator<SpatialTestQuery> iter = SpatialTestQuery.getTestQueries(
-        new SpatialArgsParser(), ctx, name, in );//closes the InputStream
-    List<SpatialTestQuery> tests = new ArrayList<>();
-    while( iter.hasNext() ) {
-      tests.add( iter.next() );
-    }
-    Assert.assertEquals( 3, tests.size() );
-
-    SpatialTestQuery sf = tests.get(0);
-    // assert
-    Assert.assertEquals( 1, sf.ids.size() );
-    Assert.assertTrue( sf.ids.get(0).equals( "G5391959" ) );
-    Assert.assertTrue( sf.args.getShape() instanceof Rectangle);
-    Assert.assertEquals(SpatialOperation.Intersects, sf.args.getOperation());
-  }
-
-  @Test
-  public void spatialExample() throws Exception {
-    //kind of a hack so that SpatialExample is tested despite
-    // it not starting or ending with "Test".
-    SpatialExample.main(null);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/bbox/TestBBoxStrategy.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/bbox/TestBBoxStrategy.java b/lucene/spatial/src/test/org/apache/lucene/spatial/bbox/TestBBoxStrategy.java
deleted file mode 100644
index 6140996..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/bbox/TestBBoxStrategy.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial.bbox;
-
-import java.io.IOException;
-
-import com.carrotsearch.randomizedtesting.annotations.Repeat;
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.context.SpatialContextFactory;
-import com.spatial4j.core.distance.DistanceUtils;
-import com.spatial4j.core.shape.Rectangle;
-import com.spatial4j.core.shape.Shape;
-import com.spatial4j.core.shape.impl.RectangleImpl;
-import org.apache.lucene.document.FieldType;
-import org.apache.lucene.index.DocValuesType;
-import org.apache.lucene.index.IndexOptions;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.spatial.SpatialMatchConcern;
-import org.apache.lucene.spatial.prefix.RandomSpatialOpStrategyTestCase;
-import org.apache.lucene.spatial.query.SpatialArgs;
-import org.apache.lucene.spatial.query.SpatialOperation;
-import org.apache.lucene.spatial.util.ShapeAreaValueSource;
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class TestBBoxStrategy extends RandomSpatialOpStrategyTestCase {
-
-  @Override
-  protected boolean needsDocValues() {
-    return true;
-  }
-
-  @Override
-  protected Shape randomIndexedShape() {
-    Rectangle world = ctx.getWorldBounds();
-    if (random().nextInt(10) == 0) // increased chance of getting one of these
-      return world;
-
-    int worldWidth = (int) Math.round(world.getWidth());
-    int deltaLeft = nextIntInclusive(worldWidth);
-    int deltaRight = nextIntInclusive(worldWidth - deltaLeft);
-    int worldHeight = (int) Math.round(world.getHeight());
-    int deltaTop = nextIntInclusive(worldHeight);
-    int deltaBottom = nextIntInclusive(worldHeight - deltaTop);
-    if (ctx.isGeo() && (deltaLeft != 0 || deltaRight != 0)) {
-      //if geo & doesn't world-wrap, we shift randomly to potentially cross dateline
-      int shift = nextIntInclusive(360);
-      return ctx.makeRectangle(
-          DistanceUtils.normLonDEG(world.getMinX() + deltaLeft + shift),
-          DistanceUtils.normLonDEG(world.getMaxX() - deltaRight + shift),
-          world.getMinY() + deltaBottom, world.getMaxY() - deltaTop);
-    } else {
-      return ctx.makeRectangle(
-          world.getMinX() + deltaLeft, world.getMaxX() - deltaRight,
-          world.getMinY() + deltaBottom, world.getMaxY() - deltaTop);
-    }
-  }
-
-  /** next int, inclusive, rounds to multiple of 10 if given evenly divisible. */
-  private int nextIntInclusive(int toInc) {
-    final int DIVIS = 10;
-    if (toInc % DIVIS == 0) {
-      return random().nextInt(toInc/DIVIS + 1) * DIVIS;
-    } else {
-      return random().nextInt(toInc + 1);
-    }
-  }
-
-  @Override
-  protected Shape randomQueryShape() {
-    return randomIndexedShape();
-  }
-
-  @Test
-  @Repeat(iterations = 15)
-  public void testOperations() throws IOException {
-    //setup
-    if (random().nextInt(4) > 0) {//75% of the time choose geo (more interesting to test)
-      this.ctx = SpatialContext.GEO;
-    } else {
-      SpatialContextFactory factory = new SpatialContextFactory();
-      factory.geo = false;
-      factory.worldBounds = new RectangleImpl(-300, 300, -100, 100, null);
-      this.ctx = factory.newSpatialContext();
-    }
-    this.strategy = new BBoxStrategy(ctx, "bbox");
-    //test we can disable docValues for predicate tests
-    if (random().nextBoolean()) {
-      BBoxStrategy bboxStrategy = (BBoxStrategy) strategy;
-      FieldType fieldType = new FieldType(bboxStrategy.getFieldType());
-      fieldType.setDocValuesType(DocValuesType.NONE);
-      bboxStrategy.setFieldType(fieldType);
-    }
-    for (SpatialOperation operation : SpatialOperation.values()) {
-      if (operation == SpatialOperation.Overlaps)
-        continue;//unsupported
-      testOperationRandomShapes(operation);
-
-      deleteAll();
-      commit();
-    }
-  }
-
-  @Test
-  public void testIntersectsBugDatelineEdge() throws IOException {
-    setupGeo();
-    testOperation(
-        ctx.makeRectangle(160, 180, -10, 10),
-        SpatialOperation.Intersects,
-        ctx.makeRectangle(-180, -160, -10, 10), true);
-  }
-
-  @Test
-  public void testIntersectsWorldDatelineEdge() throws IOException {
-    setupGeo();
-    testOperation(
-        ctx.makeRectangle(-180, 180, -10, 10),
-        SpatialOperation.Intersects,
-        ctx.makeRectangle(180, 180, -10, 10), true);
-  }
-
-  @Test
-  public void testWithinBugDatelineEdge() throws IOException {
-    setupGeo();
-    testOperation(
-        ctx.makeRectangle(180, 180, -10, 10),
-        SpatialOperation.IsWithin,
-        ctx.makeRectangle(-180, -100, -10, 10), true);
-  }
-
-  @Test
-  public void testContainsBugDatelineEdge() throws IOException {
-    setupGeo();
-    testOperation(
-        ctx.makeRectangle(-180, -150, -10, 10),
-        SpatialOperation.Contains,
-        ctx.makeRectangle(180, 180, -10, 10), true);
-  }
-
-  @Test
-  public void testWorldContainsXDL() throws IOException {
-    setupGeo();
-    testOperation(
-        ctx.makeRectangle(-180, 180, -10, 10),
-        SpatialOperation.Contains,
-        ctx.makeRectangle(170, -170, -10, 10), true);
-  }
-
-  /** See https://github.com/spatial4j/spatial4j/issues/85 */
-  @Test
-  public void testAlongDatelineOppositeSign() throws IOException {
-    // Due to Spatial4j bug #85, we can't simply do:
-    //    testOperation(indexedShape,
-    //        SpatialOperation.IsWithin,
-    //        queryShape, true);
-
-    //both on dateline but expressed using opposite signs
-    setupGeo();
-    final Rectangle indexedShape = ctx.makeRectangle(180, 180, -10, 10);
-    final Rectangle queryShape = ctx.makeRectangle(-180, -180, -20, 20);
-    final SpatialOperation operation = SpatialOperation.IsWithin;
-    final boolean match = true;//yes it is within
-
-    //the rest is super.testOperation without leading assert:
-
-    adoc("0", indexedShape);
-    commit();
-    Query query = strategy.makeQuery(new SpatialArgs(operation, queryShape));
-    SearchResults got = executeQuery(query, 1);
-    assert got.numFound <= 1 : "unclean test env";
-    if ((got.numFound == 1) != match)
-      fail(operation+" I:" + indexedShape + " Q:" + queryShape);
-    deleteAll();//clean up after ourselves
-  }
-
-  private void setupGeo() {
-    this.ctx = SpatialContext.GEO;
-    this.strategy = new BBoxStrategy(ctx, "bbox");
-  }
-
-  // OLD STATIC TESTS (worthless?)
-
-  @Test @Ignore("Overlaps not supported")
-  public void testBasicOperaions() throws IOException {
-    setupGeo();
-    getAddAndVerifyIndexedDocuments(DATA_SIMPLE_BBOX);
-
-    executeQueries(SpatialMatchConcern.EXACT, QTEST_Simple_Queries_BBox);
-  }
-
-  @Test
-  public void testStatesBBox() throws IOException {
-    setupGeo();
-    getAddAndVerifyIndexedDocuments(DATA_STATES_BBOX);
-
-    executeQueries(SpatialMatchConcern.FILTER, QTEST_States_IsWithin_BBox);
-    executeQueries(SpatialMatchConcern.FILTER, QTEST_States_Intersects_BBox);
-  }
-
-  @Test
-  public void testCitiesIntersectsBBox() throws IOException {
-    setupGeo();
-    getAddAndVerifyIndexedDocuments(DATA_WORLD_CITIES_POINTS);
-
-    executeQueries(SpatialMatchConcern.FILTER, QTEST_Cities_Intersects_BBox);
-  }
-
-  /* Convert DATA_WORLD_CITIES_POINTS to bbox */
-  @Override
-  protected Shape convertShapeFromGetDocuments(Shape shape) {
-    return shape.getBoundingBox();
-  }
-
-  public void testOverlapRatio() throws IOException {
-    setupGeo();
-
-    //Simply assert null shape results in 0
-    adoc("999", (Shape) null);
-    commit();
-    BBoxStrategy bboxStrategy = (BBoxStrategy) strategy;
-    checkValueSource(bboxStrategy.makeOverlapRatioValueSource(randomRectangle(), 0.0), new float[]{0f}, 0f);
-
-    //we test raw BBoxOverlapRatioValueSource without actual indexing
-    for (int SHIFT = 0; SHIFT < 360; SHIFT += 10) {
-      Rectangle queryBox = shiftedRect(0, 40, -20, 20, SHIFT);//40x40, 1600 area
-
-      final boolean MSL = random().nextBoolean();
-      final double minSideLength = MSL ? 0.1 : 0.0;
-      BBoxOverlapRatioValueSource sim = new BBoxOverlapRatioValueSource(null, true, queryBox, 0.5, minSideLength);
-      int nudge = SHIFT == 0 ? 0 : random().nextInt(3) * 10 - 10;//-10, 0, or 10.  Keep 0 on first round.
-
-      final double EPS = 0.0000001;
-
-      assertEquals("within", (200d/1600d * 0.5) + (0.5), sim.score(shiftedRect(10, 30, 0, 10, SHIFT + nudge), null), EPS);
-
-      assertEquals("in25%", 0.25, sim.score(shiftedRect(30, 70, -20, 20, SHIFT), null), EPS);
-
-      assertEquals("wrap", 0.2794117, sim.score(shiftedRect(30, 10, -20, 20, SHIFT + nudge), null), EPS);
-
-      assertEquals("no intersection H", 0.0, sim.score(shiftedRect(-10, -10, -20, 20, SHIFT), null), EPS);
-      assertEquals("no intersection V", 0.0, sim.score(shiftedRect(0, 20, -30, -30, SHIFT), null), EPS);
-
-      assertEquals("point", 0.5 + (MSL?(0.1*0.1/1600.0/2.0):0), sim.score(shiftedRect(0, 0, 0, 0, SHIFT), null), EPS);
-
-      assertEquals("line 25% intersection", 0.25/2 + (MSL?(10.0*0.1/1600.0/2.0):0.0), sim.score(shiftedRect(-30, 10, 0, 0, SHIFT), null), EPS);
-
-      //test with point query
-      sim = new BBoxOverlapRatioValueSource(null, true, shiftedRect(0, 0, 0, 0, SHIFT), 0.5, minSideLength);
-      assertEquals("same", 1.0, sim.score(shiftedRect(0, 0, 0, 0, SHIFT), null), EPS);
-      assertEquals("contains", 0.5 + (MSL?(0.1*0.1/(30*10)/2.0):0.0), sim.score(shiftedRect(0, 30, 0, 10, SHIFT), null), EPS);
-
-      //test with line query (vertical this time)
-      sim = new BBoxOverlapRatioValueSource(null, true, shiftedRect(0, 0, 20, 40, SHIFT), 0.5, minSideLength);
-      assertEquals("line 50%", 0.5, sim.score(shiftedRect(0, 0, 10, 30, SHIFT), null), EPS);
-      assertEquals("point", 0.5 + (MSL?(0.1*0.1/(20*0.1)/2.0):0.0), sim.score(shiftedRect(0, 0, 30, 30, SHIFT), null), EPS);
-    }
-
-  }
-
-  private Rectangle shiftedRect(double minX, double maxX, double minY, double maxY, int xShift) {
-    return ctx.makeRectangle(
-        DistanceUtils.normLonDEG(minX + xShift),
-        DistanceUtils.normLonDEG(maxX + xShift),
-        minY, maxY);
-  }
-
-  public void testAreaValueSource() throws IOException {
-    setupGeo();
-    //test we can disable indexed for this test
-    BBoxStrategy bboxStrategy = (BBoxStrategy) strategy;
-    if (random().nextBoolean()) {
-      FieldType fieldType = new FieldType(bboxStrategy.getFieldType());
-      fieldType.setIndexOptions(IndexOptions.NONE);
-      bboxStrategy.setFieldType(fieldType);
-    }
-
-    adoc("100", ctx.makeRectangle(0, 20, 40, 80));
-    adoc("999", (Shape) null);
-    commit();
-    checkValueSource(new ShapeAreaValueSource(bboxStrategy.makeShapeValueSource(), ctx, false, 1.0),
-        new float[]{800f, 0f}, 0f);
-    checkValueSource(new ShapeAreaValueSource(bboxStrategy.makeShapeValueSource(), ctx, true, 1.0),//geo
-        new float[]{391.93f, 0f}, 0.01f);
-    checkValueSource(new ShapeAreaValueSource(bboxStrategy.makeShapeValueSource(), ctx, true, 2.0),
-        new float[]{783.86f, 0f}, 0.01f); // testing with a different multiplier
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/composite/CompositeStrategyTest.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/composite/CompositeStrategyTest.java b/lucene/spatial/src/test/org/apache/lucene/spatial/composite/CompositeStrategyTest.java
deleted file mode 100644
index 8e1bb51..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/composite/CompositeStrategyTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial.composite;
-
-import java.io.IOException;
-
-import com.carrotsearch.randomizedtesting.annotations.Repeat;
-import com.spatial4j.core.context.SpatialContext;
-import com.spatial4j.core.context.SpatialContextFactory;
-import com.spatial4j.core.shape.Point;
-import com.spatial4j.core.shape.Rectangle;
-import com.spatial4j.core.shape.Shape;
-import com.spatial4j.core.shape.impl.RectangleImpl;
-import org.apache.lucene.spatial.prefix.RandomSpatialOpStrategyTestCase;
-import org.apache.lucene.spatial.prefix.RecursivePrefixTreeStrategy;
-import org.apache.lucene.spatial.prefix.tree.GeohashPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.QuadPrefixTree;
-import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree;
-import org.apache.lucene.spatial.query.SpatialOperation;
-import org.apache.lucene.spatial.serialized.SerializedDVStrategy;
-import org.junit.Test;
-
-import static com.carrotsearch.randomizedtesting.RandomizedTest.randomBoolean;
-import static com.carrotsearch.randomizedtesting.RandomizedTest.randomDouble;
-import static com.carrotsearch.randomizedtesting.RandomizedTest.randomIntBetween;
-
-public class CompositeStrategyTest extends RandomSpatialOpStrategyTestCase {
-
-  private SpatialPrefixTree grid;
-  private RecursivePrefixTreeStrategy rptStrategy;
-
-  private void setupQuadGrid(int maxLevels) {
-    //non-geospatial makes this test a little easier (in gridSnap), and using boundary values 2^X raises
-    // the prospect of edge conditions we want to test, plus makes for simpler numbers (no decimals).
-    SpatialContextFactory factory = new SpatialContextFactory();
-    factory.geo = false;
-    factory.worldBounds = new RectangleImpl(0, 256, -128, 128, null);
-    this.ctx = factory.newSpatialContext();
-    //A fairly shallow grid
-    if (maxLevels == -1)
-      maxLevels = randomIntBetween(1, 8);//max 64k cells (4^8), also 256*256
-    this.grid = new QuadPrefixTree(ctx, maxLevels);
-    this.rptStrategy = newRPT();
-  }
-
-  private void setupGeohashGrid(int maxLevels) {
-    this.ctx = SpatialContext.GEO;
-    //A fairly shallow grid
-    if (maxLevels == -1)
-      maxLevels = randomIntBetween(1, 3);//max 16k cells (32^3)
-    this.grid = new GeohashPrefixTree(ctx, maxLevels);
-    this.rptStrategy = newRPT();
-  }
-
-  protected RecursivePrefixTreeStrategy newRPT() {
-    final RecursivePrefixTreeStrategy rpt = new RecursivePrefixTreeStrategy(this.grid,
-        getClass().getSimpleName() + "_rpt");
-    rpt.setDistErrPct(0.10);//not too many cells
-    return rpt;
-  }
-
-  @Test
-  @Repeat(iterations = 20)
-  public void testOperations() throws IOException {
-    //setup
-    if (randomBoolean()) {
-      setupQuadGrid(-1);
-    } else {
-      setupGeohashGrid(-1);
-    }
-    SerializedDVStrategy serializedDVStrategy = new SerializedDVStrategy(ctx, getClass().getSimpleName() + "_sdv");
-    this.strategy = new CompositeSpatialStrategy("composite_" + getClass().getSimpleName(),
-        rptStrategy, serializedDVStrategy);
-
-    //Do it!
-
-    for (SpatialOperation pred : SpatialOperation.values()) {
-      if (pred == SpatialOperation.BBoxIntersects || pred == SpatialOperation.BBoxWithin) {
-        continue;
-      }
-      if (pred == SpatialOperation.IsDisjointTo) {//TODO
-        continue;
-      }
-      testOperationRandomShapes(pred);
-      deleteAll();
-      commit();
-    }
-  }
-
-  @Override
-  protected boolean needsDocValues() {
-    return true;//due to SerializedDVStrategy
-  }
-
-  @Override
-  protected Shape randomIndexedShape() {
-    return randomShape();
-  }
-
-  @Override
-  protected Shape randomQueryShape() {
-    return randomShape();
-  }
-
-  private Shape randomShape() {
-    return random().nextBoolean() ? randomCircle() : randomRectangle();
-  }
-
-  //TODO move up
-  private Shape randomCircle() {
-    final Point point = randomPoint();
-    //TODO pick using gaussian
-    double radius;
-    if (ctx.isGeo()) {
-      radius = randomDouble() * 100;
-    } else {
-      //find distance to closest edge
-      final Rectangle worldBounds = ctx.getWorldBounds();
-      double maxRad = point.getX() - worldBounds.getMinX();
-      maxRad = Math.min(maxRad, worldBounds.getMaxX() - point.getX());
-      maxRad = Math.min(maxRad, point.getY() - worldBounds.getMinY());
-      maxRad = Math.min(maxRad, worldBounds.getMaxY() - point.getY());
-      radius = randomDouble() * maxRad;
-    }
-
-    return ctx.makeCircle(point, radius);
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/89db4950/lucene/spatial/src/test/org/apache/lucene/spatial/prefix/CellToBytesRefIterator50.java
----------------------------------------------------------------------
diff --git a/lucene/spatial/src/test/org/apache/lucene/spatial/prefix/CellToBytesRefIterator50.java b/lucene/spatial/src/test/org/apache/lucene/spatial/prefix/CellToBytesRefIterator50.java
deleted file mode 100644
index cccec8e..0000000
--- a/lucene/spatial/src/test/org/apache/lucene/spatial/prefix/CellToBytesRefIterator50.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.lucene.spatial.prefix;
-
-import org.apache.lucene.spatial.prefix.tree.Cell;
-import org.apache.lucene.util.BytesRef;
-
-/** For testing Lucene <= 5.0. Index redundant prefixes for leaf cells. Fixed in LUCENE-4942. */
-class CellToBytesRefIterator50 extends CellToBytesRefIterator {
-
-  Cell repeatCell;
-
-  @Override
-  public BytesRef next() {
-    if (repeatCell != null) {
-      bytesRef = repeatCell.getTokenBytesWithLeaf(bytesRef);
-      repeatCell = null;
-      return bytesRef;
-    }
-    if (!cellIter.hasNext()) {
-      return null;
-    }
-    Cell cell = cellIter.next();
-    bytesRef = cell.getTokenBytesNoLeaf(bytesRef);
-    if (cell.isLeaf()) {
-      repeatCell = cell;
-    }
-    return bytesRef;
-  }
-}