diff options
Diffstat (limited to 'misc/openlayers/tests/Strategy/BBOX.html')
-rw-r--r-- | misc/openlayers/tests/Strategy/BBOX.html | 361 |
1 files changed, 0 insertions, 361 deletions
diff --git a/misc/openlayers/tests/Strategy/BBOX.html b/misc/openlayers/tests/Strategy/BBOX.html deleted file mode 100644 index 6e409e6..0000000 --- a/misc/openlayers/tests/Strategy/BBOX.html +++ /dev/null @@ -1,361 +0,0 @@ -<html> -<head> - <script src="../OLLoader.js"></script> - <script type="text/javascript"> - - function test_initialize(t) { - t.plan(1); - - var ratio = 4; - - var s = new OpenLayers.Strategy.BBOX({ratio: ratio}); - t.eq(s.ratio, ratio, "ctor sets ratio"); - } - - function test_activate(t) { - t.plan(5); - - var l = new OpenLayers.Layer.Vector(); - var s = new OpenLayers.Strategy.BBOX(); - s.setLayer(l); - - t.eq(s.active, false, "not active after construction"); - - var activated = s.activate(); - t.eq(activated, true, "activate returns true"); - t.eq(s.active, true, "activated after activate"); - t.ok(l.events.listeners["moveend"][0].obj == s && - l.events.listeners["moveend"][0].func == s.update, - "activates registers moveend listener"); - t.ok(l.events.listeners["refresh"][0].obj == s && - l.events.listeners["refresh"][0].func == s.update, - "activates registers refresh listener"); - } - - function test_update(t) { - t.plan(7); - - // Create a dummy layer that can act as the map base layer. - // This will be unnecessary if #1921 is addressed (allowing - // map to have different projection than base layer). - var dummy = new OpenLayers.Layer(null, {isBaseLayer: true}); - - var strategy = new OpenLayers.Strategy.BBOX({ - ratio: 1 // makes for easier comparison to map bounds - }); - var log = []; - var layer = new OpenLayers.Layer.Vector(null, { - isBaseLayer: true, - protocol: new OpenLayers.Protocol({abort: function(response) { log.push(response); }}), - strategies: [strategy] - }); - - // create a map with the layers and a center - var map = new OpenLayers.Map("map", {zoomMethod: null}); - map.addLayers([dummy, layer]); - map.zoomToMaxExtent(); - - /** - * The setCenter call above should set strategy bounds. I *think* this - * issue is captured in http://trac.openlayers.org/ticket/1835. - * For now, I'm going to force an update on the strategy. This line - * should be removed when the issue(s) described in #1835 are addressed. - */ - strategy.update({force: true}); - strategy.response = {}; - strategy.update({force: true}); - t.eq(log.length, 1, "Response aborted"); - log = []; - strategy.update({force: true}); - strategy.update({force: true, noAbort: true}); - t.eq(log.length, 0, "Response not aborted when noAbort is true"); - - // test that the strategy bounds were set - t.ok(map.getExtent().equals(strategy.bounds), "[set center] bounds set to map extent"); - - // zoom and test that bounds are not reset - var old = strategy.bounds.clone(); - map.zoomIn(); - t.ok(strategy.bounds.equals(old), "[zoom in] bounds not reset"); - - // force update and check that bounds change - strategy.update({force: true}); - t.ok(!strategy.bounds.equals(old), "[force update] bounds changed"); - t.ok(strategy.bounds.equals(map.getExtent()), "[force update] bounds set to map extent"); - - // change the layer projection to confirm strategy uses same - layer.projection = new OpenLayers.Projection("EPSG:900913"); - strategy.update({force: true}); - var from = map.getProjectionObject(); - var to = layer.projection; - - var strategyBounds = strategy.bounds, - mapExtent = map.getExtent().transform(from, to), - // we don't use bounds::toString because we might run into - // precision issues - precision = 7, - strategyBoundsGot = [ - strategyBounds.left.toFixed( precision ), - strategyBounds.bottom.toFixed( precision ), - strategyBounds.right.toFixed( precision ), - strategyBounds.top.toFixed( precision ) - ].join(','), - mapExtentExpected = [ - mapExtent.left.toFixed( precision ), - mapExtent.bottom.toFixed( precision ), - mapExtent.right.toFixed( precision ), - mapExtent.top.toFixed( precision ) - ].join(','); - t.eq(strategyBoundsGot, mapExtentExpected, - "[force update different proj] bounds transformed"); - } - - function test_events(t) { - - t.plan(7); - - var log = []; - - var response = new OpenLayers.Protocol.Response(); - - var map = new OpenLayers.Map("map"); - var layer = new OpenLayers.Layer.Vector(null, { - strategies: [new OpenLayers.Strategy.BBOX()], - protocol: new OpenLayers.Protocol({ - read: function(config) { - config.callback.call(config.scope, response); - } - }), - isBaseLayer: true, - eventListeners: { - loadstart: function(event) { - log.push(event); - }, - loadend: function(event) { - log.push(event); - } - } - }); - map.addLayer(layer); - map.zoomToMaxExtent(); - - t.eq(log.length, 2, "2 events logged"); - t.eq(log[0].type, "loadstart", "loadstart first"); - t.ok(log[0].filter.type === OpenLayers.Filter.Spatial.BBOX, "loadstart includes filter used"); - t.eq(log[1].type, "loadend", "loadend second"); - t.ok(log[1].response == response, "loadend includes response"); - - var calls = []; - layer.protocol.read = function(obj) { - calls.push(obj); - } - layer.refresh({force: true, whee: 'chicken'}); - - t.eq(calls.length, 1, "1 call to read"); - t.eq(calls[0].whee, "chicken", "properties passed to read"); - - map.destroy(); - - } - - function test_triggerRead(t) { - t.plan(4); - - var s = new OpenLayers.Strategy.BBOX(); - - var filter = {"fake": "filter"}; - - s.createFilter = function() { - return filter; - }; - s.response = {"fake": "response"}; - - var log = {}; - - var protocol = new OpenLayers.Protocol({ - read: function(options) { - log.options = options; - }, - abort: function(response) { - log.abort = response.fake; - } - }); - - var layer = new OpenLayers.Layer.Vector(null, { - strategies: [s], - protocol: protocol, - isBaseLayer: true - }); - var map = new OpenLayers.Map("map"); - map.addLayer(layer); - map.zoomToMaxExtent(); - - t.ok(log.options.filter == filter, - "protocol read called with correct filter"); - t.ok(log.options.callback == s.merge, - "protocol read called with correct callback"); - t.ok(log.options.scope == s, - "protocol read called with correct scope"); - t.eq(log.abort, "response", - "protocol abort called with correct response"); - - map.destroy(); - - } - - function test_resFactor(t) { - t.plan(2); - - var map = new OpenLayers.Map("map", {zoomMethod: null}); - var bbox = new OpenLayers.Strategy.BBOX(); - var fakeProtocol = new OpenLayers.Protocol({ - 'read': function() { - t.ok(true, "read called once without resfactor"); - } - }); - var layer = new OpenLayers.Layer.Vector("test", { - strategies: [bbox], - protocol: fakeProtocol, - isBaseLayer: true - }); - map.addLayer(layer); - map.setCenter(new OpenLayers.LonLat(0, 0), 0); - map.zoomIn(); - - fakeProtocol.read = function() { - t.ok("read called again on zooming with resFactor: 1"); - } - bbox.resFactor = 1; - map.zoomIn(); - - } - - function test_createFilter(t) { - t.plan(3); - - var s = new OpenLayers.Strategy.BBOX(); - - var f; - - // 2 test - s.setLayer({}); - f = s.createFilter(); - t.ok(f.CLASS_NAME.search(/^OpenLayers.Filter.Spatial/) != -1, - "createFilter returns a spatial filter object"); - t.eq(f.type, OpenLayers.Filter.Spatial.BBOX, - "createFilter returns a BBOX-typed filter"); - - // 1 test - s.setLayer({filter: {fake: "filter"}}); - f = s.createFilter(); - t.ok(f.CLASS_NAME.search(/^OpenLayers.Filter.Logical/) != -1, - "createFilter returns a logical filter object"); - } - - function test_merge(t) { - t.plan(4); - - var strategy = new OpenLayers.Strategy.BBOX(); - - // create map with default projection - var map = new OpenLayers.Map("map"); - - // create layer with custom projection - var layer = new OpenLayers.Layer.Vector(null, { - isBaseLayer: true, - strategies: [strategy], - protocol: new OpenLayers.Protocol(), - projection: new OpenLayers.Projection("EPSG:900913") - }); - map.addLayer(layer); - map.zoomToMaxExtent(); - - // create some features - var geometries = [ - new OpenLayers.Geometry.Point(100, 200), - new OpenLayers.Geometry.Point(1000, 2000) - ]; - var features = [ - new OpenLayers.Feature.Vector(geometries[0].clone()), - new OpenLayers.Feature.Vector(geometries[1].clone()) - ]; - - // call merge with a mocked up response - strategy.merge({features: features, success: OpenLayers.Function.True}); - - // test that feature geometries have been transformed to map projection - var from = layer.projection; - var to = map.getProjectionObject(); - t.geom_eq(layer.features[0].geometry, features[0].geometry.transform(from, to), "[different proj] feature 0 geometry transformed"); - t.geom_eq(layer.features[1].geometry, features[1].geometry.transform(from, to), "[different proj] feature 1 geometry transformed"); - - // same as above but with same map/layer projection - layer.destroyFeatures(); - layer.projection = map.getProjectionObject(); - - features = [ - new OpenLayers.Feature.Vector(geometries[0].clone()), - new OpenLayers.Feature.Vector(geometries[1].clone()) - ]; - - // call merge again with mocked up response - strategy.merge({features: features, success: OpenLayers.Function.True}); - - // test that feature geometries have not been transformed - t.geom_eq(layer.features[0].geometry, features[0].geometry, "[same proj] feature 0 geometry not transformed"); - t.geom_eq(layer.features[1].geometry, features[1].geometry, "[same proj] feature 1 geometry not transformed"); - - } - - // Test fix for Ticket #3142 - function test_layerLoadedAfterBeingAdded(t) { - t.plan(3); - - var dummy = new OpenLayers.Layer(null, {isBaseLayer: true}); - - var strategy = new OpenLayers.Strategy.BBOX({ - ratio: 1 // makes for easier comparison to map bounds - }); - var layer = new OpenLayers.Layer.Vector(null, { - protocol: new OpenLayers.Protocol(), - strategies: [strategy] - }); - - // Make sure to test the case of a vector layer needing to be - // reprojected while the map is not yet centered - var layerReproject = new OpenLayers.Layer.Vector(null, { - protocol: new OpenLayers.Protocol(), - strategies: [new OpenLayers.Strategy.BBOX()], - projection: 'EPSG:900913' - }); - - // Make sure that layers that are not in range don't request data - var layerOutOfRange = new OpenLayers.Layer.Vector(null, { - maxResolution: 1, - protocol: new OpenLayers.Protocol(), - strategies: [new OpenLayers.Strategy.BBOX()] - }); - - var map = new OpenLayers.Map("map"); - map.addLayer(dummy); - map.addLayer(layerReproject); - map.setCenter(new OpenLayers.LonLat(0, 0)); - map.addLayer(layer); - map.addLayer(layerOutOfRange); - // test that the strategy bounds were set - t.ok(map.getExtent().equals(strategy.bounds), "[set center] bounds set to map extent"); - t.eq(layerOutOfRange.strategies[0].bounds, null, "Data not requested if layer is out of range"); - - layerOutOfRange.setVisibility(false); - layerOutOfRange.setVisibility(true); - t.eq(layerOutOfRange.strategies[0].bounds, null, "Data not requested if layer is out of range when switching visibility"); - - map.destroy(); - } - - </script> -</head> -<body> - <div id="map" style="width: 400px; height: 200px" /> -</body> -</html> |