Pulling in patches for OL 2.11 RC3:
* ArcGISCache resolutions get compromised by some JS frameworks. (Closes #3474) * OpenLayers.Layer.HTTPRequest initialize simplification (Closes #3470) * missing requires (Closes #3467) * deleting a vertex does not update feature.modified (Closes #3463) * fixing test failure in some browsers (Closes #3461) * a grid layer may be moved while its grid hasn't been initialized yet (Closes #3458) -- this one is the actual release blocker * Change the callback function of Protocol.Script (JSONP) (Closes #3417) * "build.py -c closure" does not work on Windows systems. (Closes #3158) git-svn-id: http://svn.openlayers.org/branches/openlayers/2.11@12274 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -20,7 +20,15 @@
|
||||
|
||||
// check invalid date
|
||||
date = new Date("foo");
|
||||
str = OpenLayers.Date.toISOString(date);
|
||||
try {
|
||||
str = OpenLayers.Date.toISOString(date);
|
||||
} catch (err) {
|
||||
// some implementations throw RangeError
|
||||
// see https://bugzilla.mozilla.org/show_bug.cgi?id=649575
|
||||
if (err instanceof RangeError) {
|
||||
str = "Invalid Date";
|
||||
}
|
||||
}
|
||||
t.eq(str, "Invalid Date", "invalid date");
|
||||
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
}
|
||||
|
||||
function test_handleKeypress(t) {
|
||||
t.plan(14);
|
||||
t.plan(16);
|
||||
|
||||
/**
|
||||
* There are two things that we want to test here
|
||||
@@ -101,6 +101,8 @@
|
||||
// mock up vertex deletion
|
||||
control.dragControl.feature = point;
|
||||
control.feature = poly;
|
||||
// we cannot use selectFeature since the control is not part of a map
|
||||
control._originalGeometry = poly.geometry.clone();
|
||||
control.vertices = [point];
|
||||
point.geometry.parent = {
|
||||
removeComponent: function(geometry) {
|
||||
@@ -110,6 +112,7 @@
|
||||
};
|
||||
layer.events.on({
|
||||
"featuremodified": function(event) {
|
||||
t.ok(event.feature.modified !== null, "modified property of feature should have been set");
|
||||
t.eq(event.feature.id, poly.id, "vertex deletion: featuremodifed triggered");
|
||||
},
|
||||
"vertexremoved": function(evt) {
|
||||
|
||||
@@ -219,6 +219,32 @@
|
||||
t.ok((tile.x >= 0 && tile.y >= 0), 'layer should not generate negative tile ranges for level of detail');
|
||||
}
|
||||
|
||||
/*
|
||||
* Test that messing up the Array.prototype does not mess up the lods of the layer.
|
||||
* This messes up zooming when resolutions are very small/scales are very large/zoomed way in.
|
||||
*/
|
||||
function test_Layer_ARCGISCACHE_lods (t) {
|
||||
t.plan( 2 );
|
||||
var layerInfo = capabilitiesObject;
|
||||
|
||||
lods = layerInfo.tileInfo.lods.length;
|
||||
|
||||
// mess up the Array prototype
|
||||
Array.prototype.foo = function() { };
|
||||
|
||||
t.ok( lods == layerInfo.tileInfo.lods.length, 'proper number of "Levels of Detail" before initialization' );
|
||||
|
||||
// initialize the layer using the JSON object from an arcgis server
|
||||
// see: ArcGISCache.json
|
||||
var layer = new OpenLayers.Layer.ArcGISCache(name, url, {
|
||||
layerInfo: layerInfo
|
||||
});
|
||||
|
||||
t.ok( lods == layer.lods.length, 'proper number of "Levels of Detail" after initialization.' );
|
||||
// restore the Array prototype
|
||||
delete Array.prototype.foo;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
+50
-10
@@ -1790,36 +1790,76 @@
|
||||
}
|
||||
|
||||
function test_moveByPx(t) {
|
||||
t.plan(8);
|
||||
t.plan(16);
|
||||
|
||||
var moved;
|
||||
var Layer = OpenLayers.Class(OpenLayers.Layer, {
|
||||
moveByPx: function(dx, dy) {
|
||||
moved[this.name] = true;
|
||||
}
|
||||
});
|
||||
|
||||
var map = new OpenLayers.Map({
|
||||
div: 'map',
|
||||
maxExtent: new OpenLayers.Bounds(-50, -50, 50, 50),
|
||||
restrictedExtent: new OpenLayers.Bounds(-10, -10, 10, 10),
|
||||
layers: [
|
||||
new OpenLayers.Layer('name', {isBaseLayer: true})
|
||||
new Layer('base',
|
||||
{isBaseLayer: true}),
|
||||
new Layer('outofrange',
|
||||
{isBaseLayer: false, minResolution:2})
|
||||
]
|
||||
});
|
||||
|
||||
moved = {};
|
||||
map.zoomToExtent(new OpenLayers.Bounds(-1, -1, 1, 1));
|
||||
|
||||
// check initial state
|
||||
t.eq(map.layerContainerDiv.style.left, '0px', 'layer container left correct');
|
||||
t.eq(map.layerContainerDiv.style.top, '0px', 'layer container top correct');
|
||||
t.eq(map.layerContainerDiv.style.left, '0px',
|
||||
'[initial state] layer container left correct');
|
||||
t.eq(map.layerContainerDiv.style.top, '0px',
|
||||
'[initial state] layer container top correct');
|
||||
t.eq(moved['base'], undefined,
|
||||
'[initial state] base layer not moved');
|
||||
t.eq(moved['outofrange'], undefined,
|
||||
'[initial state] out-of-range layer not moved');
|
||||
|
||||
// move to a valid position
|
||||
moved = {};
|
||||
map.moveByPx(-455, 455);
|
||||
t.eq(map.layerContainerDiv.style.left, '455px', 'layer container left correct');
|
||||
t.eq(map.layerContainerDiv.style.top, '-455px', 'layer container top correct');
|
||||
t.eq(map.layerContainerDiv.style.left, '455px',
|
||||
'[valid position] layer container left correct');
|
||||
t.eq(map.layerContainerDiv.style.top, '-455px',
|
||||
'[valid position] layer container top correct');
|
||||
t.eq(moved['base'], true,
|
||||
'[valid position] base layer moved');
|
||||
t.eq(moved['outofrange'], undefined,
|
||||
'[valid position] out-of-range layer not moved');
|
||||
|
||||
// move outside the max extent
|
||||
moved = {};
|
||||
map.moveByPx(-4500, 4500);
|
||||
t.eq(map.layerContainerDiv.style.left, '455px', 'layer container left correct');
|
||||
t.eq(map.layerContainerDiv.style.top, '-455px', 'layer container top correct');
|
||||
t.eq(map.layerContainerDiv.style.left, '455px',
|
||||
'[outside max extent] layer container left correct');
|
||||
t.eq(map.layerContainerDiv.style.top, '-455px',
|
||||
'[outside max extent] layer container top correct');
|
||||
t.eq(moved['base'], undefined,
|
||||
'[outside max extent] base layer not moved');
|
||||
t.eq(moved['outofrange'], undefined,
|
||||
'[outside max extent] out-of-range layer not moved');
|
||||
|
||||
// move outside the restricted extent
|
||||
moved = {};
|
||||
map.moveByPx(-500, 500);
|
||||
t.eq(map.layerContainerDiv.style.left, '455px', 'layer container left correct');
|
||||
t.eq(map.layerContainerDiv.style.top, '-455px', 'layer container top correct');
|
||||
t.eq(map.layerContainerDiv.style.left, '455px',
|
||||
'[outside restricted extent] layer container left correct');
|
||||
t.eq(map.layerContainerDiv.style.top, '-455px',
|
||||
'[outside restricted extent] layer container top correct');
|
||||
t.eq(moved['base'], undefined,
|
||||
'[outside restricted extent] base layer not moved');
|
||||
t.eq(moved['outofrange'], undefined,
|
||||
'[outside restricted extent] out-of-range layer not moved');
|
||||
|
||||
|
||||
map.destroy();
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
|
||||
t.eq(script.type, 'text/javascript',
|
||||
'created script has a correct type');
|
||||
t.eq(script.src, 'http://bar_url/?k=bar_param&cb_key=cb_prefix%3AOpenLayers.Protocol.Script.getCallback(bar)',
|
||||
t.eq(script.src, 'http://bar_url/?k=bar_param&cb_key=cb_prefix%3AOpenLayers.Protocol.Script.registry%5Bbar%5D',
|
||||
'created script has a correct url');
|
||||
t.eq(script.id, 'OpenLayers_Protocol_Script_bar',
|
||||
'created script has a correct id');
|
||||
|
||||
Reference in New Issue
Block a user