Add test for GeoHashUtils#bbox()
This commit is contained in:
parent
f77f79c24a
commit
0d428b6ba8
|
@ -18,6 +18,7 @@
|
||||||
*/
|
*/
|
||||||
package org.elasticsearch.common.geo;
|
package org.elasticsearch.common.geo;
|
||||||
|
|
||||||
|
import org.apache.lucene.geo.Rectangle;
|
||||||
import org.elasticsearch.test.ESTestCase;
|
import org.elasticsearch.test.ESTestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -57,4 +58,16 @@ public class GeoHashTests extends ESTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testBboxFromHash() {
|
||||||
|
String hash = randomGeohash(1, 12);
|
||||||
|
int level = hash.length();
|
||||||
|
Rectangle bbox = GeoHashUtils.bbox(hash);
|
||||||
|
// check that the length is as expected
|
||||||
|
double expectedLonDiff = 360.0 / (Math.pow(8.0, (level + 1) / 2) * Math.pow(4.0, level / 2));
|
||||||
|
double expectedLatDiff = 180.0 / (Math.pow(4.0, (level + 1) / 2) * Math.pow(8.0, level / 2));
|
||||||
|
assertEquals(expectedLonDiff, bbox.maxLon - bbox.minLon, 0.00001);
|
||||||
|
assertEquals(expectedLatDiff, bbox.maxLat - bbox.minLat, 0.00001);
|
||||||
|
assertEquals(hash, GeoHashUtils.stringEncode(bbox.minLon, bbox.minLat, level));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
|
|
||||||
package org.elasticsearch.test;
|
package org.elasticsearch.test;
|
||||||
|
|
||||||
import com.carrotsearch.randomizedtesting.generators.CodepointSetGenerator;
|
|
||||||
import com.fasterxml.jackson.core.JsonParseException;
|
import com.fasterxml.jackson.core.JsonParseException;
|
||||||
import com.fasterxml.jackson.core.io.JsonStringEncoder;
|
import com.fasterxml.jackson.core.io.JsonStringEncoder;
|
||||||
|
|
||||||
|
@ -128,7 +127,6 @@ import static org.hamcrest.Matchers.not;
|
||||||
|
|
||||||
public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>> extends ESTestCase {
|
public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>> extends ESTestCase {
|
||||||
|
|
||||||
private static final GeohashGenerator geohashGenerator = new GeohashGenerator();
|
|
||||||
public static final String STRING_FIELD_NAME = "mapped_string";
|
public static final String STRING_FIELD_NAME = "mapped_string";
|
||||||
protected static final String STRING_FIELD_NAME_2 = "mapped_string_2";
|
protected static final String STRING_FIELD_NAME_2 = "mapped_string_2";
|
||||||
protected static final String INT_FIELD_NAME = "mapped_int";
|
protected static final String INT_FIELD_NAME = "mapped_int";
|
||||||
|
@ -685,18 +683,6 @@ public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>>
|
||||||
return (serviceHolder.currentTypes.length == 0) ? MetaData.ALL : randomFrom(serviceHolder.currentTypes);
|
return (serviceHolder.currentTypes.length == 0) ? MetaData.ALL : randomFrom(serviceHolder.currentTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String randomGeohash(int minPrecision, int maxPrecision) {
|
|
||||||
return geohashGenerator.ofStringLength(random(), minPrecision, maxPrecision);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class GeohashGenerator extends CodepointSetGenerator {
|
|
||||||
private static final char[] ASCII_SET = "0123456789bcdefghjkmnpqrstuvwxyz".toCharArray();
|
|
||||||
|
|
||||||
public GeohashGenerator() {
|
|
||||||
super(ASCII_SET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static Fuzziness randomFuzziness(String fieldName) {
|
protected static Fuzziness randomFuzziness(String fieldName) {
|
||||||
switch (fieldName) {
|
switch (fieldName) {
|
||||||
case INT_FIELD_NAME:
|
case INT_FIELD_NAME:
|
||||||
|
|
|
@ -24,6 +24,7 @@ import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
|
||||||
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
|
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
|
||||||
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope.Scope;
|
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope.Scope;
|
||||||
import com.carrotsearch.randomizedtesting.annotations.TimeoutSuite;
|
import com.carrotsearch.randomizedtesting.annotations.TimeoutSuite;
|
||||||
|
import com.carrotsearch.randomizedtesting.generators.CodepointSetGenerator;
|
||||||
import com.carrotsearch.randomizedtesting.generators.RandomInts;
|
import com.carrotsearch.randomizedtesting.generators.RandomInts;
|
||||||
import com.carrotsearch.randomizedtesting.generators.RandomPicks;
|
import com.carrotsearch.randomizedtesting.generators.RandomPicks;
|
||||||
import com.carrotsearch.randomizedtesting.generators.RandomStrings;
|
import com.carrotsearch.randomizedtesting.generators.RandomStrings;
|
||||||
|
@ -663,6 +664,20 @@ public abstract class ESTestCase extends LuceneTestCase {
|
||||||
return things;
|
return things;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String randomGeohash(int minPrecision, int maxPrecision) {
|
||||||
|
return geohashGenerator.ofStringLength(random(), minPrecision, maxPrecision);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final GeohashGenerator geohashGenerator = new GeohashGenerator();
|
||||||
|
|
||||||
|
public static class GeohashGenerator extends CodepointSetGenerator {
|
||||||
|
private final static char[] ASCII_SET = "0123456789bcdefghjkmnpqrstuvwxyz".toCharArray();
|
||||||
|
|
||||||
|
public GeohashGenerator() {
|
||||||
|
super(ASCII_SET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Randomly shuffles the fields inside objects in the {@link XContentBuilder} passed in.
|
* Randomly shuffles the fields inside objects in the {@link XContentBuilder} passed in.
|
||||||
* Recursively goes through inner objects and also shuffles them. Exceptions for this
|
* Recursively goes through inner objects and also shuffles them. Exceptions for this
|
||||||
|
|
Loading…
Reference in New Issue