Updating and adding tests

This commit is contained in:
ahocevar
2012-12-14 17:28:05 +01:00
parent 3ab9a1f63b
commit 3d79001a92
3 changed files with 69 additions and 97 deletions
+8 -8
View File
@@ -45,8 +45,8 @@
}); });
var log = []; var log = [];
control.applyTransform = function(transform) { map.applyTransform = function(x, y, scale) {
log.push(transform); log.push([x, y, scale]);
} }
map.layerContainerOriginPx = { map.layerContainerOriginPx = {
@@ -58,12 +58,12 @@
}; };
var cases = [ var cases = [
{x: 100, y: 60, scale: 1, transform: "translate(0px, 10px) scale(1)"}, {x: 100, y: 60, scale: 1, transform: [-50, -40, 1]},
{x: 150, y: 60, scale: 1, transform: "translate(50px, 10px) scale(1)"}, {x: 150, y: 60, scale: 1, transform: [0, -40, 1]},
{x: 150, y: 60, scale: 2, transform: "translate(-100px, -90px) scale(2)"}, {x: 150, y: 60, scale: 2, transform: [-150, -140, 2]},
{x: 50, y: 20, scale: 2.5, transform: "translate(-275px, -180px) scale(2.5)"}, {x: 50, y: 20, scale: 2.5, transform: [-325, -230, 2.5]},
{x: 150, y: 60, scale: 2, transform: "translate(-100px, -90px) scale(2)"}, {x: 150, y: 60, scale: 2, transform: [-150, -140, 2]},
{x: 50, y: 20, scale: 0.25, transform: "translate(63px, 45px) scale(0.25)"} {x: 50, y: 20, scale: 0.25, transform: [13, -5, 0.25]}
]; ];
var len = cases.length; var len = cases.length;
+3 -73
View File
@@ -25,7 +25,7 @@
function test_constructor (t) { function test_constructor (t) {
t.plan( 8 ); t.plan( 7 );
layer = new OpenLayers.Layer.Grid(name, url, params, null); layer = new OpenLayers.Layer.Grid(name, url, params, null);
t.ok( layer instanceof OpenLayers.Layer.Grid, "returns OpenLayers.Layer.Grid object" ); t.ok( layer instanceof OpenLayers.Layer.Grid, "returns OpenLayers.Layer.Grid object" );
@@ -34,7 +34,6 @@
t.eq( layer.numLoadingTiles, 0, "numLoadingTiles starts at 0"); t.eq( layer.numLoadingTiles, 0, "numLoadingTiles starts at 0");
t.ok( layer.tileClass === OpenLayers.Tile.Image, "tileClass default is OpenLayers.Tile.Image"); t.ok( layer.tileClass === OpenLayers.Tile.Image, "tileClass default is OpenLayers.Tile.Image");
t.eq( layer.className, 'olLayerGrid', "className default is olLayerGrid"); t.eq( layer.className, 'olLayerGrid', "className default is olLayerGrid");
t.eq( layer.removeBackBufferDelay, 2500, "removeBackBufferDelay default is 2500");
var obj = {}; var obj = {};
var func = function() {}; var func = function() {};
@@ -1014,7 +1013,7 @@
} }
function test_applyBackBuffer(t) { function test_applyBackBuffer(t) {
t.plan(12); t.plan(9);
var map = new OpenLayers.Map('map2'); var map = new OpenLayers.Map('map2');
var layer = new OpenLayers.Layer.WMS('', '', {}, { var layer = new OpenLayers.Layer.WMS('', '', {}, {
@@ -1071,24 +1070,6 @@
t.eq(layer.backBuffer.style.top, '295px', t.eq(layer.backBuffer.style.top, '295px',
'back buffer has correct top'); 'back buffer has correct top');
// test #4
// and a back buffer in the layer and do as if back buffer removal
// has been scheduled, and test that applyBackBuffer removes the
// back buffer and clears the timer
layer.createBackBuffer = function() {
return;
};
backBuffer = document.createElement('div');
layer.div.insertBefore(backBuffer, layer.div.firstChild);
layer.backBuffer = backBuffer;
layer.backBufferTimerId = 'fake';
layer.applyBackBuffer(2);
t.ok(backBuffer.parentNode !== layer.div,
'back buffer is not child node of layer div');
t.eq(layer.backBuffer, null,
'back buffer not set in layer');
t.eq(layer.backBufferTimerId, null,
'back buffer timer cleared');
map.destroy(); map.destroy();
} }
@@ -1141,7 +1122,7 @@
} }
function test_removeBackBuffer(t) { function test_removeBackBuffer(t) {
t.plan(4); t.plan(3);
var map = new OpenLayers.Map('map'); var map = new OpenLayers.Map('map');
var layer = new OpenLayers.Layer.WMS('', '', {}, {isBaseLayer: true}); var layer = new OpenLayers.Layer.WMS('', '', {}, {isBaseLayer: true});
@@ -1153,17 +1134,12 @@
layer.div.appendChild(backBuffer); layer.div.appendChild(backBuffer);
layer.backBufferResolution = 32; layer.backBufferResolution = 32;
// add a fake back buffer removal timer
layer.backBufferTimerId = 'fake';
layer.removeBackBuffer(); layer.removeBackBuffer();
t.eq(layer.backBuffer, null, 'backBuffer set to null in layer'); t.eq(layer.backBuffer, null, 'backBuffer set to null in layer');
t.eq(layer.backBufferResolution, null, t.eq(layer.backBufferResolution, null,
'backBufferResolution set to null in layer'); 'backBufferResolution set to null in layer');
t.ok(backBuffer.parentNode !== layer.div, t.ok(backBuffer.parentNode !== layer.div,
'back buffer removed from layer'); 'back buffer removed from layer');
t.eq(layer.backBufferTimerId, null,
'backBufferTimerId set to null in layer');
map.destroy(); map.destroy();
} }
@@ -1307,52 +1283,6 @@
OpenLayers.Tile.Image.prototype.createBackBuffer = origCreateBackBuffer OpenLayers.Tile.Image.prototype.createBackBuffer = origCreateBackBuffer
} }
function test_delayed_back_buffer_removal(t) {
//
// Test that the delaying of the back buffer removal behaves
// as expected.
//
t.plan(5);
// set up
var map = new OpenLayers.Map('map', {
resolutions: [32, 16, 8, 4, 2, 1]
});
var layer = new OpenLayers.Layer.WMS('', '', {}, {
isBaseLayer: true,
transitionEffect: 'resize'
});
map.addLayer(layer);
map.setCenter(new OpenLayers.LonLat(0, 0), 0);
map.zoomTo(1);
// Mark one tile loaded, to see if back buffer removal gets scheduled.
layer.grid[1][1].onImageLoad();
t.ok(layer.backBuffer.parentNode === layer.div,
'[a] back buffer is a child of layer div');
t.ok(layer.backBufferTimerId !== null,
'[a] back buffer scheduled for removal');
var backBuffer = layer.backBuffer;
map.zoomTo(2);
t.ok(layer.backBuffer !== backBuffer,
'[b] a new back buffer was created');
t.ok(layer.backBuffer.parentNode === layer.div,
'[b] back buffer is a child of layer div');
t.ok(layer.backBufferTimerId === null,
'[b] back buffer no longer scheduled for removal');
// tear down
map.destroy();
}
function test_getGridData(t) { function test_getGridData(t) {
t.plan(12); t.plan(12);
+58 -16
View File
@@ -928,8 +928,13 @@
map.setBaseLayer(tmsLayer); map.setBaseLayer(tmsLayer);
map.zoomIn(); map.zoomIn();
map.pan(0, -200, {animate:false}); map.pan(0, -200, {animate:false});
var log = [];
map.applyTransform = function(x, y, scale) {
log.push([x || map.layerContainerOriginPx.x, y || map.layerContainerOriginPx.y, scale]);
OpenLayers.Map.prototype.applyTransform.apply(this, arguments);
};
map.setBaseLayer(wmsLayer); map.setBaseLayer(wmsLayer);
t.eq(map.layerContainerDiv.style.top, "0px", "layerContainer is recentered after setBaseLayer"); t.eq(log[0][0], 0, "layerContainer is recentered after setBaseLayer");
map.destroy(); map.destroy();
} }
@@ -1959,7 +1964,7 @@
} }
function test_moveByPx(t) { function test_moveByPx(t) {
t.plan(16); t.plan(14);
var moved; var moved;
var Layer = OpenLayers.Class(OpenLayers.Layer, { var Layer = OpenLayers.Class(OpenLayers.Layer, {
@@ -1979,14 +1984,19 @@
{isBaseLayer: false, minResolution:2}) {isBaseLayer: false, minResolution:2})
] ]
}); });
var log = [];
map.applyTransform = function(x, y, scale) {
log.push([x || map.layerContainerOriginPx.x, y || map.layerContainerOriginPx.y, scale]);
OpenLayers.Map.prototype.applyTransform.apply(this, arguments);
}
moved = {}; moved = {};
map.zoomToExtent(new OpenLayers.Bounds(-1, -1, 1, 1)); map.zoomToExtent(new OpenLayers.Bounds(-1, -1, 1, 1));
// check initial state // check initial state
t.eq(map.layerContainerDiv.style.left, '0px', t.eq(log[0][0], 0,
'[initial state] layer container left correct'); '[initial state] layer container left correct');
t.eq(map.layerContainerDiv.style.top, '0px', t.eq(log[0][1], 0,
'[initial state] layer container top correct'); '[initial state] layer container top correct');
t.eq(moved['base'], undefined, t.eq(moved['base'], undefined,
'[initial state] base layer not moved'); '[initial state] base layer not moved');
@@ -1996,9 +2006,9 @@
// move to a valid position // move to a valid position
moved = {}; moved = {};
map.moveByPx(-455, 455); map.moveByPx(-455, 455);
t.eq(map.layerContainerDiv.style.left, '455px', t.eq(log[1][0], 455,
'[valid position] layer container left correct'); '[valid position] layer container left correct');
t.eq(map.layerContainerDiv.style.top, '-455px', t.eq(log[1][1], -455,
'[valid position] layer container top correct'); '[valid position] layer container top correct');
t.eq(moved['base'], true, t.eq(moved['base'], true,
'[valid position] base layer moved'); '[valid position] base layer moved');
@@ -2008,10 +2018,8 @@
// move outside the max extent // move outside the max extent
moved = {}; moved = {};
map.moveByPx(-4500, 4500); map.moveByPx(-4500, 4500);
t.eq(map.layerContainerDiv.style.left, '455px', t.eq(log.length, 2,
'[outside max extent] layer container left correct'); '[outside max extent] layer container offset unchanged');
t.eq(map.layerContainerDiv.style.top, '-455px',
'[outside max extent] layer container top correct');
t.eq(moved['base'], undefined, t.eq(moved['base'], undefined,
'[outside max extent] base layer not moved'); '[outside max extent] base layer not moved');
t.eq(moved['outofrange'], undefined, t.eq(moved['outofrange'], undefined,
@@ -2020,10 +2028,8 @@
// move outside the restricted extent // move outside the restricted extent
moved = {}; moved = {};
map.moveByPx(-500, 500); map.moveByPx(-500, 500);
t.eq(map.layerContainerDiv.style.left, '455px', t.eq(log.length, 2,
'[outside restricted extent] layer container left correct'); '[outside restricted extent] layer container offset unchanged');
t.eq(map.layerContainerDiv.style.top, '-455px',
'[outside restricted extent] layer container top correct');
t.eq(moved['base'], undefined, t.eq(moved['base'], undefined,
'[outside restricted extent] base layer not moved'); '[outside restricted extent] base layer not moved');
t.eq(moved['outofrange'], undefined, t.eq(moved['outofrange'], undefined,
@@ -2047,9 +2053,45 @@
map.zoomToExtent(new OpenLayers.Bounds(-11.25, 0, 11.25, 11.25)); map.zoomToExtent(new OpenLayers.Bounds(-11.25, 0, 11.25, 11.25));
var log = [];
map.applyTransform = function(x, y, scale) {
log.push([x || map.layerContainerOriginPx.x, y || map.layerContainerOriginPx.y, scale]);
OpenLayers.Map.prototype.applyTransform.apply(this, arguments);
}
map.moveByPx(-10, -10); map.moveByPx(-10, -10);
t.eq(map.layerContainerDiv.style.left, '10px', 'layer container left correct'); t.eq(log[0][0], 10, 'layer container left correct');
t.eq(map.layerContainerDiv.style.top, '0px', 'layer container top correct'); t.eq(log[0][1], 0, 'layer container top correct');
}
function test_applyTransform(t) {
t.plan(4);
var map = new OpenLayers.Map('map');
map.layerContainerDiv = {style: {}};
delete map.applyTransform.transform;
delete map.applyTransform.template;
var origStylePrefix = OpenLayers.Util.vendorPrefix.style;
OpenLayers.Util.vendorPrefix.style = function(key) { return 'transform'; };
map.applyTransform(1, 2, 3);
OpenLayers.Util.vendorPrefix.style = origStylePrefix;
t.eq(map.layerContainerDiv.style.transform, 'translate3d(1px,2px,0) scale3d(3,3,1)', '3d transform and scale used when available');
delete map.applyTransform.template;
var origIndexOf = String.prototype.indexOf;
String.prototype.indexOf = function() { return -1; };
map.applyTransform(1, 2, 3);
String.prototype.indexOf = origIndexOf;
t.eq(map.layerContainerDiv.style.transform, 'translate(1px,2px) scale(3,3)', '2d translate and scale correct');
map.applyTransform.transform = null;
map.applyTransform(4, 5, 6);
t.eq(map.layerContainerDiv.style.left, '4px', 'style.left set when transform not available')
t.eq(map.layerContainerDiv.style.top, '5px', 'style.top set when transform not available')
map.destroy();
delete map.applyTransform.transform;
delete map.applyTransform.template;
} }
function test_options(t) { function test_options(t) {