OpenLayers OpenLayers

root/trunk/openlayers/tests/Layer/WMS.html

Revision 6724, 15.6 kB (checked in by euzuro, 9 months ago)

fix up tests, remove _01_. (Closes #1387)

  • Property svn:eol-style set to native
Line 
1 <html>
2 <head>
3     <script type="text/javascript">var oldAlert = window.alert, gMess; window.alert = function(message) {gMess = message; return true;};</script>
4     <script src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhR_wWLPFku8Ix9i2SXYRVK3e45q1BQUd_beF8dtzKET_EteAjPdGDwqpQ'></script>
5     <script type="text/javascript">window.alert = oldAlert;</script>
6 <script src="../../lib/OpenLayers.js"></script>
7   <script type="text/javascript">
8     var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
9     var layer;
10
11     var name = 'Test Layer';
12     var url = "http://octo.metacarta.com/cgi-bin/mapserv";
13     var params = { map: '/mapdata/vmap_wms.map',
14                    layers: 'basic',
15                    format: 'image/jpeg'};
16
17     function test_Layer_WMS_constructor (t) {
18         t.plan( 13 );
19
20         var trans_format = "image/png";
21         if (OpenLayers.Util.alphaHack()) { trans_format = "image/gif"; }
22        
23         var url = "http://octo.metacarta.com/cgi-bin/mapserv";
24         layer = new OpenLayers.Layer.WMS(name, url, params);
25         t.ok( layer instanceof OpenLayers.Layer.WMS, "new OpenLayers.Layer.WMS returns object" );
26         t.eq( layer.url, "http://octo.metacarta.com/cgi-bin/mapserv", "layer.url is correct (HTTPRequest inited)" );
27         t.eq( layer.params.MAP, "/mapdata/vmap_wms.map", "params passed in correctly uppercased" );
28
29         t.eq( layer.params.SERVICE, "WMS", "default params correclty uppercased and copied");
30
31         t.eq(layer.isBaseLayer, true, "no transparency setting, wms is baselayer");
32
33         params.TRANSPARENT = "true";
34         var layer2 = new OpenLayers.Layer.WMS(name, url, params);
35         t.eq(layer2.isBaseLayer, false, "transparency == 'true', wms is not baselayer");
36
37         params.TRANSPARENT = "TRUE";
38         var layer3 = new OpenLayers.Layer.WMS(name, url, params);
39         t.eq(layer3.isBaseLayer, false, "transparency == 'TRUE', wms is not baselayer");
40         t.eq(layer3.params.FORMAT, trans_format, "transparent = TRUE causes non-image/jpeg format");
41
42         params.TRANSPARENT = "TRuE";
43         var layer4 = new OpenLayers.Layer.WMS(name, url, params);
44         t.eq(layer4.isBaseLayer, false, "transparency == 'TRuE', wms is not baselayer");
45         t.eq(layer4.params.FORMAT, trans_format, "transparent = TRuE causes non-image/jpeg format");
46
47         params.TRANSPARENT = true;
48         var layer5 = new OpenLayers.Layer.WMS(name, url, params);
49         t.eq(layer5.isBaseLayer, false, "transparency == true, wms is not baselayer");
50         t.eq(layer5.params.FORMAT, trans_format, "transparent = true causes non-image/jpeg format");
51
52         params.TRANSPARENT = false;
53         var layer6 = new OpenLayers.Layer.WMS(name, url, params);
54         t.eq(layer6.isBaseLayer, true, "transparency == false, wms is baselayer");
55     }
56    
57     function test_Layer_WMS_addtile (t) {
58         t.plan( 6 );
59    
60         var url = "http://octo.metacarta.com/cgi-bin/mapserv";
61         layer = new OpenLayers.Layer.WMS(name, url, params);
62         var map = new OpenLayers.Map('map');
63         map.addLayer(layer);
64         var pixel = new OpenLayers.Pixel(5,6);
65         var tile = layer.addTile(new OpenLayers.Bounds(1,2,3,4), pixel);
66         tile.draw();
67
68         var img = tile.imgDiv;
69         var tParams = OpenLayers.Util.extend({},
70                         OpenLayers.Util.upperCaseObject(params));
71         tParams = OpenLayers.Util.extend(tParams, {
72             SERVICE: "WMS", VERSION: "1.1.1",
73             REQUEST: "GetMap", STYLES: "",
74             EXCEPTIONS: "application/vnd.ogc.se_inimage",
75             SRS: "EPSG:4326", BBOX: [1,2,3,4],
76             WIDTH: "256", HEIGHT: "256"
77         });
78         t.eq( img.src,
79              url + "?" + OpenLayers.Util.getParameterString(tParams),
80              "image src is created correctly via addtile" );
81         t.eq( tile.frame.style.top, "6px", "image top is set correctly via addtile" );
82         t.eq( tile.frame.style.left, "5px", "image top is set correctly via addtile" );
83
84         var firstChild = layer.div.firstChild.firstChild;
85         if (!isMozilla)
86             t.ok( true, "skipping element test outside of Mozilla");
87         else
88             t.ok( firstChild instanceof HTMLElement, "div first child is an image object" );
89         t.eq( firstChild.src,
90              url + "?" + OpenLayers.Util.getParameterString(tParams),
91              "div first child is correct image object" );
92         t.eq( tile.position.toString(), "x=5,y=6", "Position of tile is set correctly." );
93         map.destroy();
94     }
95    
96     function test_Layer_WMS_bboxEncoding (t) {
97         t.plan( 6 );
98    
99         var url = "http://octo.metacarta.com/cgi-bin/mapserv";
100         layer = new OpenLayers.Layer.WMS(name, url, params, {encodeBBOX:true});
101         var map = new OpenLayers.Map('map');
102         map.addLayer(layer);
103         var pixel = new OpenLayers.Pixel(5,6);
104         var tile = layer.addTile(new OpenLayers.Bounds(1,2,3,4), pixel);
105         tile.draw();
106
107         var img = tile.imgDiv;
108         var tParams = OpenLayers.Util.extend({},
109                         OpenLayers.Util.upperCaseObject(params));
110         tParams = OpenLayers.Util.extend(tParams, {
111             SERVICE: "WMS", VERSION: "1.1.1",
112             REQUEST: "GetMap", STYLES: "",
113             EXCEPTIONS: "application/vnd.ogc.se_inimage",
114             SRS: "EPSG:4326", BBOX: "1,2,3,4",
115             WIDTH: "256", HEIGHT: "256"
116         });
117         t.eq( img.src,
118              url + "?" + OpenLayers.Util.getParameterString(tParams),
119              "image src is created correctly via addtile" );
120         t.eq( tile.frame.style.top, "6px", "image top is set correctly via addtile" );
121         t.eq( tile.frame.style.left, "5px", "image top is set correctly via addtile" );
122
123         var firstChild = layer.div.firstChild.firstChild;
124         if (!isMozilla)
125             t.ok( true, "skipping element test outside of Mozilla");
126         else
127             t.ok( firstChild instanceof HTMLElement, "div first child is an image object" );
128         t.eq( firstChild.src,
129              url + "?" + OpenLayers.Util.getParameterString(tParams),
130              "div first child is correct image object" );
131         t.eq( tile.position.toString(), "x=5,y=6", "Position of tile is set correctly." );
132         map.destroy();
133     }
134    
135     function test_Layer_WMS_inittiles (t) {
136         t.plan( 2 );
137         var map = new OpenLayers.Map('map');
138         layer = new OpenLayers.Layer.WMS(name, url, params);
139         map.addLayer(layer);
140         map.setCenter(new OpenLayers.LonLat(0,0),5);
141         t.eq( layer.grid.length, 7, "Grid rows is correct." );
142         t.eq( layer.grid[0].length, 6, "Grid cols is correct." );
143         map.destroy();
144     }
145
146
147     function test_Layer_WMS_clone (t) {
148         t.plan(4);
149        
150         var url = "http://octo.metacarta.com/cgi-bin/mapserv";
151         var options = {tileSize: new OpenLayers.Size(500,50)};
152         var map = new OpenLayers.Map('map', options);
153         layer = new OpenLayers.Layer.WMS(name, url, params);
154         map.addLayer(layer);
155
156         layer.grid = [ [6, 7],
157                        [8, 9]];
158
159         var clone = layer.clone();
160
161         t.ok( clone.grid != layer.grid, "clone does not copy grid");
162
163         t.ok( clone.tileSize.equals(layer.tileSize), "tileSize correctly cloned");
164
165         layer.tileSize.w += 40;
166
167         t.eq( clone.tileSize.w, 500, "changing layer.tileSize does not change clone.tileSize -- a fresh copy was made, not just copied reference");
168
169         t.eq( clone.alpha, layer.alpha, "alpha copied correctly");
170
171         layer.grid = null;
172         map.destroy();
173     }
174
175     function test_Layer_WMS_isBaseLayer(t) {
176         t.plan(3);
177        
178         var url = "http://octo.metacarta.com/cgi-bin/mapserv";
179         layer = new OpenLayers.Layer.WMS(name, url, params);
180         t.ok( layer.isBaseLayer, "baselayer is true by default");
181
182         var newParams = OpenLayers.Util.extend({}, params);
183         newParams.transparent = "true";
184         layer = new OpenLayers.Layer.WMS(name, url, newParams);
185         t.ok( !layer.isBaseLayer, "baselayer is false when transparent is set to true");
186
187         layer = new OpenLayers.Layer.WMS(name, url, params, {isBaseLayer: false});
188         t.ok( !layer.isBaseLayer, "baselayer is false when option is set to false" );
189     }
190
191     function test_Layer_WMS_mergeNewParams (t) {
192         t.plan( 4 );
193
194         var map = new OpenLayers.Map("map");
195         var url = "http://octo.metacarta.com/cgi-bin/mapserv";
196         layer = new OpenLayers.Layer.WMS(name, url, params);
197        
198         var newParams = { layers: 'sooper',
199                           chickpeas: 'image/png'};
200
201         map.addLayer(layer);
202         map.zoomToMaxExtent();
203
204         layer.redraw = function() {
205             t.ok(true, "layer is redrawn after new params merged");
206         }
207
208         layer.mergeNewParams(newParams);
209        
210         t.eq( layer.params.LAYERS, "sooper", "mergeNewParams() overwrites well");
211         t.eq( layer.params.CHICKPEAS, "image/png", "mergeNewParams() adds well");
212    
213         newParams.CHICKPEAS = 151;
214
215         t.eq( layer.params.CHICKPEAS, "image/png", "mergeNewParams() makes clean copy of hashtable");
216         map.destroy();
217     }
218
219     function test_Layer_WMS_getFullRequestString (t) {
220
221        
222         t.plan( 2 );
223         var map = new OpenLayers.Map('map');
224         map.projection = "xx";
225         tUrl = "http://octo.metacarta.com/cgi-bin/mapserv";
226         tParams = { layers: 'basic',
227                    format: 'image/png'};
228         var tLayer = new OpenLayers.Layer.WMS(name, tUrl, tParams);
229         map.addLayer(tLayer);
230         str = tLayer.getFullRequestString();
231         var tParams = {
232             LAYERS: "basic", FORMAT: "image/png", SERVICE: "WMS",
233             VERSION: "1.1.1", REQUEST: "GetMap", STYLES: "",
234             EXCEPTIONS: "application/vnd.ogc.se_inimage", SRS: "xx"
235         };
236         t.eq(str,
237              tUrl + "?" + OpenLayers.Util.getParameterString(tParams),
238              "getFullRequestString() adds SRS value");
239        
240         map.removeLayer(tLayer);
241         tLayer.projection = "none";
242         map.addLayer(tLayer);
243         str = tLayer.getFullRequestString();
244         delete tParams['SRS'];
245         t.eq(str,
246              tUrl + "?" + OpenLayers.Util.getParameterString(tParams),
247              "getFullRequestString() by default does *not* add SRS value if projection is 'none'");
248         map.destroy();
249  
250     }
251
252     function test_Layer_WMS_setOpacity (t) {
253         t.plan( 5 );
254
255         var map = new OpenLayers.Map('map');
256         map.projection = "xx";
257         tUrl = "http://octo.metacarta.com/cgi-bin/mapserv";
258         tParams = { layers: 'basic',
259                    format: 'image/png'};
260         tOptions = { 'opacity': '0.5' };           
261         var tLayer = new OpenLayers.Layer.WMS(name, tUrl, tParams, tOptions);
262         map.addLayer(tLayer);
263         map.zoomToMaxExtent();
264         t.eq(tLayer.opacity, "0.5", "Opacity is set correctly");
265         t.eq(parseFloat(tLayer.div.firstChild.firstChild.style.opacity), 0.5, "Opacity on tile is correct");
266         tLayer.setOpacity("0.6");
267         t.eq(tLayer.opacity, "0.6", "setOpacity works properly");
268         t.eq(parseFloat(tLayer.div.firstChild.firstChild.style.opacity), 0.6, "Opacity on tile is changed correctly");
269         var pixel = new OpenLayers.Pixel(5,6);
270         var tile = tLayer.addTile(new OpenLayers.Bounds(1,2,3,4), pixel);
271         tile.draw();
272         t.eq(parseFloat(tile.imgDiv.style.opacity), 0.6, "Tile opacity is set correctly");
273
274         map.destroy();
275     }   
276    
277     function test_Layer_WMS_Reproject (t) {
278         var validkey = (window.location.protocol == "file:") ||
279                        (window.location.host == "localhost") ||
280                        (window.location.host == "openlayers.org");
281         if (OpenLayers.Util.getBrowserName() == "opera" || OpenLayers.Util.getBrowserName() == "safari") {
282             t.plan(1);
283             t.debug_print("Can't test google reprojection in Opera or Safari.");
284         } else if(validkey) {
285             t.plan(5);
286
287             var map = new OpenLayers.Map('map');
288             var layer = new OpenLayers.Layer.Google("Google");
289             map.addLayer(layer);
290             var wmslayer = new OpenLayers.Layer.WMS(name, url, params,
291                                                     {isBaseLayer: false, reproject:true});
292             wmslayer.isBaseLayer=false;
293             map.addLayer(wmslayer);
294             map.setCenter(new OpenLayers.LonLat(0,0), 5);
295             var tile = wmslayer.grid[0][0];
296             t.eq( tile.bounds.left, -22.5, "left side matches" );
297             t.eq( tile.bounds.right, -11.25, "right side matches" );
298             t.eq( tile.bounds.bottom.toFixed(6), '11.178402', "bottom side matches" );
299             t.eq( tile.bounds.top.toFixed(6), '21.943046', "top side matches" );
300             map.destroy();
301         } else {
302             t.plan(1);
303             t.debug_print("can't test google layer from " +
304                           window.location.host);
305         }
306        
307         var map = new OpenLayers.Map('map');
308         layer = new OpenLayers.Layer.WMS(name, url, params);
309         map.addLayer(layer);
310         map.setCenter(new OpenLayers.LonLat(0,0), 5);
311         var tile = layer.grid[0][0];
312         t.ok( tile.bounds.equals(new OpenLayers.Bounds(-33.75, 33.75, -22.5, 45)), "okay");
313
314         map.destroy();
315     }
316    
317     function test_Layer_WMS_noGutters (t) {
318         t.plan(2);
319         var map = new OpenLayers.Map('map');
320         var layer = new OpenLayers.Layer.WMS("no gutter layer", url, params, {gutter: 0});
321         map.addLayer(layer);
322         map.setCenter(new OpenLayers.LonLat(0,0), 5);
323         var tile = layer.grid[0][0];
324         var request = layer.getURL(tile.bounds);
325         var args = OpenLayers.Util.getParameters(request);
326         t.eq(parseInt(args['WIDTH']),
327              tile.size.w,
328              "layer without gutter requests images that are as wide as the tile");
329         t.eq(parseInt(args['HEIGHT']),
330              tile.size.h,
331              "layer without gutter requests images that are as tall as the tile");
332        
333         layer.destroy();
334         map.destroy();
335     }
336
337     function test_Layer_WMS_gutters (t) {
338         t.plan(2);
339         var gutter = 15;
340         var map = new OpenLayers.Map('map');
341         var layer = new OpenLayers.Layer.WMS("gutter layer", url, params, {gutter: gutter});
342         map.addLayer(layer);
343         map.setCenter(new OpenLayers.LonLat(0,0), 5);
344         var tile = layer.grid[0][0];
345         var request = layer.getURL(tile.bounds);
346         var args = OpenLayers.Util.getParameters(request);
347         t.eq(parseInt(args['WIDTH']),
348              tile.size.w + (2 * gutter),
349              "layer with gutter requests images that are wider by twice the gutter");
350         t.eq(parseInt(args['HEIGHT']),
351              tile.size.h + (2 * gutter),
352              "layer with gutter requests images that are taller by twice the gutter");
353
354         layer.destroy();
355         map.destroy();
356
357     }
358
359     // DEPRECATED -- REMOVE IN 3.0
360     function test_Layer_Untiled_WMS(t) {
361         t.plan(1);
362        
363         var layer = new OpenLayers.Layer.WMS.Untiled();
364        
365         var clone = layer.clone();
366        
367         t.ok(clone.singleTile, "regression test: clone works. this is for #1013");
368     }
369    
370     function test_Layer_WMS_destroy (t) {
371
372         t.plan( 1 );
373
374         var map = new OpenLayers.Map('map');
375         layer = new OpenLayers.Layer.WMS(name, url, params);
376         map.addLayer(layer);
377
378         map.setCenter(new OpenLayers.LonLat(0,0), 5);
379
380         //grab a reference to one of the tiles
381         var tile = layer.grid[0][0];       
382
383         layer.destroy();
384        
385     // checks to make sure superclass (grid) destroy() was called   
386        
387         t.ok( layer.grid == null, "grid set to null");
388     }
389    
390
391   </script>
392 </head>
393 <body>
394 <div id="map" style="width:500px;height:550px"></div>
395 </body>
396 </html>
Note: See TracBrowser for help on using the browser.