OpenLayers OpenLayers

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

Revision 4795, 10.5 kB (checked in by crschmidt, 1 year ago)

Pullup fix for zooms to branch. (Closes #1043) 4791:4792

  • 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     var layer;
6
7     function test_01_Layer_constructor (t) {
8         t.plan( 13 );
9        
10         var options = { chicken: 151, foo: "bar", projection: "none" };
11         var layer = new OpenLayers.Layer('Test Layer', options);
12        
13         t.ok( layer instanceof OpenLayers.Layer, "new OpenLayers.Layer returns object" );
14         t.eq( layer.CLASS_NAME, "OpenLayers.Layer", "CLASS_NAME variable set correctly");
15
16         t.eq( layer.name, "Test Layer", "layer.name is correct" );
17         t.ok( layer.id != null, "Layer is given an id");
18         t.ok( layer.projection, "none", "default layer projection correctly set");
19         t.ok( ((layer.chicken == 151) && (layer.foo == "bar")), "layer.options correctly set to Layer Object" );
20         t.ok( ((layer.options["chicken"] == 151) && (layer.options["foo"] == "bar")), "layer.options correctly backed up" );
21
22         options.chicken = 552;
23        
24         t.eq( layer.options["chicken"], 151 , "layer.options correctly made fresh copy" );
25        
26         t.eq( layer.isBaseLayer, false, "Default layer is not base layer" );
27
28         layer = new OpenLayers.Layer('Test Layer');
29         t.ok( layer instanceof OpenLayers.Layer, "new OpenLayers.Layer returns object" );
30         t.eq( layer.name, "Test Layer", "layer.name is correct" );
31         t.ok( layer.projection == null, "default layer projection correctly set");
32         t.ok( layer.options instanceof Object, "layer.options correctly initialized as a non-null Object" );
33     }
34
35     function test_02_Layer_clone (t) {
36         t.plan( 8 );
37        
38         var mapone = new OpenLayers.Map('map');
39         var options = { chicken: 151, foo: "bar", maxResolution: "auto" };
40         var layer = new OpenLayers.Layer('Test Layer', options);
41         mapone.addLayer(layer);
42
43         // randomly assigned property
44         layer.chocolate = 5;
45
46         var clone = layer.clone();
47
48         t.ok( clone.map == null, "cloned layer has map property set to null")
49
50         var maptwo = new OpenLayers.Map('map2');
51         maptwo.addLayer(clone);
52
53         t.ok( clone instanceof OpenLayers.Layer, "new OpenLayers.Layer returns object" );
54         t.eq( clone.name, "Test Layer", "default clone.name is correct" );
55         t.ok( ((clone.options["chicken"] == 151) && (clone.options["foo"] == "bar")), "clone.options correctly set" );
56         t.eq(clone.chocolate, 5, "correctly copied randomly assigned property");
57
58         layer.addOptions({chicken:152});
59         t.eq(clone.options["chicken"], 151, "made a clean copy of options");       
60
61         t.ok( (layer.maxResolution != clone.maxResolution), "maxresolution of clone reset to new map div");
62         t.ok( (layer.minResolution != clone.minResolution), "minresolution of clone reset to new map div");
63        
64         mapone.destroy();
65         maptwo.destroy();
66     }
67
68     function test_03_Layer_setName (t) {
69        
70         t.plan( 1 );
71
72         layer = new OpenLayers.Layer('Test Layer');
73         layer.setName("chicken");
74        
75         t.eq(layer.name, "chicken", "setName() works")
76        
77     }
78
79     function test_04_Layer_addOptions (t) {
80        
81         t.plan( 4 );
82
83         var options = { chicken: 151, foo: "bar" };
84         var layer = new OpenLayers.Layer('Test Layer', options);
85
86         layer.addOptions({bark:55, chicken: 171});
87
88         t.eq(layer.bark, 55, "addOptions() assigns new option correctly to Layer");
89         t.eq(layer.options.bark, 55, "addOptions() adds new option correctly to backup");
90
91         t.eq(layer.chicken, 171, "addOptions() overwrites option correctly to Layer");
92         t.eq(layer.options.chicken, 171, "addOptions() overwrites option correctly to backup");
93
94     }
95    
96     function test_04_Layer_StandardOptionsAccessors (t) {
97
98         t.plan( 4 );
99
100         var projection = "chicken";
101         var maxExtent = new OpenLayers.Bounds(50,50,100,100);
102         var maxResolution = 1.5726;
103         var numZoomLevels = 11;
104
105         var options = { projection: projection,
106                         maxExtent: maxExtent,
107                         maxResolution: maxResolution,
108                         numZoomLevels: numZoomLevels
109                         };
110
111         var layer = new OpenLayers.Layer('Test Layer', options);
112
113         t.eq(layer.projection, projection, "projection set correctly");
114         t.ok(layer.maxExtent.equals(maxExtent), "maxExtent set correctly");
115         t.eq(layer.maxResolution, maxResolution, "maxResolution set correctly");
116         t.eq(layer.numZoomLevels, numZoomLevels, "numZoomLevels set correctly");
117     }
118
119     function test_05_Layer_visibility(t) {
120
121         t.plan(7);
122
123         var layer = new OpenLayers.Layer('Test Layer');
124    
125         t.eq(layer.getVisibility(), true, "default for layer creation is visible");
126        
127         layer.setVisibility(false);
128         t.eq(layer.getVisibility(), false, "setVisibility false works");
129
130         layer.setVisibility(true);
131         t.eq(layer.getVisibility(), true, "setVisibility true works");
132        
133         // Need a map in order to have moveTo called.
134         // Tests added for #654.
135         var layer = new OpenLayers.Layer.WMS('Test Layer','http://example.com');
136         var m = new OpenLayers.Map('map');
137         m.addLayer(layer);
138         m.zoomToMaxExtent();
139        
140         layermoved = false;
141         layer.moveTo = function() { layermoved = true; }
142        
143         layer.events.register('visibilitychanged', t, function() {
144             this.ok(true, "Visibility changed calls layer event.");
145         });   
146        
147         layer.setVisibility(false);
148         t.eq(layermoved, false, "Layer didn't move when calling setvis false");
149        
150         layer.setVisibility(true);
151         t.eq(layermoved, true, "Layer moved when calling setvis true.");
152    
153     }
154
155
156     function test_06_Layer_getZoomForResolution(t) {
157
158         t.plan(8);
159
160         var layer = new OpenLayers.Layer('Test Layer');
161            
162         //make some dummy resolutions
163         layer.resolutions = [128, 64, 32, 16, 8, 4, 2];
164        
165         t.eq(layer.getZoomForResolution(200), 0, "zoom all the way out");
166         t.eq(layer.getZoomForResolution(25), 2, "zoom in middle");
167         t.eq(layer.getZoomForResolution(3), 5, "zoom allmost all the way in");
168         t.eq(layer.getZoomForResolution(1), 6, "zoom  all the way in");
169
170         t.eq(layer.getZoomForResolution(65), 0, "smallest containing res");
171         t.eq(layer.getZoomForResolution(63), 1, "smallest containing res");
172
173         t.eq(layer.getZoomForResolution(65, true), 1, "closest res");
174         t.eq(layer.getZoomForResolution(63, true), 1, "closest res");
175
176     }
177    
178     function test_07_Layer_redraw(t) {
179         t.plan(8)
180
181         var name = 'Test Layer';
182         var url = "http://octo.metacarta.com/cgi-bin/mapserv";
183         var params = { map: '/mapdata/vmap_wms.map',
184                        layers: 'basic',
185                        format: 'image/jpeg'};
186
187         var layer = new OpenLayers.Layer.WMS(name, url, params);
188        
189         t.ok(!layer.redraw(),
190              "redraw on an orphan layer returns false");
191        
192         var map = new OpenLayers.Map('map');
193         map.addLayer(layer);
194
195         t.ok(!layer.redraw(),
196              "redraw returns false if map does not yet have a center");
197         map.zoomToMaxExtent();
198        
199         t.ok(layer.redraw(),
200              "redraw returns true after map has a center");
201        
202         layer.setVisibility(false);
203         t.ok(!layer.redraw(),
204              "redraw returns false if a layer is not visible");
205        
206         layer.setVisibility(true);
207         t.ok(layer.redraw(),
208                 "redraw returns true even if extent has not changed");
209        
210         layer.moveTo = function(bounds, zoomChanged, dragging) {
211             var extent = layer.map.getExtent();
212             t.ok(bounds.equals(extent),
213                  "redraw calls moveTo with the map extent");
214             t.ok(zoomChanged,
215                  "redraw calls moveTo with zoomChanged true");
216             t.ok(!dragging,
217                  "redraw calls moveTo with dragging false");
218         }
219         layer.redraw();
220        
221     }
222      
223      
224     function test_08_layer_setTileSize(t) {
225         t.plan(6);
226
227         layer = new OpenLayers.Layer();
228        
229         g_MapTileSize = new OpenLayers.Size(25,67);       
230         layer.map = {
231             getTileSize: function() {
232                 return g_MapTileSize;
233             }
234         };
235
236         var layerTileSize = new OpenLayers.Size(1,1);
237
238     //TILE SIZE
239         layer.tileSize = layerTileSize;
240      
241       //parameter
242         var size = new OpenLayers.Size(2,2);
243         layer.setTileSize(size);
244         t.ok(layer.tileSize.equals(size), "size paramater set correctly to layer's tile size");
245         t.ok(layer.imageOffset == null, "imageOffset and imageSize null when no gutters")
246      
247       //set on layer
248         layer.tileSize = layerTileSize;
249         layer.setTileSize();
250         t.ok(layer.tileSize.equals(layerTileSize), "layer's tileSize property preserved if no parameter sent in");
251      
252       //take it from map
253         layer.tileSize = null;
254         layer.setTileSize();
255         t.ok(layer.tileSize.equals(g_MapTileSize), "layer's tileSize property is null and so correctly taken from the map");
256        
257        
258
259     //GUTTERS
260         layer.gutter = 15;
261         size = new OpenLayers.Size(10,100);
262         layer.setTileSize(size);
263
264         var desiredImageOffset = new OpenLayers.Pixel(-15, -15);
265         var desiredImageSize = new OpenLayers.Size(40, 130);
266
267         t.ok(layer.imageOffset.equals(desiredImageOffset), "image offset correctly calculated");
268         t.ok(layer.imageSize.equals(desiredImageSize), "image size correctly calculated");
269     }
270
271
272
273 /******
274  *
275  *
276  * HERE IS WHERE SOME TESTS SHOULD BE PUT TO CHECK ON THE LONLAT-PX TRANSLATION
277  * FUNCTIONS AND RESOLUTION AND GETEXTENT GETZOOMLEVEL, ETC
278  *
279  *
280  */
281
282
283     function test_99_Layer_destroy (t) {
284         t.plan( 5 );   
285
286         var map = new OpenLayers.Map('map');
287        
288         layer = new OpenLayers.Layer('Test Layer');
289
290         map.addLayer(layer);
291
292         layer.destroy();
293
294         t.eq( layer.name, null, "layer.name is null after destroy" );
295         t.eq( layer.div, null, "layer.div is null after destroy" );
296         t.eq( layer.map, null, "layer.map is null after destroy" );
297         t.eq( layer.options, null, "layer.options is null after destroy" );
298
299         t.eq(map.layers.length, 0, "layer removed from map");
300        
301         map.destroy();
302
303     }
304
305   </script>
306 </head>
307 <body>
308   <div id="map" style="width:500px;height:500px"></div>
309   <div id="map2" style="width:100px;height:100px"></div>
310 </body>
311 </html>
Note: See TracBrowser for help on using the browser.