summaryrefslogtreecommitdiff
path: root/test/util/tile_cover.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/util/tile_cover.cpp')
-rw-r--r--test/util/tile_cover.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/test/util/tile_cover.cpp b/test/util/tile_cover.cpp
new file mode 100644
index 0000000000..d003653fd8
--- /dev/null
+++ b/test/util/tile_cover.cpp
@@ -0,0 +1,118 @@
+#include <mbgl/util/tile_cover.hpp>
+#include <mbgl/util/geo.hpp>
+#include <mbgl/map/tile_id.hpp>
+
+#include <gtest/gtest.h>
+
+#include <unordered_set>
+
+using namespace mbgl;
+using set = std::unordered_set<TileID>;
+
+TEST(TileCover, Empty) {
+ auto result = tileCover(LatLngBounds::empty(), 0, 0);
+ ASSERT_TRUE(result.empty());
+}
+
+TEST(TileCover, Arctic) {
+ auto result = tileCover(LatLngBounds::hull({ 86, -180 }, { 90, 180 }), 0, 0);
+ ASSERT_TRUE(result.empty());
+}
+
+TEST(TileCover, Antarctic) {
+ auto result = tileCover(LatLngBounds::hull({ -86, -180 }, { -90, 180 }), 0, 0);
+ ASSERT_TRUE(result.empty());
+}
+
+TEST(TileCover, WorldZ0) {
+ auto result = tileCover(LatLngBounds::world(), 0, 0);
+ ASSERT_EQ(1, result.size());
+ ASSERT_EQ(0, result[0].z);
+ ASSERT_EQ(0, result[0].x);
+ ASSERT_EQ(0, result[0].y);
+}
+
+TEST(TileCover, WorldZ1) {
+ auto result = tileCover(LatLngBounds::world(), 1, 1);
+ ASSERT_EQ(4, result.size());
+ ASSERT_EQ(
+ (set {{
+ TileID(1, 1, 1, 1),
+ TileID(1, 0, 1, 1),
+ TileID(1, 1, 0, 1),
+ TileID(1, 0, 0, 1)
+ }}),
+ (set {
+ result.begin(),
+ result.end()
+ }));
+}
+
+//TEST(TileCover, SingletonZ0) {
+// auto result = tileCover(LatLngBounds::singleton({0, 0}), 0, 0);
+// ASSERT_EQ(1, result.size());
+// ASSERT_EQ(0, result[0].z);
+// ASSERT_EQ(0, result[0].x);
+// ASSERT_EQ(0, result[0].y);
+//}
+//
+//TEST(TileCover, SingletonZ1) {
+// auto result = tileCover(LatLngBounds::singleton({0, 0}), 1, 1);
+// ASSERT_EQ(1, result.size());
+// ASSERT_EQ(0, result[0].z);
+// ASSERT_EQ(0, result[0].x);
+// ASSERT_EQ(0, result[0].y);
+//}
+
+static const LatLngBounds sanFrancisco = LatLngBounds::hull(
+ { 37.6609, -122.5744 },
+ { 37.8271, -122.3204 });
+
+TEST(TileCover, SanFranciscoZ0) {
+ auto result = tileCover(sanFrancisco, 0, 0);
+ ASSERT_EQ(1, result.size());
+ ASSERT_EQ(0, result[0].w);
+ ASSERT_EQ(0, result[0].z);
+ ASSERT_EQ(0, result[0].x);
+ ASSERT_EQ(0, result[0].y);
+}
+
+TEST(TileCover, SanFranciscoZ10) {
+ auto result = tileCover(sanFrancisco, 10, 10);
+ ASSERT_EQ(4, result.size());
+ ASSERT_EQ(
+ (set {{
+ TileID(10, 163, 395, 10),
+ TileID(10, 164, 395, 10),
+ TileID(10, 163, 396, 10),
+ TileID(10, 164, 396, 10)
+ }}),
+ (set {
+ result.begin(),
+ result.end()
+ }));
+}
+
+//TEST(TileCover, OrderedByDistanceToCenter) {
+// auto result = tileCover(sanFrancisco, 12, 12);
+// ASSERT_EQ(12, result.size());
+// ASSERT_EQ( 12, result[0].z);
+// ASSERT_EQ( 654, result[0].x);
+// ASSERT_EQ(1583, result[0].y);
+// ASSERT_EQ( 12, result[1].z);
+// ASSERT_EQ( 655, result[1].x);
+// ASSERT_EQ(1583, result[1].y);
+//}
+//
+//static const LatLngBounds sanFranciscoWrapped = LatLngBounds::hull(
+// { 37.6609, 238.5744 },
+// { 37.8271, 238.3204 });
+//
+//TEST(TileCover, SanFranciscoZ0Wrapped) {
+// auto result = tileCover(sanFranciscoWrapped, 0, 0);
+// ASSERT_EQ(1, result.size());
+// ASSERT_EQ(1, result[0].w);
+// ASSERT_EQ(0, result[0].z);
+// ASSERT_EQ(0, result[0].x);
+// ASSERT_EQ(0, result[0].y);
+//}