diff options
Diffstat (limited to 'misc/openlayers/tests/Layer/Bing.html')
-rw-r--r-- | misc/openlayers/tests/Layer/Bing.html | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/misc/openlayers/tests/Layer/Bing.html b/misc/openlayers/tests/Layer/Bing.html new file mode 100644 index 0000000..89bbba7 --- /dev/null +++ b/misc/openlayers/tests/Layer/Bing.html @@ -0,0 +1,200 @@ +<html> +<head> + <script src="../OLLoader.js"></script> + <script type="text/javascript"> + var map, layer; + + var layerType = 'Aerial'; + var key = "AqTGBsziZHIJYYxgivLBf0hVdrAk9mWO5cQcb8Yux8sW5M8c8opEC2lZqKR1ZZXf"; + + var options = { + type: layerType, + key: key + }; + + function test_constructor(t) { + t.plan(3); + + var origProcessMetadata = OpenLayers.Layer.Bing.processMetadata; + var log = []; + OpenLayers.Layer.Bing.processMetadata = function(metadata) { + var script = document.getElementById(this._callbackId); + log.push(script.src); + origProcessMetadata.apply(this, arguments); + }; + layer = new OpenLayers.Layer.Bing(OpenLayers.Util.extend({ + metadataParams: {foo: "bar"} + }, options)); + t.ok(layer instanceof OpenLayers.Layer.Bing, "returns OpenLayers.Layer.Bing object" ); + t.delay_call(5, function() { + t.eq(log.length, 1, "processMetadata called"); + t.eq(OpenLayers.Util.getParameters(log[0]).foo, "bar", "metadataParams passed to url correctly."); + OpenLayers.Layer.Bing.processMetadata = origProcessMetadata; + layer.destroy(); + }); + } + + function test_initLayer(t) { + t.plan(2); + + var meta = []; + var origProcessMetadata = OpenLayers.Layer.Bing.processMetadata; + OpenLayers.Layer.Bing.processMetadata = function(metadata) { + meta.push(metadata); + }; + map = new OpenLayers.Map("map"); + layer = new OpenLayers.Layer.Bing(options); + var extent; + map.addLayers([layer, new OpenLayers.Layer(null, { + moveTo: function(bounds, changed) { + extent = bounds; + } + })]); + map.zoomToMaxExtent(); + + var map2 = new OpenLayers.Map("map"); + var layer2 = new OpenLayers.Layer.Bing(OpenLayers.Util.extend({ + initLayer: function() { + // pretend we have a zoomMin of 2 + this.metadata.resourceSets[0].resources[0].zoomMin = 2; + OpenLayers.Layer.Bing.prototype.initLayer.apply(this, arguments); + } + }, options)); + var extent2; + map2.addLayers([layer2, new OpenLayers.Layer(null, { + moveTo: function(bounds, changed) { + extent2 = bounds; + } + })]); + map2.zoomToMaxExtent(); + + t.delay_call(5, function() { + origProcessMetadata.call(layer, meta[0]); + t.eq(extent.toBBOX(), map.getExtent().toBBOX(), "layer extent correct for base layer with zoomMin == 1."); + map.destroy(); + }); + + t.delay_call(6, function() { + origProcessMetadata.call(layer2, meta[1]); + t.eq(extent2.toBBOX(), map2.getExtent().toBBOX(), "layer extent correct for base layer with zoomMin == 2."); + map2.destroy(); + OpenLayers.Layer.Bing.processMetadata = origProcessMetadata; + }); + } + + function test_initLayer_notempty(t) { + t.plan(1); + + map = new OpenLayers.Map("map", { + projection: "EPSG:3857", + layers: [new OpenLayers.Layer("dummy", {isBaseLayer: true})] + }); + map.zoomToExtent([-14768652, 4492113, -12263964, 5744457]); + var layer = new OpenLayers.Layer.Bing(OpenLayers.Util.extend({ + isBaseLayer: false + }, options)); + map.addLayer(layer); + + t.delay_call(5, function() { + t.ok(layer.grid[0][0].url, "Tile not empty"); + map.destroy(); + }); + } + + function test_attribution(t) { + t.plan(3); + + var log = []; + var map = new OpenLayers.Map("map"); + layer = new OpenLayers.Layer.Bing(options); + map.addLayer(layer); + map.zoomToMaxExtent(); + + t.delay_call(2, function() { + t.ok(OpenLayers.Util.indexOf(layer.attribution, 'olBingAttribution aerial') !== -1, "Attribution has the correct css class"); + t.ok(OpenLayers.Util.indexOf(layer.attribution, '<img src="">') == -1, "Attribution contains a logo"); + t.ok(OpenLayers.Util.indexOf(layer.attribution, '</img></div></a><a style=') == -1 , "Attribution contains a copyright"); + map.destroy(); + }); + } + + function test_attribution_notempty(t) { + t.plan(1); + + var log = []; + var map = new OpenLayers.Map("map"); + layer = new OpenLayers.Layer.Bing(OpenLayers.Util.applyDefaults({type: 'Road'}, options)); + map.addLayer(layer); + var format = OpenLayers.String.format; + OpenLayers.String.format = function(tpl, options) { + log.push(options.copyrights); + } + map.zoomToExtent(new OpenLayers.Bounds(-14768652, 4492113, -12263964, 5744457)); + t.delay_call(2, function() { + t.ok(log.join("") !== "", "Copyright not empty"); + OpenLayers.String.format = format; + map.destroy(); + }); + } + + function test_getXYZ(t) { + t.plan(1); + + var map = new OpenLayers.Map("map", {allOverlays: true}); + var osm = new OpenLayers.Layer.OSM(); + map.addLayer(osm); + map.zoomToExtent(new OpenLayers.Bounds(11373579,-2445208,13628777,680760)); + layer = new OpenLayers.Layer.Bing(options); + map.addLayer(layer); + + t.delay_call(2, function() { + var xyz = layer.getXYZ(layer.getTileBounds(new OpenLayers.Pixel(1,1))); + t.eq(xyz.z, OpenLayers.Util.indexOf(layer.serverResolutions, map.getResolution()), "zoom level correct"); + }); + } + + function test_clone(t) { + t.plan(1); + + var clone; + + layer = new OpenLayers.Layer.Bing(options); + clone = layer.clone(); + t.ok(clone instanceof OpenLayers.Layer.Bing, "clone is a Layer.Bing instance"); + } + + function test_protocol(t) + { + t.plan(5); + + var map = new OpenLayers.Map("map"); + layer = new OpenLayers.Layer.Bing(options); + map.addLayer(layer); + map.zoomToMaxExtent(); + + t.delay_call(5, function() { + t.ok(OpenLayers.Util.indexOf(layer.attribution, '<img src="//') != -1, "Attribution contains a logo with protocol //"); + t.ok(OpenLayers.Util.indexOf(layer.attribution, '<img src="http://') == -1, "Attribution logo does not have http:// protocol"); + t.ok(layer.grid[1][1].url.indexOf('http:') == -1, "Tile url does not contain http:"); + + map.destroy(); + }); + + var map2 = new OpenLayers.Map("map"); + layer_https = new OpenLayers.Layer.Bing(OpenLayers.Util.applyDefaults({protocol: 'https:'}, options)); + map2.addLayer(layer_https); + map2.zoomToMaxExtent(); + + t.delay_call(5, function() { + t.ok(OpenLayers.Util.indexOf(layer_https.attribution, '<img src="https://') != -1, "Attribution logo has https:// protocol"); + t.ok(layer_https.grid[1][1].url.indexOf('https:') == 0, "Tile url contains https:"); + map2.destroy(); + }); + } + + </script> +</head> +<body> +<div id="map" style="width:500px;height:550px"></div> +</body> +</html> |