Tests for UTFGrid tiles.
This commit is contained in:
@@ -62,7 +62,7 @@ OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
|
||||
|
||||
/**
|
||||
* APIMethod: destroy
|
||||
* nullify references to prevent circular references and memory leaks
|
||||
* Clean up.
|
||||
*/
|
||||
destroy: function() {
|
||||
this.clear();
|
||||
@@ -82,6 +82,7 @@ OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
|
||||
var drawn = OpenLayers.Tile.prototype.draw.apply(this, arguments);
|
||||
if (drawn) {
|
||||
if (this.isLoading) {
|
||||
this.abortLoading();
|
||||
//if we're already loading, send 'reload' instead of 'loadstart'.
|
||||
this.events.triggerEvent("reload");
|
||||
} else {
|
||||
@@ -93,7 +94,7 @@ OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
|
||||
if (this.layer.useJSONP) {
|
||||
// Use JSONP method to avoid xbrowser policy
|
||||
var ols = new OpenLayers.Protocol.Script({
|
||||
url: this.url,
|
||||
url: this.url,
|
||||
callback: function(response) {
|
||||
this.isLoading = false;
|
||||
this.events.triggerEvent("loadend");
|
||||
@@ -102,9 +103,10 @@ OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
|
||||
scope: this
|
||||
});
|
||||
ols.read();
|
||||
this.request = ols;
|
||||
} else {
|
||||
// Use standard XHR
|
||||
OpenLayers.Request.GET({
|
||||
this.request = OpenLayers.Request.GET({
|
||||
url: this.url,
|
||||
callback: function(response) {
|
||||
this.isLoading = false;
|
||||
@@ -121,9 +123,21 @@ OpenLayers.Tile.UTFGrid = OpenLayers.Class(OpenLayers.Tile, {
|
||||
}
|
||||
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
|
||||
*
|
||||
* 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/Image.html</li>
|
||||
<li>Tile/Image/IFrame.html</li>
|
||||
<li>Tile/UTFGrid.html</li>
|
||||
<li>Tween.html</li>
|
||||
<li>Kinetic.html</li>
|
||||
<li>Util.html</li>
|
||||
|
||||
Reference in New Issue
Block a user