: I didn't forget, precisely. I used git commit -a and it didn't pick up the : file (for some reason as yet undetermined) and I didn't catch it. Fixed : now (via explicit git add).
"-a" is not designed/intended to pick up new files -- as documented... -a, --all Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected. : On Mon, Sep 11, 2017 at 9:40 AM, Adrien Grand <jpou...@gmail.com> wrote: : : > Karl, did you forget to git add RandomGeo3dShapeGenerator? : > : > Le lun. 11 sept. 2017 à 15:01, <kwri...@apache.org> a écrit : : > : >> Repository: lucene-solr : >> Updated Branches: : >> refs/heads/master 64d142858 -> cd425d609 : >> : >> : >> LUCENE-7906: Add new shapes to testing paradigm. Committed on behalf of : >> Ignacio Vera. : >> : >> : >> Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo : >> Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/ : >> cd425d60 : >> Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/cd425d60 : >> Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/cd425d60 : >> : >> Branch: refs/heads/master : >> Commit: cd425d609cee8bcea6dbfeab8b3d42b1ce48eb40 : >> Parents: 64d1428 : >> Author: Karl Wright <daddy...@gmail.com> : >> Authored: Mon Sep 11 09:00:47 2017 -0400 : >> Committer: Karl Wright <daddy...@gmail.com> : >> Committed: Mon Sep 11 09:00:47 2017 -0400 : >> : >> ---------------------------------------------------------------------- : >> .../spatial3d/geom/RandomBinaryCodecTest.java | 10 +- : >> .../spatial3d/geom/RandomGeoShapeGenerator.java | 944 : >> ------------------- : >> .../geom/RandomGeoShapeRelationshipTest.java | 65 +- : >> 3 files changed, 53 insertions(+), 966 deletions(-) : >> ---------------------------------------------------------------------- : >> : >> : >> http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ : >> cd425d60/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/ : >> RandomBinaryCodecTest.java : >> ---------------------------------------------------------------------- : >> diff --git a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/ : >> geom/RandomBinaryCodecTest.java b/lucene/spatial3d/src/test/ : >> org/apache/lucene/spatial3d/geom/RandomBinaryCodecTest.java : >> index ba9ee6e..250b652 100644 : >> --- a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/ : >> geom/RandomBinaryCodecTest.java : >> +++ b/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/ : >> geom/RandomBinaryCodecTest.java : >> @@ -27,18 +27,18 @@ import org.junit.Test; : >> /** : >> * Test to check Serialization : >> */ : >> -public class RandomBinaryCodecTest extends RandomGeoShapeGenerator{ : >> +public class RandomBinaryCodecTest extends RandomGeo3dShapeGenerator { : >> : >> @Test : >> @Repeat(iterations = 10) : >> public void testRandomPointCodec() throws IOException{ : >> PlanetModel planetModel = randomPlanetModel(); : >> - GeoPoint shape = randomGeoPoint(planetModel, getEmptyConstraint()); : >> + GeoPoint shape = randomGeoPoint(planetModel); : >> ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); : >> SerializableObject.writeObject(outputStream, shape); : >> ByteArrayInputStream inputStream = new ByteArrayInputStream( : >> outputStream.toByteArray()); : >> SerializableObject shapeCopy = SerializableObject.readObject(planetModel, : >> inputStream); : >> - assertEquals(shape, shapeCopy); : >> + assertEquals(shape.toString(), shape, shapeCopy); : >> } : >> : >> @Test : >> @@ -51,7 +51,7 @@ public class RandomBinaryCodecTest extends : >> RandomGeoShapeGenerator{ : >> SerializableObject.writePlanetObject(outputStream, shape); : >> ByteArrayInputStream inputStream = new ByteArrayInputStream( : >> outputStream.toByteArray()); : >> SerializableObject shapeCopy = SerializableObject. : >> readPlanetObject(inputStream); : >> - assertEquals(shape, shapeCopy); : >> + assertEquals(shape.toString(), shape, shapeCopy); : >> } : >> : >> @Test : >> @@ -64,6 +64,6 @@ public class RandomBinaryCodecTest extends : >> RandomGeoShapeGenerator{ : >> SerializableObject.writeObject(outputStream, shape); : >> ByteArrayInputStream inputStream = new ByteArrayInputStream( : >> outputStream.toByteArray()); : >> SerializableObject shapeCopy = SerializableObject.readObject(planetModel, : >> inputStream); : >> - assertEquals(shape, shapeCopy); : >> + assertEquals(shape.toString(), shape, shapeCopy); : >> } : >> } : >> : >> http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ : >> cd425d60/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/ : >> RandomGeoShapeGenerator.java : >> ---------------------------------------------------------------------- : >> diff --git a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/ : >> geom/RandomGeoShapeGenerator.java b/lucene/spatial3d/src/test/ : >> org/apache/lucene/spatial3d/geom/RandomGeoShapeGenerator.java : >> deleted file mode 100644 : >> index ca7aecd..0000000 : >> --- a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/ : >> geom/RandomGeoShapeGenerator.java : >> +++ /dev/null : >> @@ -1,944 +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.spatial3d.geom; : >> - : >> -import java.util.ArrayList; : >> -import java.util.Collections; : >> -import java.util.Comparator; : >> -import java.util.HashMap; : >> -import java.util.List; : >> - : >> -import org.apache.lucene.util.LuceneTestCase; : >> - : >> -import static com.carrotsearch.randomizedtesting. : >> RandomizedTest.randomDouble; : >> - : >> -/** : >> - * Class for generating random Geo3dShapes. They can be generated under : >> - * given constraints which are expressed as a shape and a relationship. : >> - * : >> - * note that convexity for polygons is defined as polygons that contains : >> - * antipodal points, otherwise they are convex. Internally they can be : >> - * created using GeoConvexPolygons and GeoConcavePolygons. : >> - * : >> - */ : >> -public class RandomGeoShapeGenerator extends LuceneTestCase { : >> - : >> - /* Max num of iterations to find right shape under given constrains */ : >> - final private static int MAX_SHAPE_ITERATIONS = 50; : >> - /* Max num of iterations to find right point under given constrains */ : >> - final private static int MAX_POINT_ITERATIONS = 1000; : >> - : >> - /* Supported shapes */ : >> - final protected static int CONVEX_POLYGON = 0; : >> - final protected static int CONVEX_POLYGON_WITH_HOLES = 1; : >> - final protected static int CONCAVE_POLYGON = 2; : >> - final protected static int CONCAVE_POLYGON_WITH_HOLES = 3; : >> - final protected static int COMPLEX_POLYGON = 4; : >> - final protected static int CIRCLE = 5; : >> - final protected static int RECTANGLE = 6; : >> - final protected static int PATH = 7; : >> - final protected static int COLLECTION = 8; : >> - : >> - /* Helper shapes for generating constraints whch are just three sided : >> polygons */ : >> - final protected static int CONVEX_SIMPLE_POLYGON = 500; : >> - final protected static int CONCAVE_SIMPLE_POLYGON = 501; : >> - : >> - : >> - /** : >> - * Method that returns empty Constraints object.. : >> - * : >> - * @return an empty Constraints object : >> - */ : >> - public Constraints getEmptyConstraint(){ : >> - return new Constraints(); : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a random Shape code from all : >> - * supported shapes. : >> - * : >> - * @return a random generated shape code : >> - */ : >> - public int randomShapeType(){ : >> - return random().nextInt(9); : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a random Shape code from all : >> - * convex supported shapes. : >> - * : >> - * @return a random generated convex shape code : >> - */ : >> - public int randomConvexShapeType(){ : >> - int shapeType = randomShapeType(); : >> - while (isConcave(shapeType)){ : >> - shapeType = randomShapeType(); : >> - } : >> - return shapeType; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a random Shape code from all : >> - * concave supported shapes. : >> - * : >> - * @return a random generated concave shape code : >> - */ : >> - public int randomConcaveShapeType(){ : >> - int shapeType = randomShapeType(); : >> - while (!isConcave(shapeType)){ : >> - shapeType = randomShapeType(); : >> - } : >> - return shapeType; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated GeoAreaShape code from all : >> - * supported GeoAreaShapes. : >> - * : >> - * We are removing Collections because it is difficult to create shapes : >> - * with properties in some cases. : >> - * : >> - * @return a random generated polygon code : >> - */ : >> - public int randomGeoAreaShapeType(){ : >> - return random().nextInt(8); : >> - } : >> - : >> - /** : >> - * Check if a shape code represents a concave shape : >> - * : >> - * @return true if the shape represented by the code is concave : >> - */ : >> - public boolean isConcave(int shapeType){ : >> - return (shapeType == CONCAVE_POLYGON); : >> - } : >> - : >> - /** : >> - * Method that returns a random generated Planet model from the : >> supported : >> - * Planet models. currently SPHERE and WGS84 : >> - * : >> - * @return a random generated Planet model : >> - */ : >> - public PlanetModel randomPlanetModel() { : >> - final int shapeType = random().nextInt(2); : >> - switch (shapeType) { : >> - case 0: { : >> - return PlanetModel.SPHERE; : >> - } : >> - case 1: { : >> - return PlanetModel.WGS84; : >> - } : >> - default: : >> - throw new IllegalStateException("Unexpected planet model"); : >> - } : >> - } : >> - : >> - /** : >> - * Method that returns a random generated GeoPoint under given : >> constraints. Returns : >> - * NULL if it cannot find a point under the given constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoPoint. : >> - */ : >> - public GeoPoint randomGeoPoint(PlanetModel planetModel, Constraints : >> constraints) { : >> - int iterations = 0; : >> - while (iterations < MAX_POINT_ITERATIONS) { : >> - double lat = randomDouble(); : >> - if (Math.PI/2 - Math.abs(lat) <0){ : >> - continue; : >> - } : >> - double lon = randomDouble(); : >> - if (Math.PI - Math.abs(lat) <0){ : >> - continue; : >> - } : >> - iterations++; : >> - GeoPoint point = new GeoPoint(planetModel, lat, lon); : >> - if (constraints.isWithin(point)) { : >> - return point; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated GeoAreaShape. : >> - * : >> - * @param shapeType The GeoAreaShape code. : >> - * @param planetModel The planet model. : >> - * @return The random generated GeoAreaShape. : >> - */ : >> - public GeoAreaShape randomGeoAreaShape(int shapeType, PlanetModel : >> planetModel){ : >> - GeoAreaShape geoAreaShape = null; : >> - while (geoAreaShape == null){ : >> - geoAreaShape = randomGeoAreaShape(shapeType,planetModel,new : >> Constraints()); : >> - } : >> - return geoAreaShape; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated GeoAreaShape under given : >> constraints. Returns : >> - * NULL if it cannot build the GeoAreaShape under the given : >> constraints. : >> - * : >> - * @param shapeType The GeoAreaShape code. : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoAreaShape. : >> - */ : >> - public GeoAreaShape randomGeoAreaShape(int shapeType, PlanetModel : >> planetModel, Constraints constraints){ : >> - return (GeoAreaShape)randomGeoShape(shapeType, planetModel, : >> constraints); : >> - } : >> - : >> - /** : >> - * Method that returns a random generated GeoShape. : >> - * : >> - * @param shapeType The shape code. : >> - * @param planetModel The planet model. : >> - * @return The random generated GeoShape. : >> - */ : >> - public GeoShape randomGeoShape(int shapeType, PlanetModel planetModel){ : >> - GeoShape geoShape = null; : >> - while (geoShape == null){ : >> - geoShape = randomGeoShape(shapeType,planetModel,new : >> Constraints()); : >> - } : >> - return geoShape; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated GeoShape under given : >> constraints. Returns : >> - * NULL if it cannot build the GeoShape under the given constraints. : >> - * : >> - * @param shapeType The polygon code. : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoShape. : >> - */ : >> - public GeoShape randomGeoShape(int shapeType, PlanetModel planetModel, : >> Constraints constraints){ : >> - switch (shapeType) { : >> - case CONVEX_POLYGON: { : >> - return convexPolygon(planetModel, constraints); : >> - } : >> - case CONVEX_POLYGON_WITH_HOLES: { : >> - return convexPolygonWithHoles(planetModel, constraints); : >> - } : >> - case CONCAVE_POLYGON: { : >> - return concavePolygon(planetModel, constraints); : >> - } : >> - case CONCAVE_POLYGON_WITH_HOLES: { : >> - return concavePolygonWithHoles(planetModel, constraints); : >> - } : >> - case COMPLEX_POLYGON: { : >> - return complexPolygon(planetModel, constraints); : >> - } : >> - case CIRCLE: { : >> - return circle(planetModel, constraints); : >> - } : >> - case RECTANGLE: { : >> - return rectangle(planetModel, constraints); : >> - } : >> - case PATH: { : >> - return path(planetModel, constraints); : >> - } : >> - case COLLECTION: { : >> - return collection(planetModel, constraints); : >> - } : >> - case CONVEX_SIMPLE_POLYGON: { : >> - return simpleConvexPolygon(planetModel, constraints); : >> - } : >> - case CONCAVE_SIMPLE_POLYGON: { : >> - return concaveSimplePolygon(planetModel, constraints); : >> - } : >> - default: : >> - throw new IllegalStateException("Unexpected shape type"); : >> - } : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a GeoCircle under given : >> constraints. Returns : >> - * NULL if it cannot build the GeoCircle under the given constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoCircle. : >> - */ : >> - private GeoCircle circle(PlanetModel planetModel , Constraints : >> constraints) { : >> - int iterations=0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - final GeoPoint center = randomGeoPoint(planetModel, constraints); : >> - if (center == null){ : >> - continue; : >> - } : >> - final double radius = randomCutoffAngle(); : >> - try { : >> - : >> - GeoCircle circle = GeoCircleFactory.makeGeoCircle(planetModel, : >> center.getLatitude(), center.getLongitude(), radius); : >> - if (!constraints.valid(circle)) { : >> - continue; : >> - } : >> - return circle; : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a GeoBBox under given : >> constraints. Returns : >> - * NULL if it cannot build the GeoBBox under the given constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoBBox. : >> - */ : >> - private GeoBBox rectangle(PlanetModel planetModel, Constraints : >> constraints) { : >> - : >> - int iterations = 0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - final GeoPoint point1 = randomGeoPoint(planetModel, constraints); : >> - if (point1 == null){ : >> - continue; : >> - } : >> - final GeoPoint point2 = randomGeoPoint(planetModel, constraints); : >> - if (point2 == null){ : >> - continue; : >> - } : >> - : >> - double minLat = Math.min(point1.getLatitude(), : >> point2.getLatitude()); : >> - double maxLat = Math.max(point1.getLatitude(), : >> point2.getLatitude()); : >> - double minLon = Math.min(point1.getLongitude(), : >> point2.getLongitude()); : >> - double maxLon = Math.max(point1.getLongitude(), : >> point2.getLongitude()); : >> - : >> - try { : >> - GeoBBox bbox = GeoBBoxFactory.makeGeoBBox(planetModel, maxLat, : >> minLat, minLon, maxLon); : >> - if (!constraints.valid(bbox)) { : >> - continue; : >> - } : >> - return bbox; : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a GeoPath under given : >> constraints. Returns : >> - * NULL if it cannot build the GeoPath under the given constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoPath. : >> - */ : >> - private GeoPath path(PlanetModel planetModel, Constraints constraints) : >> { : >> - int iterations = 0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - int vertexCount = random().nextInt(2) + 2; : >> - List<GeoPoint> geoPoints = points(vertexCount, planetModel, : >> constraints); : >> - double width =randomCutoffAngle(); : >> - try { : >> - GeoPath path = GeoPathFactory.makeGeoPath(planetModel, width, : >> geoPoints.toArray(new GeoPoint[geoPoints.size()])); : >> - if (!constraints.valid(path)) { : >> - continue; : >> - } : >> - return path; : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a : >> GeoCompositeMembershipShape under given constraints. Returns : >> - * NULL if it cannot build the GGeoCompositeMembershipShape under the : >> given constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoCompositeMembershipShape. : >> - */ : >> - private GeoCompositeAreaShape collection(PlanetModel planetModel, : >> Constraints constraints) { : >> - int iterations = 0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - int numberShapes = random().nextInt(3) + 2; : >> - GeoCompositeAreaShape collection = new GeoCompositeAreaShape( : >> planetModel); : >> - for(int i=0; i<numberShapes;i++){ : >> - GeoPolygon member = convexPolygon(planetModel, constraints); : >> - if (member != null){ : >> - collection.addShape(member); : >> - } : >> - } : >> - if (collection.shapes.size() ==0){ : >> - continue; : >> - } : >> - return collection; : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a convex GeoPolygon under : >> given constraints. Returns : >> - * NULL if it cannot build the GePolygon under the given constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoPolygon. : >> - */ : >> - private GeoPolygon convexPolygon(PlanetModel planetModel, Constraints : >> constraints) { : >> - int vertexCount = random().nextInt(4) + 3; : >> - int iterations = 0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - List<GeoPoint> geoPoints = points(vertexCount,planetModel, : >> constraints); : >> - List<GeoPoint> orderedGeoPoints = orderPoints(geoPoints); : >> - try { : >> - GeoPolygon polygon = GeoPolygonFactory.makeGeoPolygon(planetModel, : >> orderedGeoPoints); : >> - if (!constraints.valid(polygon) || isConcave(planetModel, : >> polygon)) { : >> - continue; : >> - } : >> - return polygon; : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a convex GeoPolygon with : >> holes under given constraints. Returns : >> - * NULL if it cannot build the GeoPolygon with holes under the given : >> constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoPolygon. : >> - */ : >> - private GeoPolygon convexPolygonWithHoles(PlanetModel planetModel, : >> Constraints constraints) { : >> - int vertexCount = random().nextInt(4) + 3; : >> - int iterations = 0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - List<GeoPoint> geoPoints = points(vertexCount,planetModel, : >> constraints); : >> - List<GeoPoint> orderedGeoPoints = orderPoints(geoPoints); : >> - try { : >> - GeoPolygon polygon = GeoPolygonFactory.makeGeoPolygon(planetModel, : >> orderedGeoPoints); : >> - //polygon should comply with all constraints except disjoint as : >> we have holes : >> - Constraints polygonConstraints = new Constraints(); : >> - polygonConstraints.putAll(constraints.getContains()); : >> - polygonConstraints.putAll(constraints.getWithin()); : >> - polygonConstraints.putAll(constraints.getDisjoint()); : >> - if (!polygonConstraints.valid(polygon) || : >> isConcave(planetModel, polygon)){ : >> - continue; : >> - } : >> - //hole must overlap with polygon and comply with any CONTAINS : >> constraint. : >> - Constraints holeConstraints = new Constraints(); : >> - holeConstraints.putAll(constraints.getContains()); : >> - holeConstraints.put(polygon,GeoArea.OVERLAPS); : >> - //Points must be with in the polygon and must comply : >> - // CONTAINS and DISJOINT constraints : >> - Constraints pointsConstraints = new Constraints(); : >> - pointsConstraints.put(polygon,GeoArea.WITHIN); : >> - pointsConstraints.putAll(constraints.getContains()); : >> - pointsConstraints.putAll(constraints.getDisjoint()); : >> - List<GeoPolygon> holes = concavePolygonHoles(planetModel, : >> holeConstraints, pointsConstraints); : >> - //we should have at least one hole : >> - if (holes.size() == 0){ : >> - continue; : >> - } : >> - polygon = GeoPolygonFactory.makeGeoPolygon(planetModel, : >> orderedGeoPoints,holes); : >> - if (!constraints.valid(polygon) || isConcave(planetModel, : >> polygon)){ : >> - continue; : >> - } : >> - return polygon; : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random list if concave GeoPolygons under : >> given constraints. Method : >> - * use to generate convex holes. Note that constraints for points and : >> holes are different, : >> - * : >> - * @param planetModel The planet model. : >> - * @param holeConstraints The given constraints that a hole must : >> comply. : >> - * @param pointConstraints The given constraints that a point must : >> comply. : >> - * @return The random generated GeoPolygon. : >> - */ : >> - private List<GeoPolygon> concavePolygonHoles(PlanetModel planetModel, : >> - Constraints : >> holeConstraints, : >> - Constraints : >> pointConstraints) { : >> - int iterations =0; : >> - int holesCount = random().nextInt(3) + 1; : >> - List<GeoPolygon> holes = new ArrayList<>(); : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - int vertexCount = random().nextInt(3) + 3; : >> - List<GeoPoint> geoPoints = points(vertexCount, planetModel, : >> pointConstraints); : >> - geoPoints = orderPoints(geoPoints); : >> - Collections.reverse(geoPoints); : >> - try { : >> - GeoPolygon hole = GeoPolygonFactory.makeGeoPolygon(planetModel, : >> geoPoints); : >> - if (!holeConstraints.valid(hole) || isConvex(planetModel, hole)) : >> { : >> - continue; : >> - } : >> - holes.add(hole); : >> - if (holes.size() == holesCount){ : >> - return holes; : >> - } : >> - pointConstraints.put(hole, GeoArea.DISJOINT); : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return holes; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a concave GeoPolygon under : >> given constraints. Returns : >> - * NULL if it cannot build the concave GeoPolygon under the given : >> constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoPolygon. : >> - */ : >> - private GeoPolygon concavePolygon(PlanetModel planetModel, Constraints : >> constraints) { : >> - : >> - int vertexCount = random().nextInt(4) + 3; : >> - int iterations = 0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - List<GeoPoint> geoPoints = points(vertexCount,planetModel, : >> constraints); : >> - List<GeoPoint> orderedGeoPoints = orderPoints(geoPoints); : >> - Collections.reverse(orderedGeoPoints); : >> - try { : >> - GeoPolygon polygon = GeoPolygonFactory.makeGeoPolygon(planetModel, : >> orderedGeoPoints); : >> - if (!constraints.valid(polygon) || isConvex(planetModel, : >> polygon)) { : >> - continue; : >> - } : >> - return polygon; : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a concave GeoPolygon with : >> holes under given constraints. Returns : >> - * NULL if it cannot build the GeoPolygon under the given constraints. : >> Note that the final GeoPolygon is : >> - * convex as the hole wraps the convex GeoPolygon. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoPolygon. : >> - */ : >> - private GeoPolygon concavePolygonWithHoles(PlanetModel planetModel, : >> Constraints constraints) { : >> - int vertexCount = random().nextInt(4) + 3; : >> - int iterations = 0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - //we first build the hole. We consider all constraints except : >> - // disjoint as we have a hole : >> - Constraints holeConstraints = new Constraints(); : >> - holeConstraints.putAll(constraints.getContains()); : >> - holeConstraints.putAll(constraints.getWithin()); : >> - holeConstraints.putAll(constraints.getOverlaps()); : >> - GeoPolygon hole = convexPolygon(planetModel, holeConstraints); : >> - if (hole == null){ : >> - continue; : >> - } : >> - // Now we get points for polygon. Must we with in the hole : >> - // and we add contain constraints : >> - Constraints pointConstraints = new Constraints(); : >> - pointConstraints.put(hole, GeoArea.WITHIN); : >> - pointConstraints.putAll(constraints.getContains()); : >> - List<GeoPoint> geoPoints = points(vertexCount,planetModel, : >> pointConstraints); : >> - List<GeoPoint> orderedGeoPoints = orderPoints(geoPoints); : >> - Collections.reverse(orderedGeoPoints); : >> - try { : >> - GeoPolygon polygon = GeoPolygonFactory.makeGeoPolygon(planetModel, : >> orderedGeoPoints, Collections.singletonList(hole)); : >> - //final polygon must be convex : >> - if (!constraints.valid(polygon) || isConcave(planetModel,polygon)) : >> { : >> - continue; : >> - } : >> - return polygon; : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated complex GeoPolygon under : >> given constraints. Returns : >> - * NULL if it cannot build the complex GeoPolygon under the given : >> constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoPolygon. : >> - */ : >> - private GeoPolygon complexPolygon(PlanetModel planetModel, Constraints : >> constraints) { : >> - int polygonsCount =random().nextInt(2) + 1; : >> - int iterations = 0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - List<GeoPolygonFactory.PolygonDescription> polDescription = new : >> ArrayList<>(); : >> - while(polDescription.size() < polygonsCount){ : >> - int vertexCount = random().nextInt(14) + 3; : >> - List<GeoPoint> geoPoints = points(vertexCount,planetModel, : >> constraints); : >> - orderPoints(geoPoints); : >> - polDescription.add(new GeoPolygonFactory. : >> PolygonDescription(geoPoints)); : >> - } : >> - try { : >> - GeoPolygon polygon = GeoPolygonFactory.makeLargeGeoPolygon( : >> planetModel,polDescription); : >> - if (!constraints.valid(polygon)) { : >> - continue; : >> - } : >> - return polygon; : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a concave square GeoPolygon : >> under given constraints. Returns : >> - * NULL if it cannot build the concave GeoPolygon under the given : >> constraints. This shape is an utility : >> - * to build constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoPolygon. : >> - */ : >> - private GeoPolygon simpleConvexPolygon(PlanetModel planetModel, : >> Constraints constraints) { : >> - int iterations = 0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - List<GeoPoint> points = points(3,planetModel,constraints); : >> - points = orderPoints(points); : >> - try { : >> - GeoPolygon polygon = GeoPolygonFactory.makeGeoConvexPolygon(planetModel, : >> points); : >> - if(!constraints.valid(polygon) || isConcave(planetModel,polygon) : >> ){ : >> - continue; : >> - } : >> - return polygon; : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random generated a convex square GeoPolygon : >> under given constraints. Returns : >> - * NULL if it cannot build the convex GeoPolygon under the given : >> constraints. This shape is an utility : >> - * to build constraints. : >> - * : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated GeoPolygon. : >> - */ : >> - private GeoPolygon concaveSimplePolygon(PlanetModel planetModel, : >> Constraints constraints) { : >> - int iterations = 0; : >> - while (iterations < MAX_SHAPE_ITERATIONS) { : >> - iterations++; : >> - List<GeoPoint> points = points(3, planetModel, constraints); : >> - points = orderPoints(points); : >> - Collections.reverse(points); : >> - try { : >> - GeoPolygon polygon = GeoPolygonFactory.makeGeoConcavePolygon(planetModel, : >> points); : >> - if(!constraints.valid(polygon) || isConvex(planetModel, : >> polygon)){ : >> - continue; : >> - } : >> - return polygon; : >> - } catch (IllegalArgumentException e) { : >> - continue; : >> - } : >> - } : >> - return null; : >> - } : >> - : >> - /** : >> - * Method that returns a random list of generated GeoPoints under : >> given constraints. If it cannot : >> - * find a point it will add a point that might not comply with the : >> constraints. : >> - * : >> - * @param count The number of points : >> - * @param planetModel The planet model. : >> - * @param constraints The given constraints. : >> - * @return The random generated List of GeoPoints. : >> - */ : >> - private List<GeoPoint> points(int count, PlanetModel planetModel, : >> Constraints constraints){ : >> - List<GeoPoint> geoPoints = new ArrayList<>(count); : >> - for(int i= 0; i< count; i++) { : >> - GeoPoint point = randomGeoPoint(planetModel, constraints); : >> - if (point == null){ : >> - point = randomGeoPoint(planetModel, new Constraints()); : >> - } : >> - geoPoints.add(point); : >> - } : >> - return geoPoints; : >> - } : >> - : >> - /** : >> - * Check if a GeoPolygon is pure concave. Note that our definition for : >> concavity is that the polygon : >> - * contains antipodal points. : >> - * : >> - * @param planetModel The planet model. : >> - * @param shape The polygon to check. : >> - * @return True if the polygon contains antipodal points. : >> - */ : >> - private boolean isConcave(PlanetModel planetModel, GeoPolygon shape){ : >> - return (shape.isWithin(planetModel.NORTH_POLE) && : >> shape.isWithin(planetModel.SOUTH_POLE))|| : >> - (shape.isWithin(planetModel.MAX_X_POLE) && : >> shape.isWithin(planetModel.MIN_X_POLE)) || : >> - (shape.isWithin(planetModel.MAX_Y_POLE) && : >> shape.isWithin(planetModel.MIN_Y_POLE)); : >> - } : >> - : >> - /** : >> - * Check if a GeoPolygon is pure convex. Note that our definition for : >> convexity is that the polygon : >> - * does not contain antipodal points. : >> - * : >> - * @param planetModel The planet model. : >> - * @param shape The polygon to check. : >> - * @return True if the polygon dies not contains antipodal points. : >> - */ : >> - private boolean isConvex(PlanetModel planetModel, GeoPolygon shape){ : >> - return !isConcave(planetModel,shape); : >> - } : >> - : >> - /** : >> - * Generates a random number between 0 and PI. : >> - * : >> - * @return the cutoff angle. : >> - */ : >> - private double randomCutoffAngle() { : >> - while(true) { : >> - double radius = randomDouble(); : >> - if (radius <0 || radius > Math.PI){ : >> - continue; : >> - } : >> - return radius; : >> - } : >> - } : >> - : >> - /** : >> - * Method that orders a lit of points anti-clock-wise to prevent : >> crossing edges. : >> - * : >> - * @param originalPoints The points to order. : >> - * @return The list of ordered points anti-clockwise. : >> - */ : >> - private List<GeoPoint> orderPoints(List<GeoPoint> originalPoints){ : >> - List<GeoPoint> points = new ArrayList<>(originalPoints.size()); : >> - points.addAll(originalPoints); //make a copy : >> - GeoPoint lPoint = getPointLefLon(points); : >> - points.remove(lPoint); : >> - GeoPoint rPoint = getPointRigthLon(points); : >> - points.remove(rPoint); : >> - List<GeoPoint> APoints = getPointsBelowAndSort(points, lPoint); : >> - List<GeoPoint> BPoints = getPointsAboveAndsort(points, lPoint); : >> - List<GeoPoint> result = new ArrayList<>(); : >> - result.add(lPoint); : >> - result.addAll(APoints); : >> - result.add(rPoint); : >> - result.addAll(BPoints); : >> - return result; : >> - } : >> - : >> - private List<GeoPoint> getPointsAboveAndsort(List<GeoPoint> : >> points,GeoPoint lPoint) { : >> - List<GeoPoint> BPoints = new ArrayList<>(); : >> - for (GeoPoint point : points){ : >> - if(point.getLatitude() > lPoint.getLatitude()){ : >> - BPoints.add(point); : >> - } : >> - } : >> - Collections.sort(BPoints, new Comparator<GeoPoint>() { : >> - public int compare(GeoPoint idx1, GeoPoint idx2) { : >> - return Double.compare(idx1.getLongitude(), idx2.getLongitude()); : >> - } : >> - }); : >> - return BPoints; : >> - } : >> - : >> - private List<GeoPoint> getPointsBelowAndSort(List<GeoPoint> : >> points,GeoPoint lPoint) { : >> - List<GeoPoint> APoints = new ArrayList<>(); : >> - for (GeoPoint point : points){ : >> - if(point.getLatitude() < lPoint.getLatitude()){ : >> - APoints.add(point); : >> - } : >> - } : >> - Collections.sort(APoints, new Comparator<GeoPoint>() { : >> - public int compare(GeoPoint idx1, GeoPoint idx2) { : >> - return Double.compare(idx1.getLongitude(), idx2.getLongitude()); : >> - } : >> - }); : >> - return APoints; : >> - } : >> - : >> - private GeoPoint getPointLefLon(List<GeoPoint> points) { : >> - GeoPoint lPoint = null; : >> - for (GeoPoint point : points){ : >> - if(lPoint == null ){ : >> - lPoint = point; : >> - } : >> - else{ : >> - if (lPoint.getLongitude() > point.getLongitude()){ : >> - lPoint = point; : >> - } : >> - } : >> - } : >> - return lPoint; : >> - } : >> - : >> - private GeoPoint getPointRigthLon(List<GeoPoint> points) { : >> - GeoPoint rPoint = null; : >> - for (GeoPoint point : points){ : >> - if(rPoint == null ){ : >> - rPoint = point; : >> - } : >> - else{ : >> - if (rPoint.getLongitude() < point.getLongitude()){ : >> - rPoint = point; : >> - } : >> - } : >> - } : >> - return rPoint; : >> - } : >> - : >> - /** : >> - * Class that holds the constraints that are given to : >> - * build shapes. It consists in a list of GeoAreaShapes : >> - * and relationships the new shape needs to satisfy. : >> - */ : >> - class Constraints extends HashMap<GeoAreaShape, Integer>{ : >> - : >> - /** : >> - * Check if the shape is valid under the constraints. : >> - * : >> - * @param shape The shape to check : >> - * @return true if the shape satisfy the constraints, else false. : >> - */ : >> - public boolean valid(GeoShape shape) { : >> - if (shape == null){ : >> - return false; : >> - } : >> - for (GeoAreaShape constraint : keySet()) { : >> - if (constraint.getRelationship(shape) != get(constraint)) { : >> - return false; : >> - } : >> - } : >> - return true; : >> - } : >> - : >> - /** : >> - * Check if a point is Within the constraints. : >> - * : >> - * @param point The point to check : >> - * @return true if the point satisfy the constraints, else false. : >> - */ : >> - public boolean isWithin(GeoPoint point) { : >> - for (GeoShape constraint : keySet()) { : >> - if (!(validPoint(point, constraint, get(constraint)))) { : >> - return false; : >> - } : >> - } : >> - return true; : >> - } : >> - : >> - /** : >> - * Check if a point is Within one constraint given by a shape and a : >> relationship. : >> - * : >> - * @param point The point to check : >> - * @param shape The shape of the constraint : >> - * @param relationship The relationship of the constraint. : >> - * @return true if the point satisfy the constraint, else false. : >> - */ : >> - private boolean validPoint(GeoPoint point, GeoShape shape, int : >> relationship) { : >> - //For GeoCompositeMembershipShape we only consider the first shape : >> to help : >> - // converging : >> - if (relationship == GeoArea.WITHIN && shape instanceof : >> GeoCompositeMembershipShape) { : >> - shape = (((GeoCompositeMembershipShape) shape).shapes.get(0)); : >> - } : >> - switch (relationship) { : >> - case GeoArea.DISJOINT: : >> - return !shape.isWithin(point); : >> - case GeoArea.OVERLAPS: : >> - return true; : >> - case GeoArea.CONTAINS: : >> - return !shape.isWithin(point); : >> - case GeoArea.WITHIN: : >> - return shape.isWithin(point); : >> - default: : >> - return true; : >> - } : >> - } : >> - : >> - /** : >> - * Collect the CONTAINS constraints in the object : >> - * : >> - * @return the CONTAINS constraints. : >> - */ : >> - public Constraints getContains(){ : >> - return getConstraintsOfType(GeoArea.CONTAINS); : >> - } : >> - : >> - /** : >> - * Collect the WITHIN constraints in the object : >> - * : >> - * @return the WITHIN constraints. : >> - */ : >> - public Constraints getWithin(){ : >> - return getConstraintsOfType(GeoArea.WITHIN); : >> - } : >> - : >> - /** : >> - * Collect the OVERLAPS constraints in the object : >> - * : >> - * @return the OVERLAPS constraints. : >> - */ : >> - public Constraints getOverlaps(){ : >> - return getConstraintsOfType(GeoArea.OVERLAPS); : >> - } : >> - : >> - /** : >> - * Collect the DISJOINT constraints in the object : >> - * : >> - * @return the DISJOINT constraints. : >> - */ : >> - public Constraints getDisjoint(){ : >> - return getConstraintsOfType(GeoArea.DISJOINT); : >> - } : >> - : >> - private Constraints getConstraintsOfType(int type){ : >> - Constraints constraints = new Constraints(); : >> - for (GeoAreaShape constraint : keySet()) { : >> - if (type == get(constraint)) { : >> - constraints.put(constraint, type); : >> - } : >> - } : >> - return constraints; : >> - } : >> - } : >> -} : >> - : >> - : >> - : >> : >> http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ : >> cd425d60/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/ : >> RandomGeoShapeRelationshipTest.java : >> ---------------------------------------------------------------------- : >> diff --git a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/ : >> RandomGeoShapeRelationshipTest.java b/lucene/spatial3d/src/test/ : >> org/apache/lucene/spatial3d/geom/RandomGeoShapeRelationshipTest.java : >> index 75a8c28..9c791b7 100644 : >> --- a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/ : >> RandomGeoShapeRelationshipTest.java : >> +++ b/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/ : >> RandomGeoShapeRelationshipTest.java : >> @@ -23,8 +23,7 @@ import org.junit.Test; : >> /** : >> * Random test to check relationship between GeoAreaShapes and GeoShapes. : >> */ : >> -public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> - : >> +public class RandomGeoShapeRelationshipTest extends : >> RandomGeo3dShapeGenerator { : >> : >> /** : >> * Test for WITHIN points. We build a WITHIN shape with respect the : >> geoAreaShape : >> @@ -38,6 +37,9 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> int referenceShapeType = CONVEX_POLYGON; : >> PlanetModel planetModel = randomPlanetModel(); : >> int shapeType = randomShapeType(); : >> + while (shapeType == POINT || shapeType == LINE) { : >> + shapeType = randomShapeType(); : >> + } : >> GeoAreaShape shape = null; : >> GeoPoint point = null; : >> while (point == null) { : >> @@ -51,7 +53,10 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> point = randomGeoPoint(planetModel, constraints); : >> } : >> } : >> - assertTrue(shape.isWithin(point)); : >> + StringBuilder b = new StringBuilder(); : >> + b.append("shape: " + shape + "\n"); : >> + b.append("point: " + point); : >> + assertTrue(b.toString(), shape.isWithin(point)); : >> } : >> : >> /** : >> @@ -78,7 +83,10 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> point = randomGeoPoint(planetModel, constraints); : >> } : >> } : >> - assertFalse(shape.isWithin(point)); : >> + StringBuilder b = new StringBuilder(); : >> + b.append("shape: " + shape + "\n"); : >> + b.append("point: " + point); : >> + assertFalse(b.toString(), shape.isWithin(point)); : >> } : >> : >> /** : >> @@ -94,7 +102,7 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> int referenceShapeType = CONVEX_SIMPLE_POLYGON; : >> PlanetModel planetModel = randomPlanetModel(); : >> int geoAreaShapeType = randomGeoAreaShapeType(); : >> - int shapeType =randomConvexShapeType(); : >> + int shapeType = randomConvexShapeType(); : >> : >> GeoShape shape = null; : >> GeoAreaShape geoAreaShape = null; : >> @@ -109,11 +117,14 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> shape = randomGeoShape(shapeType, planetModel, constraints); : >> } : >> } : >> + StringBuilder b = new StringBuilder(); : >> + b.append("geoAreaShape: " + geoAreaShape + "\n"); : >> + b.append("shape: " + shape); : >> int rel = geoAreaShape.getRelationship(shape); : >> - assertEquals(GeoArea.DISJOINT, rel); : >> + assertEquals(b.toString(), GeoArea.DISJOINT, rel); : >> if (shape instanceof GeoArea) { : >> rel = ((GeoArea)shape).getRelationship(geoAreaShape); : >> - assertEquals(GeoArea.DISJOINT, rel); : >> + assertEquals(b.toString(), GeoArea.DISJOINT, rel); : >> } : >> } : >> : >> @@ -129,7 +140,11 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> public void testRandomWithIn() { : >> PlanetModel planetModel = randomPlanetModel(); : >> int geoAreaShapeType = randomGeoAreaShapeType(); : >> - int shapeType =randomShapeType(); : >> + //shapes cannot be point or line -- no area! : >> + while(geoAreaShapeType == POINT || geoAreaShapeType == LINE) { : >> + geoAreaShapeType = randomGeoAreaShapeType(); : >> + } : >> + int shapeType = LINE;//randomShapeType(); : >> int referenceShapeType = CONVEX_SIMPLE_POLYGON; : >> if (!isConcave(geoAreaShapeType)){ : >> shapeType =randomConvexShapeType(); : >> @@ -150,11 +165,14 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> shape = randomGeoShape(shapeType, planetModel, constraints); : >> } : >> } : >> + StringBuilder b = new StringBuilder(); : >> + b.append("geoAreaShape: " + geoAreaShape + "\n"); : >> + b.append("shape: " + shape); : >> int rel = geoAreaShape.getRelationship(shape); : >> - assertEquals(GeoArea.WITHIN, rel); : >> + assertEquals(b.toString(), GeoArea.WITHIN, rel); : >> if (shape instanceof GeoArea) { : >> rel = ((GeoArea)shape).getRelationship(geoAreaShape); : >> - assertEquals(GeoArea.CONTAINS, rel); : >> + assertEquals(b.toString(), GeoArea.CONTAINS, rel); : >> } : >> } : >> : >> @@ -174,10 +192,13 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> int referenceShapeType = CONVEX_SIMPLE_POLYGON; : >> PlanetModel planetModel = randomPlanetModel(); : >> int geoAreaShapeType = randomGeoAreaShapeType(); : >> - while (geoAreaShapeType == COLLECTION){ : >> + while (geoAreaShapeType == COLLECTION ){ : >> geoAreaShapeType = randomGeoAreaShapeType(); : >> } : >> int shapeType = randomShapeType(); : >> + while (shapeType == POINT || shapeType == LINE) { : >> + shapeType = randomShapeType(); : >> + } : >> if (isConcave(geoAreaShapeType)){ : >> shapeType = randomConcaveShapeType(); : >> } : >> @@ -197,11 +218,14 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> shape = randomGeoShape(shapeType, planetModel, constraints); : >> } : >> } : >> + StringBuilder b = new StringBuilder(); : >> + b.append("geoAreaShape: " + geoAreaShape + "\n"); : >> + b.append("shape: " + shape); : >> int rel = geoAreaShape.getRelationship(shape); : >> - assertEquals(GeoArea.CONTAINS, rel); : >> + assertEquals(b.toString(), GeoArea.CONTAINS, rel); : >> if (shape instanceof GeoArea) { : >> rel = ((GeoArea)shape).getRelationship(geoAreaShape); : >> - assertEquals(GeoArea.WITHIN, rel); : >> + assertEquals(b.toString(), GeoArea.WITHIN, rel); : >> } : >> } : >> : >> @@ -216,8 +240,13 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> public void testRandomOverlaps() { : >> PlanetModel planetModel = randomPlanetModel(); : >> int geoAreaShapeType = randomGeoAreaShapeType(); : >> + while (geoAreaShapeType == POINT || geoAreaShapeType == LINE) { : >> + geoAreaShapeType = randomGeoAreaShapeType(); : >> + } : >> int shapeType = randomShapeType(); : >> - : >> + while (shapeType == POINT || shapeType == LINE) { : >> + shapeType = randomShapeType(); : >> + } : >> GeoShape shape = null; : >> GeoAreaShape geoAreaShape = null; : >> while (shape == null) { : >> @@ -246,12 +275,14 @@ public class RandomGeoShapeRelationshipTest extends : >> RandomGeoShapeGenerator { : >> shape = randomGeoShape(shapeType, planetModel, constraints); : >> } : >> } : >> + StringBuilder b = new StringBuilder(); : >> + b.append("geoAreaShape: " + geoAreaShape + "\n"); : >> + b.append("shape: " + shape); : >> int rel = geoAreaShape.getRelationship(shape); : >> - assertEquals(GeoArea.OVERLAPS, rel); : >> + assertEquals(b.toString(), GeoArea.OVERLAPS, rel); : >> if (shape instanceof GeoArea) { : >> rel = ((GeoArea)shape).getRelationship(geoAreaShape); : >> - assertEquals(GeoArea.OVERLAPS, rel); : >> + assertEquals(b.toString(), GeoArea.OVERLAPS, rel); : >> } : >> } : >> } : >> - : >> : >> : -Hoss http://www.lucidworks.com/
--------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org