summaryrefslogtreecommitdiff
path: root/misc/openlayers/tests/Layer/UTFGrid.html
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/tests/Layer/UTFGrid.html')
-rw-r--r--misc/openlayers/tests/Layer/UTFGrid.html131
1 files changed, 131 insertions, 0 deletions
diff --git a/misc/openlayers/tests/Layer/UTFGrid.html b/misc/openlayers/tests/Layer/UTFGrid.html
new file mode 100644
index 0000000..872d796
--- /dev/null
+++ b/misc/openlayers/tests/Layer/UTFGrid.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+ <script>
+ /**
+ * Because browsers that implement requestAnimationFrame may not execute
+ * animation functions while a window is not displayed (e.g. in a hidden
+ * iframe as in these tests), we mask the native implementations here. The
+ * native requestAnimationFrame functionality is tested in Util.html and
+ * in PanZoom.html (where a popup is opened before panning). The panTo tests
+ * here will test the fallback setTimeout implementation for animation.
+ */
+ window.requestAnimationFrame =
+ window.webkitRequestAnimationFrame =
+ window.mozRequestAnimationFrame =
+ window.oRequestAnimationFrame =
+ window.msRequestAnimationFrame = null;
+ </script>
+ <script src="../OLLoader.js"></script>
+ <script type="text/javascript">
+
+ var map, layer;
+ function setUp() {
+ layer = new OpenLayers.Layer.UTFGrid({
+ url: "../data/utfgrid/world_utfgrid/${z}/${x}/${y}.json",
+ isBaseLayer: true,
+ utfgridResolution: 4
+ });
+ map = new OpenLayers.Map({
+ div: "map",
+ projection: "EPSG:900913",
+ layers: [layer],
+ center: [0, 0],
+ zoom: 1,
+ tileManager: null
+ });
+ }
+
+ function tearDown() {
+ map.destroy();
+ map = null;
+ layer = null;
+ }
+
+ function test_constructor(t) {
+ t.plan(4);
+
+ var layer = new OpenLayers.Layer.UTFGrid({
+ name: "foo",
+ url: "path/to/tiles/${z}/${x}/${y}",
+ utfgridResolution: 8
+ });
+ t.ok(layer instanceof OpenLayers.Layer.UTFGrid, "utfgrid instance");
+ t.eq(layer.name, "foo", "layer name");
+ t.eq(layer.url, "path/to/tiles/${z}/${x}/${y}", "layer url");
+ t.eq(layer.utfgridResolution, 8, "layer utfgridResolution");
+
+ layer.destroy();
+
+ }
+
+ function test_createBackBuffer(t) {
+ t.plan(1);
+ setUp();
+
+ var got;
+ try {
+ got = layer.createBackBuffer();
+ } catch (e) {
+ got = e;
+ } finally {
+ tearDown();
+ }
+ t.eq(got, undefined, "createBackBuffer returns undefined");
+ }
+
+ function test_clone(t) {
+ t.plan(3);
+ setUp();
+
+ var clone = layer.clone();
+ t.ok(layer instanceof OpenLayers.Layer.UTFGrid, "utfgrid instance");
+ t.eq(layer.url, "../data/utfgrid/world_utfgrid/${z}/${x}/${y}.json", "layer url");
+ t.eq(layer.utfgridResolution, 4, "layer utfgridResolution");
+ clone.destroy();
+
+ tearDown();
+ }
+
+ function test_getFeatureInfo(t) {
+ t.plan(2);
+ setUp();
+
+ // wait for tile loading to finish
+ t.delay_call(0.5, function() {
+ var loc = new OpenLayers.LonLat(-110, 45).transform("EPSG:4326", "EPSG:900913");
+ var info = layer.getFeatureInfo(loc);
+
+ t.eq(info.id, "207", "feature id");
+ t.eq(info.data, {POP2005: 299846449, NAME: "United States"}, "feature data");
+
+ tearDown();
+ });
+
+ }
+
+ function test_getFeatureId(t) {
+ t.plan(2);
+ setUp();
+
+ // wait for tile loading to finish
+ t.delay_call(0.5, function() {
+ var ca = new OpenLayers.LonLat(-110, 55).transform("EPSG:4326", "EPSG:900913");
+ var ru = new OpenLayers.LonLat(90, 75).transform("EPSG:4326", "EPSG:900913");
+
+ t.eq(layer.getFeatureId(ca), "24", "feature id for ca");
+ t.eq(layer.getFeatureId(ru), "245", "feature id for ru");
+
+ tearDown();
+ });
+
+ }
+
+ </script>
+</head>
+<body>
+<div id="map" style="height: 256px; width: 512px"></div>
+</body>
+</html>
+