diff options
Diffstat (limited to 'misc/openlayers/tests/Control/WMSGetFeatureInfo.html')
-rw-r--r-- | misc/openlayers/tests/Control/WMSGetFeatureInfo.html | 644 |
1 files changed, 0 insertions, 644 deletions
diff --git a/misc/openlayers/tests/Control/WMSGetFeatureInfo.html b/misc/openlayers/tests/Control/WMSGetFeatureInfo.html deleted file mode 100644 index b5e6d5d..0000000 --- a/misc/openlayers/tests/Control/WMSGetFeatureInfo.html +++ /dev/null @@ -1,644 +0,0 @@ -<html> -<head> - <script src="../OLLoader.js"></script> - <script type="text/javascript"> - - function test_initialize(t) { - t.plan(5); - - var options = { - url: 'http://localhost/wms', - layers: ["foo"], - formatOptions: { - foo: "bar" - } - }; - var control = new OpenLayers.Control.WMSGetFeatureInfo(options); - t.ok(control instanceof OpenLayers.Control.WMSGetFeatureInfo, - "new OpenLayers.Control.WMSGetFeatureInfo returns an instance"); - t.eq(control.url, 'http://localhost/wms', - "constructor sets url correctly"); - t.eq(control.layers, ["foo"], - "constructor layers" - ); - t.ok(control.format instanceof OpenLayers.Format.WMSGetFeatureInfo, "format created"); - t.eq(control.format.foo, "bar", "format options used") - } - - function test_clickCallBack_option(t) { - t.plan(9); - - var control; - - control = new OpenLayers.Control.WMSGetFeatureInfo({ - hover: true - }); - t.ok(control.handler instanceof OpenLayers.Handler.Hover, - 'constructor creates hover handler'); - t.ok(control.handler.callbacks["move"] === control.cancelHover, - 'constructor registers proper "move" callback in handler'); - t.ok(control.handler.callbacks["pause"] === control.getInfoForHover, - 'constructor registers proper "pause" callback in handler'); - - control = new OpenLayers.Control.WMSGetFeatureInfo(); - t.ok(control.handler instanceof OpenLayers.Handler.Click, - 'constructor creates click handler'); - t.ok(control.handler.callbacks["click"] === control.getInfoForClick, - 'constructor registers proper "click" callback in handler'); - - control = new OpenLayers.Control.WMSGetFeatureInfo({ - clickCallback: "rightclick" - }); - t.ok(control.handler.callbacks["rightclick"] === control.getInfoForClick, - 'constructor registers proper "rightclick" callback in handler'); - - control = new OpenLayers.Control.WMSGetFeatureInfo({ - clickCallback: "dblclick", - handlerOptions: { - click: { - "single": false, - "double": true - } - } - }); - t.ok(control.handler.callbacks["dblclick"] === control.getInfoForClick, - 'constructor registers proper "dblclick" callback in handler'); - t.eq(control.handler["single"], false, - 'constructor sets "single" to false in handler'); - t.eq(control.handler["double"], true, - 'constructor sets "double" to true in handler'); - } - - function test_destroy(t) { - t.plan(2); - var map = new OpenLayers.Map("map"); - var click = new OpenLayers.Control.WMSGetFeatureInfo({ - url: 'http://localhost/wms', - layers: ["foo"] - }); - - var hover = new OpenLayers.Control.WMSGetFeatureInfo({ - url: 'http://localhost/wms', - layers: ["foo"], - hover: true - }); - - click.handler.deactivate = function() { - t.ok(true, - "control.deactivate calls deactivate on click handler"); - }; - hover.handler.deactivate = function() { - t.ok(true, - "control.deactivate calls deactivate on hover handler"); - }; - click.destroy(); - hover.destroy(); - } - - function test_click(t) { - t.plan(4); - var map = new OpenLayers.Map('map'); - - // mock up active control - var control = new OpenLayers.Control.WMSGetFeatureInfo(); - map.addControl(control); - control.activate(); - - control.request = function(position) { - t.eq(position.x, 50, - "x position is as expected"); - t.eq(position.y, 50, - "y position is as expected"); - }; - - control.getInfoForClick({xy: {x: 50, y: 50}}); - control.getInfoForHover({xy: {x: 50, y: 50}}); - } - - function test_getfeatureinfo_event(t) { - - t.plan(5); - - var text = - '<?xml version="1.0" encoding="UTF-8" ?>' + - '<FeatureInfoResponse>' + - ' <FIELDS OBJECTID="1188" HECTARES="1819.734" ZONENR="5854" NULZONES=" " AREA="18197340.1426" PERIMETER="19177.4073627" SHAPE="NULL" SE_ANNO_CAD_DATA="NULL" SHAPE.AREA="0" SHAPE.LEN="0"/>' + - '</FeatureInfoResponse>'; - - var map = new OpenLayers.Map('map'); - - var xy; - var url = "http://foo"; - - // mock up a control with output "object" and drillDown true - var control = new OpenLayers.Control.WMSGetFeatureInfo({ - output: "object", - drillDown: true, - request: function(position) {}, - eventListeners: { - getfeatureinfo: function(evt) { - t.ok(evt.features[0].url === url, "features is an object with a property url when output is object"); - var features = evt.features[0].features; - t.ok(features.length === 1, "features properties has a length of 1"); - t.ok(features[0] instanceof OpenLayers.Feature.Vector, "Feature array contains 1 feature"); - } - } - }); - - // mock up a control with output "features" and drillDown true - var control2 = new OpenLayers.Control.WMSGetFeatureInfo({ - autoActivate: true, - drillDown: true, - request: function(position) {}, - eventListeners: { - getfeatureinfo: function(evt) { - var features = evt.features; - t.ok(features.length === 1, "features properties has a length of 1"); - t.ok(features[0] instanceof OpenLayers.Feature.Vector, "Feature array contains 1 feature"); - } - } - }); - - map.addControls([control, control2]); - control.activate(); - - xy = {x: 50, y: 50}; - control._requestCount = control2._requestCount = 0; - control._numRequests = control2._numRequests = 1; - control.handleResponse({xy: xy}, {responseText: text}, url); - control2.handleResponse({xy: xy}, {responseText: text}, url); - map.destroy(); - } - - function test_beforegetfeatureinfo_event(t) { - t.plan(2); - var map = new OpenLayers.Map('map'); - - var xy, mode; - - // mock up active control - var control = new OpenLayers.Control.WMSGetFeatureInfo({ - request: function(position) {}, - eventListeners: { - beforegetfeatureinfo: function(evt) { - t.eq(evt.xy, xy, - "beforegetfeatureinfo listener gets " + - "expected xy (" + mode + ")"); - } - } - }); - map.addControl(control); - control.activate(); - - // 1 test - mode = "click"; - xy = {x: 50, y: 50}; - control.getInfoForClick({xy: xy}); - - // 1 test - mode = "hover"; - xy = {x: 70, y: 70}; - control.getInfoForHover({xy: xy}); - } - - function test_nogetfeatureinfo_event(t) { - t.plan(1); - var map = new OpenLayers.Map('map'); - // mock up active control - var control = new OpenLayers.Control.WMSGetFeatureInfo({ - eventListeners: { - nogetfeatureinfo: function(evt) { - t.ok((evt.type == "nogetfeatureinfo"), "nogetfeatureinfo listener gets called when there are no queryable layers"); - } - } - }); - map.addControl(control); - control.activate(); - - // 1 test - mode = "click"; - xy = {x: 50, y: 50}; - control.getInfoForClick({xy: xy}); - } - - function test_activate(t) { - t.plan(4); - var map = new OpenLayers.Map("map"); - var click = new OpenLayers.Control.WMSGetFeatureInfo({ - url: 'http://localhost/wms', - featureType: 'type', - featureNS: 'http://localhost/ns', - layers: 'ns:type' - }); - var hover = new OpenLayers.Control.WMSGetFeatureInfo({ - url: 'http://localhost/wms', - featureType: 'type', - featureNS: 'http://localhost/ns', - layers: 'ns:type', - hover: true - }); - map.addControl(click); - map.addControl(hover); - t.ok(!click.handler.active, - "click handler is not active prior to activating control"); - t.ok(!hover.handler.active, - "hover handler is not active prior to activating control"); - click.activate(); - hover.activate(); - t.ok(click.handler.active, - "click handler is active after activating control"); - t.ok(hover.handler.active, - "hover handler is active after activating control"); - } - - function test_deactivate(t) { - t.plan(2); - var map = new OpenLayers.Map("map"); - var click = new OpenLayers.Control.WMSGetFeatureInfo({ - url: 'http://localhost/wms', - featureType: 'type', - featureNS: 'http://localhost/ns', - layers: 'ns:type' - }); - var hover = new OpenLayers.Control.WMSGetFeatureInfo({ - url: 'http://localhost/wms', - featureType: 'type', - featureNS: 'http://localhost/ns', - layers: 'ns:type' - }); - map.addControl(click); - map.addControl(hover); - click.activate(); - hover.activate(); - - click.handler.deactivate = function() { - t.ok(true, - "control.deactivate calls deactivate on click handler"); - OpenLayers.Handler.Click.prototype.deactivate.apply(this, arguments); - }; - hover.handler.deactivate = function() { - t.ok(true, - "control.deactivate calls deactivate on hover handler"); - OpenLayers.Handler.Hover.prototype.deactivate.apply(this, arguments); - }; - click.deactivate(); - hover.deactivate(); - } - - // Verify that things work all right when we combine different types for the STYLES and LAYERS - // params in the WMS Layers involved - function test_mixedParams(t) { - t.plan(5); - var map = new OpenLayers.Map("map", { - getExtent: function() {return(new OpenLayers.Bounds(-180,-90,180,90));} - }); - var geographic = new OpenLayers.Projection("EPSG:4326"); - - var a = new OpenLayers.Layer.WMS("dummy","http://localhost/wms", { - layers: "a,b,c,d", - styles: "a,b,c,d" - }, {projection: geographic}); - - var b = new OpenLayers.Layer.WMS("dummy","http://localhost/wms", { - layers: ["a","b","c","d"], - styles: ["a","b","c","d"] - }, {projection: geographic}); - - var c = new OpenLayers.Layer.WMS("dummy","http://localhost/wms", { - layers: ["a","b","c","d"] - }); - - var d = new OpenLayers.Layer.WMS("dummy","http://localhost/wms", { - layers: "a,b,c,d" - }, {projection: geographic}); - - var click = new OpenLayers.Control.WMSGetFeatureInfo({ - featureType: 'type', - featureNS: 'ns', - layers: [a, b, c, d] - }, {projection: geographic}); - - map.addControl(click); - - var log = {}; - var _request = OpenLayers.Request.GET; - OpenLayers.Request.GET = function(options) { - log.options = options; - }; - click.activate(); - click.getInfoForClick({xy: {x: 50.2, y: 50.1}}); - OpenLayers.Request.GET = _request; - - t.eq( - log.options && log.options.params.X, - 50, - "X should be an integer" - ); - - t.eq( - log.options && log.options.params.Y, - 50, - "Y should be an integer" - ); - - t.eq( - log.options && log.options.url, - "http://localhost/wms", - "url from first layer used" - ); - t.eq( - log.options && log.options.params.STYLES.join(","), - ",,,,,,,,a,b,c,d,a,b,c,d", - "Styles merged correctly" - ); - - t.eq( - log.options && log.options.params.FORMAT, - "image/jpeg", - "Required 'format' parameter included" - ); - - } - - function test_urlMatches(t) { - - t.plan(5); - - var control = new OpenLayers.Control.WMSGetFeatureInfo({ - url: "http://host/wms?one=1&two=2" - }); - - t.ok(!control.urlMatches("foo"), "doesn't match garbage"); - t.ok(control.urlMatches("http://host:80/wms?two=2&one=1"), "matches equivalent url"); - - // give the control more urls to match from - control.layerUrls = ["http://a.host/wms", "http://b.host/wms"]; - - t.ok(control.urlMatches("http://host:80/wms?two=2&one=1"), "still matches equivalent url"); - t.ok(control.urlMatches("http://a.host:80/wms"), "matches equivalent of first of layerUrls"); - t.ok(control.urlMatches("http://b.host:80/wms"), "matches equivalent of second of layerUrls"); - - } - - function test_layerUrls(t) { - - t.plan(4); - var map = new OpenLayers.Map({ - div: "map", - getExtent: function() { - return new OpenLayers.Bounds(-180,-90,180,90); - } - }); - - var a = new OpenLayers.Layer.WMS( - null, "http://a.mirror/wms", {layers: "a"} - ); - var b = new OpenLayers.Layer.WMS( - null, "http://b.mirror/wms", {layers: "b"} - ); - var c = new OpenLayers.Layer.WMS( - null, ["http://c.mirror/wms", "http://d.mirror/wms"], {layers: "c"} - ); - map.addLayers([a, b, c]); - - var control = new OpenLayers.Control.WMSGetFeatureInfo({ - url: "http://host/wms", - layers: [a, b, c] - }); - map.addControl(control); - control.activate(); - - // log calls to GET - var log; - var _request = OpenLayers.Request.GET; - OpenLayers.Request.GET = function(options) { - log.options = options; - }; - - // control url doesn't match layer urls, no request issued - log = {}; - control.getInfoForClick({xy: {x: 50, y: 50}}); - t.ok(!log.options, "no url match, no request issued"); - - // give control a list of urls to match - log = {}; - control.layerUrls = ["http://a.mirror/wms", "http://b.mirror/wms"]; - control.getInfoForClick({xy: {x: 50, y: 50}}); - t.eq(log.options && log.options.url, "http://host/wms", "some match, request issued"); - t.eq(log.options && log.options.params["QUERY_LAYERS"].join(","), "b,a", "selected layers queried"); - - // show that a layer can be matched if it has a urls array itself (first needs to be matched) - log = {}; - control.layerUrls = ["http://c.mirror/wms"]; - control.getInfoForClick({xy: {x: 50, y: 50}}); - t.eq(log.options && log.options.params["QUERY_LAYERS"].join(","), "c", "layer with urls array can be queried"); - - // clean up - OpenLayers.Request.GET = _request; - map.destroy(); - - } - - function test_hover(t) { - - t.plan(2); - - var map = new OpenLayers.Map({ - div: "map", - layers: [ - new OpenLayers.Layer.WMS(null, "/dummywms", {layers: "one"}) - ], - center: new OpenLayers.LonLat(0, 0), - zoom: 1 - }); - - var control = new OpenLayers.Control.WMSGetFeatureInfo({ - hover: true - }); - map.addControl(control); - control.activate(); - - // mock up a mousemove - control.getInfoForHover({xy: new OpenLayers.Pixel(10, 10)}); - t.ok(!!control.hoverRequest, "hoverRequest set"); - - // confirm that request is canceled on next move - var called = 0; - control.hoverRequest.abort = function() { - ++called; - }; - control.handler.px = null; - control.handler.mousemove({xy: new OpenLayers.Pixel(20, 20)}); - t.eq(called, 1, "hover request aborted"); - - map.destroy(); - - } - - function test_exceptions(t) { - t.plan(1); - var map = new OpenLayers.Map("map", { - getExtent: function() {return(new OpenLayers.Bounds(-180,-90,180,90));} - } - ); - - var a = new OpenLayers.Layer.WMS("dummy","http://myhost/wms", { - layers: "x", - exceptions: "text/xml" - }); - - map.addLayer(a); - - var click = new OpenLayers.Control.WMSGetFeatureInfo({ - }); - - map.addControl(click); - - var _request = OpenLayers.Request.GET; - OpenLayers.Request.GET = function(options) { - t.eq(options.params["EXCEPTIONS"], "text/xml", "Exceptions parameter taken from the WMS layer if provided"); - }; - click.activate(); - click.getInfoForClick({xy: {x: 50, y: 50}}); - OpenLayers.Request.GET = _request; - map.destroy(); - } - - function test_drillDown(t) { - t.plan(6); - var map = new OpenLayers.Map("map", { - getExtent: function() {return(new OpenLayers.Bounds(-180,-90,180,90));} - } - ); - - var a = new OpenLayers.Layer.WMS("dummy","http://localhost/wms", { - layers: "a" - }); - - var b = new OpenLayers.Layer.WMS("dummy","http://localhost/wms", { - layers: "c" - }); - - // this service does not support application/vnd.ogc.gml for GetFeatureInfo, only text/xml - var c = new OpenLayers.Layer.WMS("dummy","http://myhost/wms", { - layers: "x", - info_format: "text/xml" - }); - - map.addLayers([a, b, c]); - - var click = new OpenLayers.Control.WMSGetFeatureInfo({ - drillDown: true, - infoFormat: "application/vnd.ogc.gml" - }); - - map.addControl(click); - - var count = 0; - var _request = OpenLayers.Request.GET; - OpenLayers.Request.GET = function(options) { - count++; - if (count == 2) { - t.eq(options.params["INFO_FORMAT"], "application/vnd.ogc.gml", "Default info format of the control is used"); - t.eq(options.params["QUERY_LAYERS"].join(","), "c,a", "Layers should be grouped by service url"); - t.eq(options.url, "http://localhost/wms", "Correct url used for second request"); - } else if (count == 1) { - t.eq(options.params["INFO_FORMAT"], "text/xml", "Overridden info format is used instead of the control's infoFormat"); - t.eq(options.url, "http://myhost/wms", "Correct url used for first request"); - } - }; - click.activate(); - click.getInfoForClick({xy: {x: 50, y: 50}}); - OpenLayers.Request.GET = _request; - t.eq(count, 2, "We expect 2 requests to go off"); - map.destroy(); - } - - function test_GetFeatureInfo_buildWMSOptions(t) { - t.plan(3); - - var map = new OpenLayers.Map("map", { - getExtent: function() {return(new OpenLayers.Bounds(-180,-90,180,90));}, - projection: "EPSG:900913" - }); - var a = new OpenLayers.Layer.WMS("dummy", "http://localhost/wms", { - layers: "a" - }, {projection: "EPSG:3857"}); - var b = new OpenLayers.Layer.WMS("dummy", "http://localhost/wms", { - layers: "b" - }); - var c = new OpenLayers.Layer.WMS("dummy", "http://localhost/wms", { - layers: "c" - }, {projection: "EPSG:4326"}); - map.addLayers([a, b, c]); - var gfi = new OpenLayers.Control.WMSGetFeatureInfo(); - map.addControl(gfi); - gfi.activate(); - - var options = gfi.buildWMSOptions("http://localhost/wms", [a], {xy: {x: 50, y: 50}}, "text/html"); - t.eq(options.params.SRS, "EPSG:3857", "layer projection used if provided and equal map projection"); - - options = gfi.buildWMSOptions("http://localhost/wms", [b], {xy: {x: 50, y: 50}}, "text/html"); - t.eq(options.params.SRS, "EPSG:900913", "map projection used if layer has no projection configured"); - - options = gfi.buildWMSOptions("http://localhost/wms", [b], {xy: {x: 50, y: 50}}, "text/html"); - t.eq(options.params.SRS, "EPSG:900913", "map projection used if layer configured with an incompatible projection"); - } - - function test_GetFeatureInfo_WMS13(t) { - t.plan(4); - var map = new OpenLayers.Map("map", { - getExtent: function() {return(new OpenLayers.Bounds(-180,-90,180,90));} - } - ); - - var a = new OpenLayers.Layer.WMS(null, "http://localhost/wms", { - layers: "a", - version: "1.3.0" - }); - map.addLayer(a); - - var click = new OpenLayers.Control.WMSGetFeatureInfo({ - }); - - map.addControl(click); - var log = {}; - var _request = OpenLayers.Request.GET; - OpenLayers.Request.GET = function(options) { - log.options = options; - }; - click.activate(); - click.getInfoForClick({xy: {x: 50.1, y: 60.2}}); - OpenLayers.Request.GET = _request; - t.eq( - log.options && log.options.params.CRS, - "EPSG:4326", - "Since it is WMS 1.3 use CRS parameter instead of SRS in the GetFeatureInfo request" - ); - - t.eq( - log.options && log.options.params.I, - 50, - "Since it is WMS 1.3 use I parameter instead of X in the GetFeatureInfo request" - ); - - t.eq( - log.options && log.options.params.J, - 60, - "Since it is WMS 1.3 use J parameter instead of Y in the GetFeatureInfo request" - ); - - t.eq( - log.options && log.options.params.BBOX, - "-90,-180,90,180", - "Since it is WMS 1.3 the BBOX should respect axis order" - ); - - } - - </script> -</head> -<body> - <div id="map" style="width: 400px; height: 250px;"/> -</body> -</html> |