]> dev.renevier.net Git - syp.git/blob - openlayers/tests/Layer/Markers.html
err_lonlat_invalid exceptions not thrown correctly
[syp.git] / openlayers / tests / Layer / Markers.html
1 <html>
2 <head>
3   <script src="../../lib/OpenLayers.js"></script>
4   <script type="text/javascript">
5     var layer; 
6
7     function test_initialize(t) {
8         t.plan( 2 );
9         
10         layer = new OpenLayers.Layer.Markers('Test Layer');
11         t.ok( layer instanceof OpenLayers.Layer.Markers, "new OpenLayers.Layer.Markers returns object" );
12         t.eq( layer.name, "Test Layer", "layer.name is correct" );
13     }
14     function test_addlayer (t) {
15         t.plan( 3 );
16         
17         layer = new OpenLayers.Layer.Markers('Test Layer');
18         t.ok( layer instanceof OpenLayers.Layer.Markers, "new OpenLayers.Layer.Markers returns object" );
19         t.eq( layer.name, "Test Layer", "layer.name is correct" );
20         layer.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0), 
21                                               new OpenLayers.Icon())
22                        );
23         t.eq( layer.markers.length, 1, "addLayer adds marker to layer." );
24     }
25     function test_addMarker_removeMarker (t) {
26         t.plan( 6 );
27
28         var map = new OpenLayers.Map('map');
29         var baseLayer = new OpenLayers.Layer.WMS("Test Layer", 
30             "http://octo.metacarta.com/cgi-bin/mapserv?",
31             {map: "/mapdata/vmap_wms.map", layers: "basic"});
32         map.addLayer(baseLayer);
33         map.zoomToMaxExtent();
34         layer = new OpenLayers.Layer.Markers('Test Layer');
35         map.addLayer(layer);
36         var marker = new OpenLayers.Marker(new OpenLayers.LonLat(5,40));
37         layer.addMarker(marker);
38         t.ok(  marker.icon.imageDiv.parentNode == layer.div, "addMarker adds marker image node into layer node." ); 
39         layer.removeMarker(marker);
40         t.ok(  marker.icon.imageDiv.parentNode != layer.div, "removeMarker removes marker image node from layer node." ); 
41         layer.removeMarker(marker);
42         t.ok(true, "Removing marker twice does not fail.");
43         layer.addMarker(marker);
44         t.ok(  marker.icon.imageDiv.parentNode == layer.div, "addMarker adds marker image node into layer node." ); 
45
46         layer.markers = null;
47         layer.removeMarker(marker);
48         t.ok(true, "removing marker when no markers present does not script error");
49
50         var l = new OpenLayers.Layer.Markers();
51         var marker = new OpenLayers.Marker(new OpenLayers.LonLat(5,40));
52         l.addMarker(marker);
53         l.removeMarker(marker);
54         t.ok(true, "Removing marker when layer not added to map does not fail.");
55
56     }
57     
58     function test_markerMovement(t) {
59         
60         t.plan(6);
61         
62         var map = new OpenLayers.Map("map");
63         var layer = new OpenLayers.Layer.Markers("Base", {isBaseLayer: true});
64         map.addLayer(layer);
65         map.setCenter(new OpenLayers.LonLat(0, 0), 1);
66         
67         var size = new OpenLayers.Size(10, 10);
68         var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
69         var icon = new OpenLayers.Icon("foo", size, offset);
70         var marker = new OpenLayers.Marker(new OpenLayers.LonLat(10, -10), icon)
71         layer.addMarker(marker);
72         
73         t.eq(marker.icon.px.x, 554, "marker icon is placed at 554 px on x-axis");
74         t.eq(marker.icon.px.y, 314, "marker icon is placed at 314 px on y-axis");
75         
76         map.zoomTo(2);
77         
78         t.eq(marker.icon.px.x, 568, "marker icon moved to 568 px on x-axis");
79         t.eq(marker.icon.px.y, 328, "marker icon moved to 328 px on y-axis");
80         
81         map.zoomTo(1);
82
83         t.eq(marker.icon.px.x, 554, "marker icon moved back to 554 px on x-axis");
84         t.eq(marker.icon.px.y, 314, "marker icon moved back to 314 px on y-axis");
85         
86     }
87     
88     function test_destroy (t) {
89         t.plan( 1 );    
90         layer = new OpenLayers.Layer.Markers('Test Layer');
91         var map = new OpenLayers.Map('map');
92         map.addLayer(layer);
93         layer.destroy();
94         t.eq( layer.map, null, "layer.map is null after destroy" );
95     }
96
97     function test_getDataExtent(t) {
98         t.plan( 4 );
99
100         var layer = {};
101         var ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
102         t.eq(ret, null, "does not crash, returns null on layer with null 'this.markers'");
103
104         layer.markers = [];
105         ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
106         t.eq(ret, null, "returns null on layer with empty 'this.markers'");
107         
108         layer.markers.push({
109             'lonlat': new OpenLayers.LonLat(4,5)
110         });
111         var expectedBounds = new OpenLayers.Bounds(4,5,4,5);
112         ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
113         t.ok(ret.equals(expectedBounds), "returns expected bounds with only one marker");
114
115         layer.markers.push({
116             'lonlat': new OpenLayers.LonLat(1,2)
117         });
118         var expectedBounds = new OpenLayers.Bounds(1,2,4,5);
119         ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
120         t.ok(ret.equals(expectedBounds), "returns expected bounds with multiple markers");
121
122     }
123
124     function test_setOpacity(t) {
125         t.plan(1);
126
127         layer = new OpenLayers.Layer.Markers('Test Layer');
128
129         var opacity = 0.1234;
130         
131         for (var i = 0; i < 12; i++) {
132             layer.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0), new OpenLayers.Icon()));
133         }
134
135         layer.setOpacity(opacity);
136
137         for (var i = 0; i < 4; i++) {
138             layer.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0), new OpenLayers.Icon()));
139         }
140         
141         var itWorks = false;
142         for (var i = 0; i < layer.markers.length; i++) {
143             itWorks = parseFloat(layer.markers[i].icon.imageDiv.style.opacity) == opacity;
144             if (!itWorks) {
145                 break;
146             }
147         }
148         t.ok(itWorks, "setOpacity change markers opacity");
149     }
150
151   </script>
152 </head>
153 <body>
154   <div id="map" style="width: 1080px; height: 600px;"/>
155 </body>
156 </html>