private static GeoDistance geoDistance(GeoDistance original) { int id = -1; while (id == -1 || (original != null && original.ordinal() == id)) { id = randomIntBetween(0, GeoDistance.values().length - 1); } return GeoDistance.values()[id]; }
@Override protected GeoDistanceRangeQueryBuilder doCreateTestQueryBuilder() { GeoDistanceRangeQueryBuilder builder; GeoPoint randomPoint = RandomGeoGenerator.randomPointIn(random(), -180.0, -89.9, 180.0, 89.9); if (randomBoolean()) { builder = new GeoDistanceRangeQueryBuilder(GEO_POINT_FIELD_NAME, randomPoint.geohash()); } else { if (randomBoolean()) { builder = new GeoDistanceRangeQueryBuilder(GEO_POINT_FIELD_NAME, randomPoint); } else { builder = new GeoDistanceRangeQueryBuilder( GEO_POINT_FIELD_NAME, randomPoint.lat(), randomPoint.lon()); } } GeoPoint point = builder.point(); final double maxRadius = GeoUtils.maxRadialDistanceMeters(point.lat(), point.lon()); final int fromValueMeters = randomInt((int) (maxRadius * 0.5)); final int toValueMeters = randomIntBetween(fromValueMeters + 1, (int) maxRadius); DistanceUnit fromToUnits = randomFrom(DistanceUnit.values()); final String fromToUnitsStr = fromToUnits.toString(); final double fromValue = DistanceUnit.convert(fromValueMeters, DistanceUnit.DEFAULT, fromToUnits); final double toValue = DistanceUnit.convert(toValueMeters, DistanceUnit.DEFAULT, fromToUnits); if (randomBoolean()) { int branch = randomInt(2); fromToUnits = DistanceUnit.DEFAULT; switch (branch) { case 0: builder.from(fromValueMeters); break; case 1: builder.to(toValueMeters); break; case 2: builder.from(fromValueMeters); builder.to(toValueMeters); break; } } else { int branch = randomInt(2); switch (branch) { case 0: builder.from(fromValue + fromToUnitsStr); break; case 1: builder.to(toValue + fromToUnitsStr); break; case 2: builder.from(fromValue + fromToUnitsStr); builder.to(toValue + fromToUnitsStr); break; } } if (randomBoolean()) { builder.includeLower(randomBoolean()); } if (randomBoolean()) { builder.includeUpper(randomBoolean()); } if (randomBoolean()) { builder.geoDistance(randomFrom(GeoDistance.values())); } builder.unit(fromToUnits); if (randomBoolean()) { builder.setValidationMethod(randomFrom(GeoValidationMethod.values())); } if (randomBoolean()) { builder.ignoreUnmapped(randomBoolean()); } return builder; }