OpenLayers OpenLayers

root/branches/openlayers/2.5/tests/test_Map.html

Revision 4334, 25.3 kB (checked in by crschmidt, 1 year ago)

Add Attribution control to the map by default. (No visual affect if no
layers have 'attribution' set.)

  • Property svn:eol-style set to native
Line 
1 <html>
2 <head>
3   <script src="../lib/OpenLayers.js"></script>
4   <script type="text/javascript">
5
6     var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
7     var map;
8
9     function test_01_Map_constructor (t) {
10         t.plan( 10 );
11        
12         map = new OpenLayers.Map('map');
13         var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
14             "http://octo.metacarta.com/cgi-bin/mapserv?",
15             {map: "/mapdata/vmap_wms.map", layers: "basic"});
16         map.addLayer(baseLayer);
17
18         t.ok( map instanceof OpenLayers.Map, "new OpenLayers.Map returns object" );
19         if (!isMozilla) {
20             t.ok( true, "skipping element test outside of Mozilla");
21             t.ok( true, "skipping element test outside of Mozilla");
22             t.ok( true, "skipping element test outside of Mozilla");
23         } else {
24             t.ok( map.div instanceof HTMLDivElement, "map.div is an HTMLDivElement" );
25             t.ok( map.viewPortDiv instanceof HTMLDivElement, "map.viewPortDiv is an HTMLDivElement" );
26             t.ok( map.layerContainerDiv instanceof HTMLDivElement, "map.layerContainerDiv is an HTMLDivElement" );
27         }
28         t.ok( map.layers instanceof Array, "map.layers is an Array" );
29         t.ok( map.controls instanceof Array, "map.controls is an Array" );
30         t.eq( map.controls.length, 4, "Default map has 4 controls." );
31         t.ok( map.events instanceof OpenLayers.Events, "map.events is an OpenLayers.Events" );
32         t.ok( map.getMaxExtent() instanceof OpenLayers.Bounds, "map.maxExtent is an OpenLayers.Bounds" );
33         t.ok( map.getNumZoomLevels() > 0, "map has a default numZoomLevels" );
34     }
35
36     function test_02_Map_center(t) {
37         t.plan(3);
38         map = new OpenLayers.Map('map');
39         var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
40             "http://octo.metacarta.com/cgi-bin/mapserv?",
41             {map: "/mapdata/vmap_wms.map", layers: "basic"});
42         map.addLayer(baseLayer);
43         var ll = new OpenLayers.LonLat(2,1);
44         map.setCenter(ll, 0);
45         t.ok( map.getCenter() instanceof OpenLayers.LonLat, "map.getCenter returns a LonLat");
46         t.eq( map.getZoom(), 0, "map.zoom is correct after calling setCenter");
47         t.ok( map.getCenter().equals(ll), "map center is correct after calling setCenter");
48     }
49
50     function test_03_Map_add_layers(t) {
51         t.plan(6);
52         map = new OpenLayers.Map('map');
53         var layer1 = new OpenLayers.Layer.WMS("Layer 1",
54             "http://octo.metacarta.com/cgi-bin/mapserv?",
55             {map: "/mapdata/vmap_wms.map", layers: "basic"});
56         var layer2 = new OpenLayers.Layer.WMS("Layer 2",
57             "http://wms.jpl.nasa.gov/wms.cgi", {layers: "modis,global_mosaic"});
58         // this uses map.addLayer internally
59         map.addLayers([layer1, layer2])
60         t.eq( map.layers.length, 2, "map has exactly two layers" );
61         t.ok( map.layers[0] === layer1, "1st layer is layer1" );
62         t.ok( map.layers[1] === layer2, "2nd layer is layer2" );
63         t.ok( layer1.map === map, "layer.map is map" );
64         t.eq( parseInt(layer1.div.style.zIndex), map.Z_INDEX_BASE['BaseLayer'],
65                 "layer1 zIndex is set" );
66         t.eq( parseInt(layer2.div.style.zIndex), map.Z_INDEX_BASE['BaseLayer'] + 5,
67                 "layer2 zIndex is set" );
68     }
69
70     function test_04_Map_options(t) {
71         t.plan(3);
72         map = new OpenLayers.Map('map', {numZoomLevels: 6, maxResolution: 3.14159, theme: 'foo'});
73         t.eq( map.numZoomLevels, 6, "map.numZoomLevels set correctly via options hashtable" );
74         t.eq( map.maxResolution, 3.14159, "map.maxResolution set correctly via options hashtable" );
75         t.eq( map.theme, 'foo', "map theme set correctly." );
76     }
77
78     function test_05_Map_center(t) {
79         t.plan(4);
80         map = new OpenLayers.Map('map');
81         var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
82             "http://octo.metacarta.com/cgi-bin/mapserv?",
83             {map: "/mapdata/vmap_wms.map", layers: "basic"} );
84         map.addLayer(baseLayer);
85         var ll = new OpenLayers.LonLat(2,1);
86         map.setCenter(ll, 0);
87         map.zoomIn();
88         t.eq( map.getZoom(), 1, "map.zoom is correct after calling setCenter,zoom in");
89         t.ok( map.getCenter().equals(ll), "map center is correct after calling setCenter, zoom in");
90         map.zoomOut();
91         t.eq( map.getZoom(), 0, "map.zoom is correct after calling setCenter,zoom in, zoom out");
92
93         map.zoomTo(5);
94         t.eq( map.getZoom(), 5, "map.zoom is correct after calling zoomTo" );
95
96     /**
97         map.zoomToMaxExtent();
98         t.eq( map.getZoom(), 2, "map.zoom is correct after calling zoomToMaxExtent" );
99         var lonlat = map.getCenter();
100         var zero = new OpenLayers.LonLat(0, 0);
101         t.ok( lonlat.equals(zero), "map center is correct after calling zoomToFullExtent" );
102     */
103
104     }
105
106     function test_06_Map_zoomend_event (t) {
107         t.plan(2);
108
109         map = new OpenLayers.Map('map');
110         var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
111             "http://octo.metacarta.com/cgi-bin/mapserv?",
112             {map: "/mapdata/vmap_wms.map", layers: "basic"});
113         map.addLayer(baseLayer);
114         map.events.register("zoomend", {count: 0}, function() {
115             this.count++;
116             t.ok(true, "zoomend event was triggered " + this.count + " times");
117             });
118         map.setCenter(new OpenLayers.LonLat(2, 1), 0);
119         map.zoomIn();
120         map.zoomOut();
121     }
122
123     function test_07_Map_add_remove_popup (t) {
124         t.plan(4);
125
126         map = new OpenLayers.Map('map');
127         var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
128             "http://octo.metacarta.com/cgi-bin/mapserv?",
129             {map: "/mapdata/vmap_wms.map", layers: "basic"});
130         map.addLayer(baseLayer);
131        
132         var popup = new OpenLayers.Popup("chicken",
133                                          new OpenLayers.LonLat(0,0),
134                                          new OpenLayers.Size(200,200));
135         map.setCenter(new OpenLayers.LonLat(0, 0), 0);
136
137         map.addPopup(popup);
138         var pIndex = OpenLayers.Util.indexOf(map.popups, popup);
139         t.eq(pIndex, 0, "popup successfully added to Map's internal popups array");
140
141         var nodes = map.layerContainerDiv.childNodes;
142        
143         var found = false;
144         for (var i=0; i < nodes.length; i++) {
145             if (nodes.item(i) == popup.div) {
146                 found = true;
147                 break;
148             }
149         }
150         t.ok(found, "popup.div successfully added to the map's viewPort");
151
152        
153         map.removePopup(popup);
154         var pIndex = OpenLayers.Util.indexOf(map.popups, popup);
155         t.eq(pIndex, -1, "popup successfully removed from Map's internal popups array");
156
157         var found = false;
158         for (var i=0; i < nodes.length; i++) {
159             if (nodes.item(i) == popup.div) {
160                 found = true;
161                 break;
162             }
163         }
164         t.ok(!found, "popup.div successfully removed from the map's viewPort");
165     };
166
167 /***  THIS IS A GOOD TEST, BUT IT SHOULD BE MOVED TO WMS.
168  *     Also, it won't work until we figure out the viewSize bug
169
170     function 08_Map_px_lonlat_translation (t) {
171         t.plan( 6 );   
172         map = new OpenLayers.Map('map');
173         var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
174             "http://octo.metacarta.com/cgi-bin/mapserv?",
175             {map: "/mapdata/vmap_wms.map", layers: "basic"});
176         map.addLayer(baseLayer);
177         map.setCenter(new OpenLayers.LonLat(0, 0), 0);
178  
179         var pixel = new OpenLayers.Pixel(50,150);
180         var lonlat = map.getLonLatFromViewPortPx(pixel);
181         t.ok( lonlat instanceof OpenLayers.LonLat, "getLonLatFromViewPortPx returns valid OpenLayers.LonLat" );
182
183         var newPixel = map.getViewPortPxFromLonLat(lonlat);
184         t.ok( newPixel instanceof OpenLayers.Pixel, "getViewPortPxFromLonLat returns valid OpenLayers.Pixel" );
185
186         // WARNING!!!  I'm faily sure that the following test's validity
187         //             depends highly on rounding and the resolution. For now,
188         //             in the default case, it seems to work. This may not
189         //             always be so.
190         t.ok( newPixel.equals(pixel), "Translation to pixel and back to lonlat is consistent");
191
192         lonlat = map.getLonLatFromPixel(pixel);
193         t.ok( lonlat instanceof OpenLayers.LonLat, "getLonLatFromPixel returns valid OpenLayers.LonLat" );
194
195         newPixel = map.getPixelFromLonLat(lonlat);
196         t.ok( newPixel instanceof OpenLayers.Pixel, "getPixelFromLonLat returns valid OpenLayers.Pixel" );
197
198         t.ok( newPixel.equals(pixel), "2nd translation to pixel and back to lonlat is consistent");
199     }
200  */
201
202     function test_09_Map_isValidLonLat(t) {
203         t.plan( 3 );   
204
205         map = new OpenLayers.Map('map');
206         layer = new OpenLayers.Layer.WMS('Test Layer',
207                     "http://octo.metacarta.com/cgi-bin/mapserv",
208                     {map: '/mapdata/vmap_wms.map', layers: 'basic', format: 'image/jpeg'},
209                     {maxExtent: new OpenLayers.Bounds(33861, 717605, 330846, 1019656), maxResolution: 296985/1024, projection:"EPSG:2805" } );
210         map.addLayer(layer);
211        
212         t.ok( !map.isValidLonLat(null), "null lonlat is not valid" );
213         t.ok( map.isValidLonLat(new OpenLayers.LonLat(33862, 717606)), "lonlat outside max extent is valid" );
214         t.ok( !map.isValidLonLat(new OpenLayers.LonLat(10, 10)), "lonlat outside max extent is not valid" );
215     }
216
217     function test_10_Map_getLayer(t) {
218         t.plan( 2 );   
219
220         map = new OpenLayers.Map('map');
221         layer = new OpenLayers.Layer.WMS('Test Layer',
222                     "http://octo.metacarta.com/cgi-bin/mapserv",
223                     {map: '/mapdata/vmap_wms.map', layers: 'basic', format: 'image/jpeg'},
224                     {maxExtent: new OpenLayers.Bounds(33861, 717605, 330846, 1019656), maxResolution: 296985/1024, projection:"EPSG:2805" } );
225
226         map.addLayer(layer);
227         var gotLayer = map.getLayer(layer.id);
228
229         t.ok( layer == gotLayer, "getLayer correctly returns layer" );
230
231         gotLayer = map.getLayer("chicken");
232
233         t.ok( gotLayer == null, "getLayer correctly returns null when layer not found");
234     }
235
236     function test_11_Map_double_addLayer(t) {
237         t.plan( 1 );   
238
239         map = new OpenLayers.Map($('map'));
240         layer = new OpenLayers.Layer.WMS('Test Layer',
241                     "http://octo.metacarta.com/cgi-bin/mapserv",
242                     {map: '/mapdata/vmap_wms.map', layers: 'basic', format: 'image/jpeg'}
243                     );
244
245         map.addLayers([layer,layer]);
246        
247         t.eq( map.layers.length, 1, "Map does not allow double adding of layers." );
248    
249     }
250
251     function test_12_Map_setBaseLayer(t) {
252         t.plan( 4 );
253        
254         map = new OpenLayers.Map('map');
255
256         var wmslayer = new OpenLayers.Layer.WMS('Test Layer',
257                     "http://octo.metacarta.com/cgi-bin/mapserv",
258                     {map: '/mapdata/vmap_wms.map', layers: 'basic', format: 'image/jpeg'},
259                     {maxExtent: new OpenLayers.Bounds(33861, 717605, 330846, 1019656), maxResolution: 296985/1024, projection:"EPSG:2805" } );
260
261         var wmslayer2 = new OpenLayers.Layer.WMS('Test Layer2',
262                     "http://octo.metacarta.com/cgi-bin/mapserv",
263                     {map: '/mapdata/vmap_wms.map', layers: 'basic', format: 'image/jpeg'},
264                     {maxExtent: new OpenLayers.Bounds(33861, 717605, 330846, 1019656), maxResolution: 296985/1024, projection:"EPSG:2805" } );
265
266         map.addLayers([wmslayer, wmslayer2]);
267
268         t.ok(map.baseLayer == wmslayer, "default base layer is first one added");
269        
270         map.setBaseLayer(null);
271         t.ok(map.baseLayer == wmslayer, "setBaseLayer on null object does nothing (and does not break)");
272        
273         map.setBaseLayer("chicken");
274         t.ok(map.baseLayer == wmslayer, "setBaseLayer on non-layer object does nothing (and does not break)");
275        
276         map.setBaseLayer(wmslayer2);
277         t.ok(map.baseLayer == wmslayer2, "setbaselayer correctly sets 'baseLayer' property");
278     }
279
280     function test_13_Map_setBaseLayer_after_pan (t) {
281         t.plan(1);
282
283         map = new OpenLayers.Map('map');
284         var wmsLayer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
285             "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
286         var tmsLayer = new OpenLayers.Layer.TMS("TMS",
287                                     "http://labs.metacarta.com/wms-c/Basic.py/",
288                                     {'layername':'basic', 'type':'png'});
289         map.addLayers([wmsLayer,tmsLayer]);
290         map.setBaseLayer(wmsLayer);
291         map.zoomToMaxExtent();
292         map.setBaseLayer(tmsLayer);
293         map.zoomIn();
294         map.pan(0, -200);
295         map.setBaseLayer(wmsLayer);
296         t.eq(map.layerContainerDiv.style.top, "0px", "layerContainer is recentered after setBaseLayer");
297     }
298
299     function test_14_Map_moveLayer (t) {
300         t.plan(10);
301
302         var ct  = 0;
303         map = new OpenLayers.Map('map');
304         var wmslayer = new OpenLayers.Layer.WMS('Test Layer',
305                     "http://octo.metacarta.com/cgi-bin/mapserv",
306                     {map: '/mapdata/vmap_wms.map', layers: 'basic', format: 'image/jpeg'},
307                     {maxExtent: new OpenLayers.Bounds(33861, 717605, 330846, 1019656), maxResolution: 296985/1024, projection:"EPSG:2805" } );
308
309         var wmslayer2 = new OpenLayers.Layer.WMS('Test Layer2',
310                     "http://octo.metacarta.com/cgi-bin/mapserv",
311                     {map: '/mapdata/vmap_wms.map', layers: 'basic', format: 'image/jpeg'},
312                     {maxExtent: new OpenLayers.Bounds(33861, 717605, 330846, 1019656), maxResolution: 296985/1024, projection:"EPSG:2805" } );
313
314         var wmslayer3 = new OpenLayers.Layer.WMS('Test Layer2',
315                     "http://octo.metacarta.com/cgi-bin/mapserv",
316                     {map: '/mapdata/vmap_wms.map', layers: 'basic', format: 'image/jpeg'},
317                     {maxExtent: new OpenLayers.Bounds(33861, 717605, 330846, 1019656), maxResolution: 296985/1024, projection:"EPSG:2805" } );
318
319         map.addLayers([wmslayer, wmslayer2, wmslayer3]);
320         map.events.register("changelayer", map, function (e) { ct++; });
321         t.eq( map.getNumLayers(), 3, "getNumLayers returns the number of layers" );
322         t.eq( map.getLayerIndex(wmslayer3), 2, "getLayerIndex returns the right index" );
323         map.raiseLayer(wmslayer3, 1);
324         t.eq( map.getLayerIndex(wmslayer3), 2, "can't moveLayer up past the top of the stack" );
325         map.raiseLayer(wmslayer, -1);
326         t.eq( map.getLayerIndex(wmslayer), 0, "can't moveLayer down past the bottom of the stack" );
327         map.raiseLayer(wmslayer3, -1);
328         t.eq( map.getLayerIndex(wmslayer3), 1, "can moveLayer down from the top" );
329         t.eq( parseInt(wmslayer3.div.style.zIndex), map.Z_INDEX_BASE['BaseLayer'] + 5,
330             "layer div has the right zIndex after moving down" );
331         map.raiseLayer(wmslayer, 2);
332         t.eq( map.getLayerIndex(wmslayer), 2, "can moveLayer up from the bottom" );
333         t.eq( parseInt(wmslayer.div.style.zIndex), map.Z_INDEX_BASE['BaseLayer'] + 2 * 5,
334             "layer div has the right zIndex after moving up" );
335         t.eq( map.getLayerIndex(wmslayer3), 0, "top layer is now on the bottom" );
336         t.eq( ct, 3, "raiseLayer triggered changelayer the right # of times" );
337     }
338
339     function test_15_Map_setCenter(t) {
340         t.plan(1);
341
342         map = new OpenLayers.Map('map');
343         var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
344             "http://octo.metacarta.com/cgi-bin/mapserv?",
345             {map: "/mapdata/vmap_wms.map", layers: "basic"},
346             {maxResolution: 'auto', maxExtent: new OpenLayers.Bounds(-10,-10,10,10)});
347         map.addLayer(baseLayer);
348         var ll = new OpenLayers.LonLat(-100,-150);
349         map.setCenter(ll, 0);
350         t.ok(map.getCenter().equals(new OpenLayers.LonLat(0,0)), "safely sets out-of-bounds lonlat");
351     }
352
353     function test_16_Map_defaultTheme(t) {
354         t.plan(5);
355        
356         var links = document.getElementsByTagName('link');
357         map = new OpenLayers.Map('map');
358         var gotNodes = 0;
359         var themeNode = null;
360         for(var i=0; i<links.length; ++i) {
361             if(OpenLayers.Util.isEquivalentUrl(map.theme, links.item(i).href)) {
362                 gotNodes += 1;
363                 themeNode = links.item(i);
364             }
365         }
366         t.eq(gotNodes, 1, "by default, a single link node is added to document");
367         t.ok(themeNode != null, "a link node with the theme href was added");
368         t.eq(themeNode.rel, "stylesheet", "node added has rel set to stylesheet");
369         t.eq(themeNode.type, "text/css", "node added has type set to text/css");
370        
371         // reconstruct the map to prove that another link is not added
372         map = new OpenLayers.Map('map');
373         t.eq(links.length, document.getElementsByTagName('link').length,
374              "calling the map constructor twice with the same theme doesn't add duplicate link nodes");
375     }
376
377     function test_17_Map_customTheme(t) {
378         t.plan(5);
379        
380         var customTheme = 'foo';
381         var options = {theme: customTheme};
382         map = new OpenLayers.Map('map', options);
383
384         var links = document.getElementsByTagName('link');
385         var gotNodes = 0;
386         var themeNode = null;
387         for(var i=0; i<links.length; ++i) {
388             if(OpenLayers.Util.isEquivalentUrl(map.theme, links.item(i).href)) {
389                 gotNodes += 1;
390                 themeNode = links.item(i);
391             }
392         }
393        
394         t.eq(map.theme, customTheme, "map theme is properly set");
395         t.eq(gotNodes, 1, "with custom theme, a single link node is added to document");
396         t.ok(themeNode != null, "a link node with the theme href was added");
397         t.eq(themeNode.rel, "stylesheet", "node added has rel set to stylesheet");
398         t.eq(themeNode.type, "text/css", "node added has type set to text/css");
399     }
400
401     function test_18_Map_noTheme(t) {
402         t.plan(1);
403        
404         var head = document.getElementsByTagName('head')[0];
405         var nodeCount = head.childNodes.length;
406        
407         var options = {theme: null};
408         map = new OpenLayers.Map('map', options);
409
410         t.eq(nodeCount, head.childNodes.length, "with no theme, a node is not added to document head" );
411     }
412
413     function test_19_Map_getControl(t) {
414         t.plan(2);
415        
416         var map1 = new OpenLayers.Map('map');
417        
418         var control = new OpenLayers.Control();
419         map1.addControl(control);
420
421         var gotControl = map1.getControl(control.id);
422         t.ok(gotControl == control, "got right control");
423        
424         gotControl = map1.getControl("bogus id");
425         t.ok(gotControl == null, "getControl() for bad id returns null");
426     }
427
428     function test_19_Map_removeControl(t) {
429         t.plan(6);
430        
431         var oldNumControls, newNumControls;
432        
433         var map1 = new OpenLayers.Map('map');
434         oldNumControls = map1.controls.length;
435        
436         var control = new OpenLayers.Control();
437         map1.addControl(control);
438
439     //add control       
440         newNumControls = map1.controls.length;
441         t.ok( newNumControls = oldNumControls + 1, "adding a control increases control count")
442
443         var foundDiv = false;
444         for(var i=0; i < map1.viewPortDiv.childNodes.length; i++) {
445             var childNode = map1.viewPortDiv.childNodes[i];
446             if (childNode == control.div) {
447                 foundDiv = true;
448             }
449         }
450         t.ok(foundDiv, "new control's div correctly added to viewPort");
451
452     //remove control       
453         map1.removeControl(control)
454         newNumControls = map1.controls.length;
455         t.ok( newNumControls == oldNumControls, "removing the control decreases control count")
456
457         var gotControl = map1.getControl(control.id);
458         t.ok( gotControl == null, "control no longer in map's controls array");
459
460         var foundDiv = false;
461         for(var i=0; i < map1.viewPortDiv.childNodes.length; i++) {
462             var childNode = map1.viewPortDiv.childNodes[i];
463             if (childNode == control.div) {
464                 foundDiv = true;
465             }
466         }
467         t.ok(!foundDiv, "control no longer child of viewPort");
468
469     //remove bogus
470         control = { id: "bogus id" };
471         map1.removeControl(control);
472         newNumControls = map1.controls.length;
473         t.ok( newNumControls == oldNumControls, "removing bad controlid doesnt crash or decrease control count")
474     }
475
476     function test_Map_restrictedExtent(t) {
477         t.plan(24);
478         var extent = new OpenLayers.Bounds(-180, -90, 180, 90);
479         var options = {
480             maxResolution: "auto"
481         };
482         var map = new OpenLayers.Map("map", options);
483         var layer = new OpenLayers.Layer.WMS(
484             "test",
485             "http://octo.metacarta.com/cgi-bin/mapserv?",
486             {map: "/mapdata/vmap_wms.map", layers: "basic"}
487         );
488         map.addLayer(layer);
489         map.zoomToMaxExtent();
490         var nw = new OpenLayers.LonLat(extent.left, extent.top);
491         var ne = new OpenLayers.LonLat(extent.right, extent.top);
492         var sw = new OpenLayers.LonLat(extent.left, extent.bottom);
493         var se = new OpenLayers.LonLat(extent.right, extent.bottom);
494        
495         // try panning to northwest corner
496         map.setOptions({restrictedExtent: extent});
497         map.setCenter(nw, 0);
498         t.eq(map.getExtent().getCenterLonLat().toString(),
499              extent.getCenterLonLat().toString(),
500              "map extent properly restricted to northwest at zoom 0");
501         t.eq(map.zoom, 0, "zoom not restricted for nw, 0");
502         map.setCenter(nw, 5);
503         t.eq(map.getExtent().top, extent.top,
504              "map extent top properly restricted to northwest at zoom 5");
505         t.eq(map.getExtent().left, extent.left,
506              "map extent left properly restricted to northwest at zoom 5");
507         t.eq(map.zoom, 5, "zoom not restricted for nw, 5");
508         map.setOptions({restrictedExtent: null});
509         map.setCenter(nw, 0);
510         t.eq(map.getExtent().getCenterLonLat().toString(),
511              nw.toString(),
512              "map extent not restricted with null restrictedExtent for nw");
513
514         // try panning to northeast corner
515         map.setOptions({restrictedExtent: extent});
516         map.setCenter(ne, 0);
517         t.eq(map.getExtent().getCenterLonLat().toString(),
518              extent.getCenterLonLat().toString(),
519              "map extent properly restricted to northeast at zoom 0");
520         t.eq(map.zoom, 0, "zoom not restricted for ne, 0");
521         map.setCenter(ne, 5);
522         t.eq(map.getExtent().top, extent.top,
523              "map extent top properly restricted to northeast at zoom 5");
524         t.eq(map.getExtent().right, extent.right,
525              "map extent right properly restricted to northeast at zoom 5");
526         t.eq(map.zoom, 5, "zoom not restricted for ne, 5");
527         map.setOptions({restrictedExtent: null});
528         map.setCenter(ne, 0);
529         t.eq(map.getExtent().getCenterLonLat().toString(),
530              ne.toString(),
531              "map extent not restricted with null restrictedExtent for ne");
532        
533         // try panning to southwest corner
534         map.setOptions({restrictedExtent: extent});
535         map.setCenter(sw, 0);
536         t.eq(map.getExtent().getCenterLonLat().toString(),
537              extent.getCenterLonLat().toString(),
538              "map extent properly restricted to southwest at zoom 0");
539         t.eq(map.zoom, 0, "zoom not restricted for sw, 0");
540         map.setCenter(sw, 5);
541         t.eq(map.getExtent().bottom, extent.bottom,
542              "map extent bottom properly restricted to southwest at zoom 5");
543         t.eq(map.getExtent().left, extent.left,
544              "map extent left properly restricted to southwest at zoom 5");
545         t.eq(map.zoom, 5, "zoom not restricted for sw, 5");
546         map.setOptions({restrictedExtent: null});
547         map.setCenter(sw, 0);
548         t.eq(map.getExtent().getCenterLonLat().toString(),
549              sw.toString(),
550              "map extent not restricted with null restrictedExtent for sw");
551
552         // try panning to southeast corner
553         map.setOptions({restrictedExtent: extent});
554         map.setCenter(se, 0);
555         t.eq(map.getExtent().getCenterLonLat().toString(),
556              extent.getCenterLonLat().toString(),
557              "map extent properly restricted to southeast at zoom 0");
558         t.eq(map.zoom, 0, "zoom not restricted for se, 0");
559         map.setCenter(se, 5);
560         t.eq(map.getExtent().bottom, extent.bottom,
561              "map extent bottom properly restricted to southeast at zoom 5");
562         t.eq(map.getExtent().right, extent.right,
563              "map extent right properly restricted to southeast at zoom 5");
564         t.eq(map.zoom, 5, "zoom not restricted for se, 5");
565         map.setOptions({restrictedExtent: null});
566         map.setCenter(se, 0);
567         t.eq(map.getExtent().getCenterLonLat().toString(),
568              se.toString(),
569              "map extent not restricted with null restrictedExtent for se");
570     }
571
572     function test_99_Map_destroy (t) {
573         t.plan( 3 );   
574         map = new OpenLayers.Map('map');
575         map.destroy();
576         t.eq( map.layers, null, "map.layers is null after destroy" );
577         t.eq( map.controls, null, "map.controls is null after destroy" );
578         t.eq( map.viewPortDiv, null, "map's viewportDiv nullified");
579     }
580
581   </script>
582 </head>
583 <body>
584     <div id="map" style="width: 600px; height: 300px;"/>
585 </body>
586 </html>
Note: See TracBrowser for help on using the browser.