]> dev.renevier.net Git - syp.git/blob - openlayers/tests/Layer/WFS.html
initial commit
[syp.git] / openlayers / tests / Layer / WFS.html
1 <html>
2 <head>
3 <script src="../../lib/OpenLayers.js"></script>
4   <script type="text/javascript">
5
6     var name = "Vector Layer";
7     
8     function test_Layer_WFS_constructor(t) {
9         t.plan(3);
10
11         var layer = new OpenLayers.Layer.WFS(name, "url", {});
12         t.ok(layer instanceof OpenLayers.Layer.WFS, "new OpenLayers.Layer.Vector returns correct object" );
13         t.eq(layer.name, name, "layer name is correctly set");
14         t.ok(layer.renderer.CLASS_NAME, "layer has a renderer");
15
16     }
17     
18     function test_Layer_WFS_getDataExtent(t) {
19         t.plan(1);
20
21         var layer = new OpenLayers.Layer.WFS(name, "url", {});
22         layer.addFeatures(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(0, 0)));
23         layer.addFeatures(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(0, 1)));
24         t.eq(layer.getDataExtent().toBBOX(), "0,0,0,1", "bbox is correctly pulled from vectors.");
25
26     }
27     
28     function test_Layer_WFS_setOpacity(t) {
29         t.plan(3);
30
31         var layer = new OpenLayers.Layer.WFS(name, "url", {});
32         layer.setOpacity(.5);
33         t.eq(layer.opacity, 0.5, "vector setOpacity didn't fail");
34         var layer = new OpenLayers.Layer.WFS(name, "url", {}, {'featureClass': OpenLayers.Feature.WFS});
35         var marker = new OpenLayers.Marker(new OpenLayers.LonLat(0,0));
36         marker.setOpacity = function() {
37             t.ok(true, "Marker setOpacity was called");
38         }    
39         layer.addMarker(marker);
40         layer.setOpacity(.6);
41         t.eq(layer.opacity, 0.6, "setOpacity didn't fail on markers");
42     }
43     
44     function test_Layer_WFS_destroy(t) {
45         t.plan(13);
46         
47         var tVectorDestroy = OpenLayers.Layer.Vector.prototype.destroy;
48         OpenLayers.Layer.Vector.prototype.destroy = function() {
49             g_VectorDestroyed = true;
50         }
51
52         var tMarkersDestroy = OpenLayers.Layer.Markers.prototype.destroy;
53         OpenLayers.Layer.Markers.prototype.destroy = function() {
54             g_MarkersDestroyed = true;
55         }
56
57         var layer = {
58             'vectorMode': true,
59             'tile': {
60                 'destroy': function() {
61                     t.ok(true, "wfs layer's tile is destroyed");
62                 }
63             },
64             'ratio': {},
65             'featureClass': {},
66             'format': {},
67             'formatObject': {
68                 'destroy': function() {
69                     t.ok(true, "wfs layer's format object is destroyed");
70                 }
71             },
72             'formatOptions': {},
73             'encodeBBOX': {},
74             'extractAttributes': {}
75         };
76         
77         //this call should set off two tests (destroys for tile and format object)
78         g_VectorDestroyed = null;
79         g_MarkersDestroyed = null;        
80         OpenLayers.Layer.WFS.prototype.destroy.apply(layer, []);        
81
82         t.ok(g_VectorDestroyed && !g_MarkersDestroyed, "when vector mode is set to true, the default vector layer's destroy() method is called");
83         t.eq(layer.vectorMode, null, "'vectorMode' property nullified");
84         t.eq(layer.tile, null, "'tile' property nullified");
85         t.eq(layer.ratio, null, "'ratio' property nullified");
86         t.eq(layer.featureClass, null, "'featureClass' property nullified");
87         t.eq(layer.format, null, "'format' property nullified");
88         t.eq(layer.formatObject, null, "'formatObject' property nullified");
89         t.eq(layer.formatOptions, null, "'formatOptions' property nullified");
90         t.eq(layer.encodeBBOX, null, "'encodeBBOX' property nullified");
91         t.eq(layer.extractAttributes, null, "'extractAttributes' property nullified");
92
93         layer.vectorMode = false;
94
95         //this call will *not* set off two tests (tile and format object are null)
96         g_VectorDestroyed = null;
97         g_MarkersDestroyed = null;        
98         OpenLayers.Layer.WFS.prototype.destroy.apply(layer, []);        
99         t.ok(!g_VectorDestroyed && g_MarkersDestroyed, "when vector mode is set to false, the default markers layer's destroy() method is called");
100         
101         OpenLayers.Layer.Vector.prototype.destroy = tVectorDestroy;
102         OpenLayers.Layer.Markers.prototype.destroy = tMarkersDestroy;
103     }
104     
105     function test_Layer_WFS_mapresizevector(t) {
106         t.plan(2);
107
108         var map = new OpenLayers.Map("map");
109         map.addLayer(new OpenLayers.Layer.WMS("WMS", "url", {}));
110         var layer = new OpenLayers.Layer.WFS(name, "url", {});
111         t.ok(layer.renderer.CLASS_NAME, "layer has a renderer");
112         map.addLayer(layer);
113         setSize = false;
114         layer.renderer.setSize = function() { setSize = true; }
115         layer.onMapResize();
116         t.eq(setSize, true, "Renderer resize called on map size change.");
117         map.destroy();     
118
119     }
120     function test_Layer_WFS_drawmap(t) {
121         t.plan(2);
122         var map = new OpenLayers.Map('map');
123         layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
124             "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
125         map.addLayer(layer);
126
127         layer = new OpenLayers.Layer.WFS( "Owl Survey",
128             "http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?",
129             {typename: "OWLS", maxfeatures: 10},
130             { featureClass: OpenLayers.Feature.WFS});
131         map.addLayer(layer);
132         map.addControl(new OpenLayers.Control.LayerSwitcher());
133         try { 
134             map.setCenter(new OpenLayers.LonLat(-100, 60), 3);
135         } catch (Exception) {
136         }    
137         t.eq(layer.tile.url, "http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?typename=OWLS&maxfeatures=10&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&SRS=EPSG%3A4326&BBOX=-187.890625,-36.6796875,-12.109375,156.6796875", "Tile URL is set correctly when not encoded");
138         map.destroy();     
139         var map = new OpenLayers.Map('map');
140         layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
141             "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'}
142             );
143         map.addLayer(layer);
144
145         layer = new OpenLayers.Layer.WFS( "Owl Survey",
146             "http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?",
147             {typename: "OWLS", maxfeatures: 10},
148             { featureClass: OpenLayers.Feature.WFS, 'encodeBBOX': true});
149         map.addLayer(layer);
150         map.addControl(new OpenLayers.Control.LayerSwitcher());
151         try { 
152             map.setCenter(new OpenLayers.LonLat(-100, 60), 3);
153         } catch (Exception) {
154         }  
155         t.eq(layer.tile.url, "http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?typename=OWLS&maxfeatures=10&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&SRS=EPSG%3A4326&BBOX=-187.890625%2C-36.679687%2C-12.109375%2C156.679688", "Tile URL is set correctly when not encoded");
156         map.destroy();     
157     }
158     function test_projection_srs(t) {
159         t.plan(1);
160         var map = new OpenLayers.Map('map');
161         map.addLayer(new OpenLayers.Layer("",{isBaseLayer: true} ));
162         // we use an empty moveTo function because we don't want to request tiles
163         var layer = new OpenLayers.Layer.WFS("","",{},{'projection': new OpenLayers.Projection("EPSG:900913"),
164             moveTo: function() {}});
165         map.addLayer(layer);
166         map.zoomToMaxExtent();
167         var params = OpenLayers.Util.getParameters(layer.getFullRequestString());
168         t.eq(params.SRS, "EPSG:900913", "SRS represents projection of WFS layer, instead of map (#1537)");   
169     }
170
171
172   </script>
173 </head>
174 <body>
175 <div id="map" style="width:500px;height:550px"></div>
176 </body>
177 </html>