summaryrefslogtreecommitdiff
path: root/misc/openlayers/tests/Control/UTFGrid.html
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/tests/Control/UTFGrid.html')
-rw-r--r--misc/openlayers/tests/Control/UTFGrid.html120
1 files changed, 120 insertions, 0 deletions
diff --git a/misc/openlayers/tests/Control/UTFGrid.html b/misc/openlayers/tests/Control/UTFGrid.html
new file mode 100644
index 0000000..74b4b99
--- /dev/null
+++ b/misc/openlayers/tests/Control/UTFGrid.html
@@ -0,0 +1,120 @@
+<!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, control;
+ var log;
+ 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",
+ tileManager: null,
+ projection: "EPSG:900913",
+ layers: [layer],
+ center: [0, 0],
+ zoom: 1
+ });
+ log = [];
+ control = new OpenLayers.Control.UTFGrid({
+ callback: function(infoLookup, loc, pixel) {
+ log.push([infoLookup, loc, pixel]);
+ }
+ });
+ map.addControl(control);
+ }
+
+ function tearDown() {
+ map.destroy();
+ map = null;
+ layer = null;
+ control = null;
+ log = [];
+ }
+
+ function test_constructor(t) {
+ t.plan(2);
+
+ var control = new OpenLayers.Control.UTFGrid();
+ t.ok(control instanceof OpenLayers.Control.UTFGrid, "utfgrid instance");
+ t.eq(control.handlerMode, "click", "control mode");
+
+ control.destroy();
+
+ }
+
+ function test_handleEvent(t) {
+ setUp();
+
+ var cases = [{
+ evt: {xy: {x: 100, y: 70}},
+ lookup: {
+ "0": {
+ id: "207",
+ data: {
+ NAME: "United States",
+ POP2005: 299846449
+ }
+ }
+ }
+ }, {
+ evt: {xy: {x: 350, y: 20}},
+ lookup: {
+ "0": {
+ id: "245",
+ data: {
+ NAME: "Russia",
+ POP2005: 143953092
+ }
+ }
+ }
+ }];
+
+ var len = cases.length;
+ t.plan(4*len);
+
+ // wait for tile loading to finish
+ t.delay_call(0.5, function() {
+ var c, arg;
+ for (var i=0; i<len; ++i) {
+ c = cases[i];
+ t.eq(log.length, i, i + ": log length before");
+ control.handleEvent(c.evt);
+ t.eq(log.length, i+1, i + ": log length after");
+ t.eq(log[i][0], c.lookup, i + ": callback infoLookup");
+ t.eq(log[i][2], c.evt.xy, i + ": callback pixel");
+ }
+
+ tearDown();
+ });
+
+ }
+
+ </script>
+</head>
+<body>
+<div id="map" style="height: 256px; width: 512px"></div>
+</body>
+</html>
+