~mortenoh/+junk/dhis2-detailed-import-export

« back to all changes in this revision

Viewing changes to gis/dhis-gis-geostat/mfbase/openlayers/tests/Layer/WMS.html

  • Committer: larshelge at gmail
  • Date: 2009-03-03 16:46:36 UTC
  • Revision ID: larshelge@gmail.com-20090303164636-2sjlrquo7ib1gf7r
Initial check-in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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>