Tests for UTFGrid tiles.
This commit is contained in:
@@ -62,7 +62,7 @@ OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* APIMethod: destroy
|
* APIMethod: destroy
|
||||||
* nullify references to prevent circular references and memory leaks
|
* Clean up.
|
||||||
*/
|
*/
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
this.clear();
|
this.clear();
|
||||||
@@ -82,6 +82,7 @@ OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
|
|||||||
var drawn = OpenLayers.Tile.prototype.draw.apply(this, arguments);
|
var drawn = OpenLayers.Tile.prototype.draw.apply(this, arguments);
|
||||||
if (drawn) {
|
if (drawn) {
|
||||||
if (this.isLoading) {
|
if (this.isLoading) {
|
||||||
|
this.abortLoading();
|
||||||
//if we're already loading, send 'reload' instead of 'loadstart'.
|
//if we're already loading, send 'reload' instead of 'loadstart'.
|
||||||
this.events.triggerEvent("reload");
|
this.events.triggerEvent("reload");
|
||||||
} else {
|
} else {
|
||||||
@@ -93,7 +94,7 @@ OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
|
|||||||
if (this.layer.useJSONP) {
|
if (this.layer.useJSONP) {
|
||||||
// Use JSONP method to avoid xbrowser policy
|
// Use JSONP method to avoid xbrowser policy
|
||||||
var ols = new OpenLayers.Protocol.Script({
|
var ols = new OpenLayers.Protocol.Script({
|
||||||
url: this.url,
|
url: this.url,
|
||||||
callback: function(response) {
|
callback: function(response) {
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
this.events.triggerEvent("loadend");
|
this.events.triggerEvent("loadend");
|
||||||
@@ -102,9 +103,10 @@ OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
|
|||||||
scope: this
|
scope: this
|
||||||
});
|
});
|
||||||
ols.read();
|
ols.read();
|
||||||
|
this.request = ols;
|
||||||
} else {
|
} else {
|
||||||
// Use standard XHR
|
// Use standard XHR
|
||||||
OpenLayers.Request.GET({
|
this.request = OpenLayers.Request.GET({
|
||||||
url: this.url,
|
url: this.url,
|
||||||
callback: function(response) {
|
callback: function(response) {
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
@@ -121,9 +123,21 @@ OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
|
|||||||
}
|
}
|
||||||
return drawn;
|
return drawn;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: abortLoading
|
||||||
|
* Cancel a pending request.
|
||||||
|
*/
|
||||||
|
abortLoading: function() {
|
||||||
|
if (this.request) {
|
||||||
|
this.request.abort();
|
||||||
|
delete this.request;
|
||||||
|
}
|
||||||
|
this.isLoading = false;
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method: parseJSON
|
* Method: parseData
|
||||||
* Parse the JSON from a request
|
* Parse the JSON from a request
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
|
|||||||
168
tests/Tile/UTFGrid.html
Normal file
168
tests/Tile/UTFGrid.html
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="../OLLoader.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var map, layer;
|
||||||
|
function setUp() {
|
||||||
|
layer = new OpenLayers.Layer.UTFGrid(
|
||||||
|
null,
|
||||||
|
"../data/utfgrid/world_utfgrid/${z}/${x}/${y}.json",
|
||||||
|
{isBaseLayer: true}
|
||||||
|
);
|
||||||
|
map = new OpenLayers.Map({
|
||||||
|
div: "map",
|
||||||
|
projection: "EPSG:900913",
|
||||||
|
layers: [layer],
|
||||||
|
center: [0, 0],
|
||||||
|
zoom: 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function tearDown() {
|
||||||
|
map.destroy();
|
||||||
|
map = null;
|
||||||
|
layer = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_constructor(t) {
|
||||||
|
t.plan(7);
|
||||||
|
|
||||||
|
setUp();
|
||||||
|
|
||||||
|
var position = new OpenLayers.Pixel(20, 30);
|
||||||
|
var bounds = new OpenLayers.Bounds(1, 2, 3, 4);
|
||||||
|
var url = "http://example.com/";
|
||||||
|
var size = new OpenLayers.Size(5, 6);
|
||||||
|
var tile = new OpenLayers.Tile.UTFGrid(layer, position, bounds, url, size);
|
||||||
|
|
||||||
|
t.ok(tile instanceof OpenLayers.Tile, "tile instance");
|
||||||
|
t.ok(tile instanceof OpenLayers.Tile.UTFGrid, "UTFGrid tile instance");
|
||||||
|
t.ok(tile.layer === layer, "layer set");
|
||||||
|
t.ok(tile.position.equals(position), "position set");
|
||||||
|
t.ok(tile.bounds.equals(bounds), "bounds set");
|
||||||
|
t.eq(tile.url, url, "url set");
|
||||||
|
t.ok(tile.size.equals(size), "size set");
|
||||||
|
|
||||||
|
tearDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_parseData(t) {
|
||||||
|
t.plan(2);
|
||||||
|
setUp();
|
||||||
|
|
||||||
|
var tile = layer.grid[0][0];
|
||||||
|
|
||||||
|
tile.parseData('{"foo": "bar"}');
|
||||||
|
t.eq(tile.json, {foo: "bar"}, "valid json parsed");
|
||||||
|
|
||||||
|
var err;
|
||||||
|
try {
|
||||||
|
tile.parseData('foo bar');
|
||||||
|
} catch (e) {
|
||||||
|
err = e;
|
||||||
|
}
|
||||||
|
t.ok(err instanceof Error, "throws on invalid json");
|
||||||
|
|
||||||
|
tearDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_draw(t) {
|
||||||
|
t.plan(7);
|
||||||
|
setUp();
|
||||||
|
|
||||||
|
var position = new OpenLayers.Pixel(20, 30);
|
||||||
|
var bounds = new OpenLayers.Bounds(1, 2, 3, 4);
|
||||||
|
var url = "../data/utfgrid/world_utfgrid/${z}/${x}/${y}.json";
|
||||||
|
var size = new OpenLayers.Size(256, 256);
|
||||||
|
var tile = new OpenLayers.Tile.UTFGrid(layer, position, bounds, url, size);
|
||||||
|
|
||||||
|
var log = [];
|
||||||
|
function logger(event) {
|
||||||
|
log.push(event);
|
||||||
|
}
|
||||||
|
tile.events.on({
|
||||||
|
loadstart: logger,
|
||||||
|
reload: logger,
|
||||||
|
loadend: logger
|
||||||
|
});
|
||||||
|
|
||||||
|
t.eq(log.length, 0, "no events logged");
|
||||||
|
|
||||||
|
// start tile loading
|
||||||
|
tile.draw();
|
||||||
|
t.eq(log.length, 1, "[first draw] one event");
|
||||||
|
t.eq(log[0].type, "loadstart", "[first draw] loadstart");
|
||||||
|
|
||||||
|
// restart tile loading
|
||||||
|
log.length = 0;
|
||||||
|
tile.draw();
|
||||||
|
t.eq(log.length, 1, "[second draw] first event");
|
||||||
|
t.eq(log[0].type, "reload", "[second draw] reload");
|
||||||
|
|
||||||
|
// wait for tile loading to finish
|
||||||
|
t.delay_call(1, function() {
|
||||||
|
t.eq(log.length, 2, "[second draw] second event");
|
||||||
|
t.eq(log[1].type, "loadend", "[second draw] loadend");
|
||||||
|
tearDown();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_abortLoading(t) {
|
||||||
|
t.plan(7);
|
||||||
|
setUp();
|
||||||
|
|
||||||
|
var position = new OpenLayers.Pixel(20, 30);
|
||||||
|
var bounds = new OpenLayers.Bounds(1, 2, 3, 4);
|
||||||
|
var url = "../data/utfgrid/world_utfgrid/${z}/${x}/${y}.json";
|
||||||
|
var size = new OpenLayers.Size(256, 256);
|
||||||
|
var tile = new OpenLayers.Tile.UTFGrid(layer, position, bounds, url, size);
|
||||||
|
|
||||||
|
var log = [];
|
||||||
|
function logger(event) {
|
||||||
|
log.push(event);
|
||||||
|
}
|
||||||
|
tile.events.on({
|
||||||
|
loadstart: logger,
|
||||||
|
reload: logger,
|
||||||
|
loadend: logger
|
||||||
|
});
|
||||||
|
|
||||||
|
t.eq(log.length, 0, "no events logged");
|
||||||
|
|
||||||
|
// start tile loading
|
||||||
|
tile.draw();
|
||||||
|
t.eq(log.length, 1, "[first draw] one event");
|
||||||
|
t.eq(log[0].type, "loadstart", "[first draw] loadstart");
|
||||||
|
|
||||||
|
// abort tile loading
|
||||||
|
log.length = 0;
|
||||||
|
tile.abortLoading();
|
||||||
|
t.eq(log.length, 0, "[first abort] no events logged"); // TODO: does anybody need an abort event?
|
||||||
|
|
||||||
|
// abort again for the heck of it
|
||||||
|
var err;
|
||||||
|
try {
|
||||||
|
tile.abortLoading();
|
||||||
|
} catch (e) {
|
||||||
|
err = e;
|
||||||
|
}
|
||||||
|
t.ok(!err, "[second abort] no trouble");
|
||||||
|
t.eq(log.length, 0, "[second abort] no events");
|
||||||
|
|
||||||
|
// wait to confirm tile loading doesn't happen after abort
|
||||||
|
t.delay_call(1, function() {
|
||||||
|
t.eq(log.length, 0, "[wait] no events");
|
||||||
|
tearDown();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="map" style="height:550px;width:500px"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
1
tests/data/utfgrid/bio_utfgrid/1/0/0.json
Normal file
1
tests/data/utfgrid/bio_utfgrid/1/0/0.json
Normal file
File diff suppressed because one or more lines are too long
1
tests/data/utfgrid/bio_utfgrid/1/0/1.json
Normal file
1
tests/data/utfgrid/bio_utfgrid/1/0/1.json
Normal file
File diff suppressed because one or more lines are too long
1
tests/data/utfgrid/bio_utfgrid/1/0/2.json
Normal file
1
tests/data/utfgrid/bio_utfgrid/1/0/2.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"keys": [""], "data": {}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||||
1
tests/data/utfgrid/bio_utfgrid/1/1/0.json
Normal file
1
tests/data/utfgrid/bio_utfgrid/1/1/0.json
Normal file
File diff suppressed because one or more lines are too long
1
tests/data/utfgrid/bio_utfgrid/1/1/1.json
Normal file
1
tests/data/utfgrid/bio_utfgrid/1/1/1.json
Normal file
File diff suppressed because one or more lines are too long
1
tests/data/utfgrid/bio_utfgrid/1/1/2.json
Normal file
1
tests/data/utfgrid/bio_utfgrid/1/1/2.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"keys": [""], "data": {}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||||
1
tests/data/utfgrid/bio_utfgrid/1/2/0.json
Normal file
1
tests/data/utfgrid/bio_utfgrid/1/2/0.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"keys": [""], "data": {}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||||
1
tests/data/utfgrid/bio_utfgrid/1/2/1.json
Normal file
1
tests/data/utfgrid/bio_utfgrid/1/2/1.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"keys": [""], "data": {}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||||
1
tests/data/utfgrid/bio_utfgrid/1/2/2.json
Normal file
1
tests/data/utfgrid/bio_utfgrid/1/2/2.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"keys": [""], "data": {}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||||
1
tests/data/utfgrid/world_utfgrid/1/0/0.json
Normal file
1
tests/data/utfgrid/world_utfgrid/1/0/0.json
Normal file
File diff suppressed because one or more lines are too long
1
tests/data/utfgrid/world_utfgrid/1/0/1.json
Normal file
1
tests/data/utfgrid/world_utfgrid/1/0/1.json
Normal file
File diff suppressed because one or more lines are too long
1
tests/data/utfgrid/world_utfgrid/1/0/2.json
Normal file
1
tests/data/utfgrid/world_utfgrid/1/0/2.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"keys": [""], "data": {}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||||
1
tests/data/utfgrid/world_utfgrid/1/1/0.json
Normal file
1
tests/data/utfgrid/world_utfgrid/1/1/0.json
Normal file
File diff suppressed because one or more lines are too long
1
tests/data/utfgrid/world_utfgrid/1/1/1.json
Normal file
1
tests/data/utfgrid/world_utfgrid/1/1/1.json
Normal file
File diff suppressed because one or more lines are too long
1
tests/data/utfgrid/world_utfgrid/1/1/2.json
Normal file
1
tests/data/utfgrid/world_utfgrid/1/1/2.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"keys": [""], "data": {}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||||
1
tests/data/utfgrid/world_utfgrid/1/2/0.json
Normal file
1
tests/data/utfgrid/world_utfgrid/1/2/0.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"keys": [""], "data": {}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||||
1
tests/data/utfgrid/world_utfgrid/1/2/1.json
Normal file
1
tests/data/utfgrid/world_utfgrid/1/2/1.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"keys": [""], "data": {}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||||
1
tests/data/utfgrid/world_utfgrid/1/2/2.json
Normal file
1
tests/data/utfgrid/world_utfgrid/1/2/2.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"keys": [""], "data": {}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||||
@@ -219,6 +219,7 @@
|
|||||||
<li>Tile.html</li>
|
<li>Tile.html</li>
|
||||||
<li>Tile/Image.html</li>
|
<li>Tile/Image.html</li>
|
||||||
<li>Tile/Image/IFrame.html</li>
|
<li>Tile/Image/IFrame.html</li>
|
||||||
|
<li>Tile/UTFGrid.html</li>
|
||||||
<li>Tween.html</li>
|
<li>Tween.html</li>
|
||||||
<li>Kinetic.html</li>
|
<li>Kinetic.html</li>
|
||||||
<li>Util.html</li>
|
<li>Util.html</li>
|
||||||
|
|||||||
Reference in New Issue
Block a user