]> dev.renevier.net Git - syp.git/blob - openlayers/tests/Control/GetFeature.html
initial commit
[syp.git] / openlayers / tests / Control / GetFeature.html
1 <html>
2 <head>
3     <script src="../../lib/OpenLayers.js"></script>
4     <script type="text/javascript">
5     function test_Control_GetFeature_constructor(t) {
6         t.plan(2);
7         var protocol = "foo";
8         var control = new OpenLayers.Control.GetFeature({
9             protocol: protocol
10         });
11         t.ok(control instanceof OpenLayers.Control.GetFeature,
12              "new OpenLayers.Control.SelectFeature returns an instance");
13         t.eq(control.protocol, "foo",
14              "constructor sets protocol correctly");        
15     }
16     
17     function test_Control_GetFeature_select(t) {
18         t.plan(3);
19         var map = new OpenLayers.Map("map");
20         var layer = new OpenLayers.Layer.WMS("foo", "wms", {
21             layers: "foo"
22         });
23         map.addLayer(layer);
24         map.setCenter(new OpenLayers.LonLat(1,2));
25         var feature1 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,2));
26         var feature2 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(2,3));
27         var control = new OpenLayers.Control.GetFeature({
28             protocol: new OpenLayers.Protocol({
29                 read: function(obj) {
30                     obj.callback.call(obj.scope, {
31                         features: [feature1, feature2],
32                         code: 1
33                     });
34                 }
35             }),
36             box: true
37         });
38         map.addControl(control);
39
40         var singleTest = function(evt) {
41             t.eq(evt.feature.id, feature1.id, "featureselected callback called with closest feature");
42         }
43         control.events.register("featureselected", this, singleTest);
44         control.selectSingle({xy: new OpenLayers.Pixel(200, 125)});
45         control.events.unregister("featureselected", this, singleTest);
46         
47         var features = []
48         var boxTest = function(evt) {
49             features.push(evt.feature);
50         }
51         control.events.register("featureselected", this, boxTest);
52         control.selectBox(new OpenLayers.Bounds(0,0,4,4));
53         control.events.unregister("featureselected", this, boxTest);
54         t.eq(features.length, 2, "2 features inside box selected");
55         t.eq(features[1].id, feature2.id, "featureselected callback called with multiple features");
56     }
57     
58     function test_Control_GetFeature_hover(t) {
59         t.plan(6);
60         var abortedResponse = null;
61         var map = new OpenLayers.Map("map");
62         var layer = new OpenLayers.Layer.WMS("foo", "wms", {
63             layers: "foo"
64         });
65         map.addLayer(layer);
66         map.setCenter(new OpenLayers.LonLat(1,2));
67         var feature1 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,2));
68         var feature2 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(2,3));
69         var response = new OpenLayers.Protocol.Response();
70         var control = new OpenLayers.Control.GetFeature({
71             protocol: new OpenLayers.Protocol({
72                 read: function(obj){
73                     obj.callback.call(obj.scope, {
74                         features: [feature1, feature2],
75                         code: 1
76                     });
77                     return response;
78                 },
79                 abort: function(response) {
80                     abortedResponse = response;
81                 }
82             }),
83             hover: true
84         });
85         map.addControl(control);
86
87         var hoverFeature;
88         var hoverTest = function(evt) {
89             t.eq(evt.feature.id, hoverFeature.id, "hoverfeature callback called with closest feature");
90         }
91         var outTest = function(evt) {
92             t.eq(evt.feature.id, feature1.id, "outfeature callback called with previously hovered feature");
93         }
94         control.events.register("hoverfeature", this, hoverTest);
95         control.events.register("outfeature", this, outTest);
96         hoverFeature = feature1;
97         control.selectHover({xy: new OpenLayers.Pixel(200, 125)});
98         t.ok(control.hoverResponse == response,
99              "selectHover stores the protocol response in the hoverResponse property");
100
101         hoverFeature = feature2;
102         control.selectHover({xy: new OpenLayers.Pixel(400, 0)});
103         control.cancelHover();
104         t.ok(abortedResponse == response,
105              "cancelHover calls protocol.abort() with the expected response");
106         t.eq(control.hoverResponse, null,
107              "cancelHover sets this.hoverResponse to null");
108
109         control.events.unregister("hoverfeature", this, hoverTest);
110         control.events.unregister("outfeature", this, outTest);
111     }
112     
113     </script>
114 </head>
115 <body>
116     <div id="map" style="width: 400px; height: 250px;"/>
117 </body>
118 </html>