Skip to content

Commit 1328c11

Browse files
committed
add more tests to geotileutils
1 parent 53778ba commit 1328c11

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

server/src/test/java/org/elasticsearch/search/aggregations/bucket/geogrid/GeoTileUtilsTests.java

+22
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.elasticsearch.search.aggregations.bucket.geogrid;
2121

2222
import org.elasticsearch.common.geo.GeoPoint;
23+
import org.elasticsearch.geometry.Rectangle;
2324
import org.elasticsearch.test.ESTestCase;
2425

2526
import static org.elasticsearch.search.aggregations.bucket.geogrid.GeoTileUtils.MAX_ZOOM;
@@ -28,8 +29,10 @@
2829
import static org.elasticsearch.search.aggregations.bucket.geogrid.GeoTileUtils.keyToGeoPoint;
2930
import static org.elasticsearch.search.aggregations.bucket.geogrid.GeoTileUtils.longEncode;
3031
import static org.elasticsearch.search.aggregations.bucket.geogrid.GeoTileUtils.stringEncode;
32+
import static org.hamcrest.Matchers.anyOf;
3133
import static org.hamcrest.Matchers.closeTo;
3234
import static org.hamcrest.Matchers.containsString;
35+
import static org.hamcrest.Matchers.equalTo;
3336

3437
public class GeoTileUtilsTests extends ESTestCase {
3538

@@ -231,4 +234,23 @@ public void testSingularityAtPoles() {
231234
String clippedTileIndex = stringEncode(longEncode(lon, clippedLat, zoom));
232235
assertEquals(tileIndex, clippedTileIndex);
233236
}
237+
238+
public void testPointToTile() {
239+
int zoom = randomIntBetween(0, MAX_ZOOM);
240+
int tiles = 1 << zoom;
241+
int xTile = randomIntBetween(0, zoom);
242+
int yTile = randomIntBetween(0, zoom);
243+
Rectangle rectangle = GeoTileUtils.toBoundingBox(xTile, yTile, zoom);
244+
// check corners
245+
assertThat(GeoTileUtils.getXTile(rectangle.getMinX(), tiles), equalTo(xTile));
246+
assertThat(GeoTileUtils.getXTile(rectangle.getMaxX(), tiles), equalTo(Math.min(tiles - 1, xTile + 1)));
247+
assertThat(GeoTileUtils.getYTile(rectangle.getMaxY(), tiles), anyOf(equalTo(yTile - 1), equalTo(yTile)));
248+
assertThat(GeoTileUtils.getYTile(rectangle.getMinY(), tiles), anyOf(equalTo(yTile + 1), equalTo(yTile)));
249+
// check point inside
250+
double x = randomDoubleBetween(rectangle.getMinX(), rectangle.getMaxX(), false);
251+
double y = randomDoubleBetween(rectangle.getMinY(), rectangle.getMaxY(), false);
252+
assertThat(GeoTileUtils.getXTile(x, tiles), equalTo(xTile));
253+
assertThat(GeoTileUtils.getYTile(y, tiles), equalTo(yTile));
254+
255+
}
234256
}

0 commit comments

Comments
 (0)