diff --git a/tests/Layer/Grid.html b/tests/Layer/Grid.html
index fd8afb6e9d..4a9b96b44e 100644
--- a/tests/Layer/Grid.html
+++ b/tests/Layer/Grid.html
@@ -21,13 +21,14 @@
function test_Layer_Grid_constructor (t) {
- t.plan( 5 );
+ t.plan( 6 );
layer = new OpenLayers.Layer.Grid(name, url, params, null);
t.ok( layer instanceof OpenLayers.Layer.Grid, "returns OpenLayers.Layer.Grid object" );
t.eq( layer.buffer, 0, "buffer default is 0");
t.eq( layer.ratio, 1.5, "ratio default is 1.5");
t.eq( layer.numLoadingTiles, 0, "numLoadingTiles starts at 0");
+ t.eq( layer.backBufferData, {}, "backBufferData set to empty object");
var obj = {};
var func = function() {};
@@ -586,7 +587,7 @@
function test_Layer_Grid_destroy (t) {
- t.plan( 8 );
+ t.plan( 9 );
var map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.Grid(name, url, params);
@@ -613,6 +614,7 @@
t.eq( layer.timerId, null, "Tile loading timeout cleared");
t.ok( layer.grid == null, "tiles appropriately destroyed")
+ t.eq( layer.backBufferData, null, "backBufferData set to null");
// destroy after remove from map
layer = new OpenLayers.Layer.WMS(name, url, params);
@@ -814,6 +816,131 @@
map.destroy();
}
+ function test_applyBackBuffer(t) {
+ t.plan(13);
+
+ var map = new OpenLayers.Map('map2');
+ var layer = new OpenLayers.Layer.WMS('', '', {}, {
+ isBaseLayer: true
+ });
+ map.addLayer(layer);
+ map.zoomToMaxExtent();
+
+ var backBuffer;
+
+ // test #1
+ layer.createBackBuffer = function() {
+ return;
+ };
+ layer.applyBackBuffer(2);
+ t.eq(layer.backBuffer, undefined,
+ 'back buffer not created if createBackBuffer returns undefined');
+
+ // test #2
+ layer.createBackBuffer = function() {
+ backBuffer = document.createElement('div');
+ return backBuffer;
+ };
+ layer.backBufferData = {resolution: 32, lonlat: map.getCenter()};
+ layer.applyBackBuffer(2);
+ t.ok(layer.backBuffer === backBuffer,
+ 'back buffer set in layer');
+ t.ok(layer.div.firstChild === backBuffer,
+ 'back buffer inserted as first child');
+ t.eq(layer.backBuffer.style.width, '1600%',
+ 'back buffer has correct width');
+ t.eq(layer.backBuffer.style.height, '1600%',
+ 'back buffer has correct height');
+ t.eq(layer.backBuffer.style.left, '250%',
+ 'back buffer has correct left');
+ t.eq(layer.backBuffer.style.top, '275%',
+ 'back buffer has correct top');
+
+ // test #3
+ layer.createBackBuffer = function() {
+ backBuffer = document.createElement('div');
+ return backBuffer;
+ };
+ layer.backBufferData = {resolution: 32, lonlat: map.getCenter()};
+ map.layerContainerDiv.style.left = '20px';
+ map.layerContainerDiv.style.top = '-20px';
+ layer.applyBackBuffer(2);
+ t.ok(layer.backBuffer === backBuffer,
+ 'back buffer set in layer');
+ t.ok(layer.div.firstChild === backBuffer,
+ 'back buffer inserted as first child');
+ t.eq(layer.backBuffer.style.width, '1600%',
+ 'back buffer has correct width');
+ t.eq(layer.backBuffer.style.height, '1600%',
+ 'back buffer has correct height');
+ t.eq(layer.backBuffer.style.left, '230%',
+ 'back buffer has correct left');
+ t.eq(layer.backBuffer.style.top, '295%',
+ 'back buffer has correct top');
+
+ map.destroy();
+ }
+
+ function test_createBackBuffer(t) {
+ t.plan(6);
+
+ var map = new OpenLayers.Map('map');
+ var layer = new OpenLayers.Layer.WMS('', '', {}, {
+ isBaseLayer: true
+ });
+ map.addLayer(layer);
+ map.zoomToMaxExtent();
+
+ var cloneMarkup = OpenLayers.Tile.Image.prototype.cloneMarkup;
+
+ var backBuffer;
+
+ OpenLayers.Tile.Image.prototype.cloneMarkup = function() {
+ return;
+ };
+ backBuffer = layer.createBackBuffer();
+ t.eq(backBuffer, undefined,
+ 'createBackBuffer returns undefined if cloneMarkup returns undefined');
+
+ OpenLayers.Tile.Image.prototype.cloneMarkup = function() {
+ return document.createElement('div');
+ };
+ backBuffer = layer.createBackBuffer();
+ t.ok(backBuffer != undefined,
+ 'createBackBuffer returns a back buffer');
+ t.eq(backBuffer.childNodes[0].style.left, '0%',
+ 'first tile has correct left');
+ t.eq(backBuffer.childNodes[0].style.top, '0%',
+ 'first tile has correct top');
+ t.eq(backBuffer.childNodes[1].style.left, '256%',
+ 'second tile has correct left');
+ t.eq(backBuffer.childNodes[1].style.top, '0%',
+ 'second tile has correct top');
+
+ map.destroy();
+ OpenLayers.Tile.Image.prototype.cloneMarkup = cloneMarkup;
+ }
+
+ function test_updateBackBufferData(t) {
+ t.plan(1);
+
+ var map = new OpenLayers.Map('map', {
+ resolutions: [32, 16]
+ });
+ var layer = new OpenLayers.Layer.WMS('', '', {}, {
+ isBaseLayer: true
+ });
+ map.addLayer(layer);
+ map.setCenter(new OpenLayers.LonLat(0, 0), 0);
+
+ layer.backBufferData = {};
+ layer.updateBackBufferData();
+ t.eq(layer.backBufferData.resolution, 32,
+ 'backBufferData has correct resolution');
+
+ map.destroy();
+ }
+