]> dev.renevier.net Git - syp.git/blob - openlayers/tests/Control/KeyboardDefaults.html
initial commit
[syp.git] / openlayers / tests / Control / KeyboardDefaults.html
1 <html>
2 <head>
3   <script src="../../lib/OpenLayers.js"></script>
4   <script type="text/javascript">
5     var map; 
6     function test_Control_KeyboardDefaults_constructor (t) {
7         t.plan( 2 );
8     
9         control = new OpenLayers.Control.KeyboardDefaults();
10         t.ok( control instanceof OpenLayers.Control.KeyboardDefaults, 
11                 "new OpenLayers.Control.KeyboardDefaults returns object" );
12         t.eq( control.displayClass,  "olControlKeyboardDefaults", "displayClass is correct" );
13     }
14
15     function test_Control_KeyboardDefaults_addControl (t) {
16         t.plan( 4 );
17
18         map = new OpenLayers.Map('map');
19         control = new OpenLayers.Control.KeyboardDefaults();
20         t.ok( control instanceof OpenLayers.Control.KeyboardDefaults, 
21                 "new OpenLayers.Control.KeyboardDefaults returns object" );
22         t.ok( map instanceof OpenLayers.Map, 
23                 "new OpenLayers.Map creates map" );
24         map.addControl(control);
25         t.ok( control.map === map, "Control.map is set to the map object" );
26         t.ok( OpenLayers.Util.indexOf(map.controls, control), "map.controls contains control" );
27     }
28
29     /* When interpretting
30      * the keycodes below (including the comments associated with them),
31      * consult the URL below. For instance, the Safari browser returns
32      * "IE keycodes", and so is supported by any keycode labeled "IE".
33      * 
34      * Very informative URL:
35      *    http://unixpapa.com/js/key.html
36      */
37     function test_Control_KeyboardDefaults_KeyDownEvent (t) {
38         t.plan( 16 );
39
40         var evt = {which: 1};
41         map = new OpenLayers.Map('map');
42         var layer = new OpenLayers.Layer.WMS("Test Layer", 
43             "http://octo.metacarta.com/cgi-bin/mapserv?",
44             {map: "/mapdata/vmap_wms.map", layers: "basic"});
45         map.addLayer(layer);
46         control = new OpenLayers.Control.KeyboardDefaults();
47         map.addControl(control);
48         
49         var STARTING_ZOOM_LEVEL = 4;
50         var DELAY = 2;
51         
52         var centerLL = new OpenLayers.LonLat(0,0);
53         map.setCenter(centerLL, STARTING_ZOOM_LEVEL);
54
55         // Start new test.
56         evt.keyCode = OpenLayers.Event.KEY_LEFT;
57         control.defaultKeyPress(evt);
58         t.delay_call( 
59             DELAY, function() {
60                 t.ok( map.getCenter().lon < centerLL.lon, "key left works correctly" );
61                 
62                 // Start new test.
63                 evt.keyCode = OpenLayers.Event.KEY_RIGHT;
64                 control.defaultKeyPress(evt);
65             },
66             DELAY, function() {
67                 t.eq( map.getCenter().lon, centerLL.lon, "key right works correctly" );
68                 
69                 // Start new test. 
70                 evt.keyCode = OpenLayers.Event.KEY_UP;
71                 control.defaultKeyPress(evt);
72             },
73             DELAY, function() {
74                 t.ok( map.getCenter().lat > centerLL.lat, "key up works correctly" ); 
75                 
76                 // Start new test.
77                 evt.keyCode = OpenLayers.Event.KEY_DOWN;
78                 control.defaultKeyPress(evt);
79             },
80             DELAY, function() {
81                 t.ok( map.getCenter().lat == centerLL.lat, "key down works correctly" ); 
82                 
83                 // Start new test.
84                 evt.keyCode = 33; //page up
85                 control.defaultKeyPress(evt);
86             },
87             DELAY, function() {
88                 t.ok( map.getCenter().lat > centerLL.lat, "key page up works correctly" ); 
89                 
90                 // Start new test.
91                 evt.keyCode = 34; //page down
92                 control.defaultKeyPress(evt);
93             },
94             DELAY, function() {
95                 t.ok( map.getCenter().lat == centerLL.lat, "key page down works correctly" ); 
96                 
97                 // Start new test.
98                 evt.keyCode = 35; //end
99                 control.defaultKeyPress(evt);
100             },
101             DELAY, function() {
102                 t.ok( map.getCenter().lon > centerLL.lon, "key end works correctly" ); 
103                 
104                 // Start new test.
105                 evt.keyCode = 36; //home
106                 control.defaultKeyPress(evt);
107             },
108             DELAY, function() {
109                 t.ok( map.getCenter().lon == centerLL.lon, "key home works correctly"); 
110                 
111                 // Start new test.
112                 evt.keyCode = 43; //+
113                 control.defaultKeyPress(evt);
114                 t.eq( map.getZoom(), STARTING_ZOOM_LEVEL + 1, "key code 43 works correctly: +/= key (ASCII), keypad + (ASCII, Opera)" );
115                 
116                 // Start new test. 
117                 evt.keyCode = 61;
118                 control.defaultKeyPress(evt);
119                 t.eq( map.getZoom(), STARTING_ZOOM_LEVEL + 2, "key code 61 works correctly: +/= key (Mozilla, Opera, some ASCII)"); 
120                 
121                 // Start new test.
122                 evt.keyCode = 187;
123                 control.defaultKeyPress(evt);
124                 t.eq( map.getZoom(), STARTING_ZOOM_LEVEL + 3, "key code 187 works correctly: +/= key (IE)"); 
125                 
126                 // Start new test.
127                 evt.keyCode = 107; 
128                 control.defaultKeyPress(evt);
129                 t.eq( map.getZoom(), STARTING_ZOOM_LEVEL + 4, "key code 107 works correctly: keypad + (IE, Mozilla)"); 
130                 
131                 // Start new test.
132                 // set zoomanimation flag manually,
133                 // reason: loadend event in layers.js will not achieved in unittests
134                 map.zoomanimationActive = false;
135                 evt.keyCode = 45; 
136                 control.defaultKeyPress(evt);
137                 t.eq( map.getZoom(), STARTING_ZOOM_LEVEL + 3, "key code 45 works correctly: -/_ key (ASCII, Opera), keypad - (ASCII, Opera)");
138                 
139                 // Start new test. 
140                 // set zoomanimation flag manually,
141                 // reason: loadend event in layers.js will not achieved in unittests
142                 map.zoomanimationActive = false;
143                 evt.keyCode = 109; 
144                 control.defaultKeyPress(evt);
145                 t.eq( map.getZoom(), STARTING_ZOOM_LEVEL + 2, "key code 109 works correctly: -/_ key (Mozilla), keypad - (Mozilla, IE)"); 
146                 
147                 // Start new test.
148                 // set zoomanimation flag manually,
149                 // reason: loadend event in layers.js will not achieved in unittests
150                 map.zoomanimationActive = false;
151                 evt.keyCode = 189; 
152                 control.defaultKeyPress(evt);
153                 t.eq( map.getZoom(), STARTING_ZOOM_LEVEL + 1, "key code 189 works correctly: -/_ key (IE)"); 
154                 
155                 // Start new test.
156                 // set zoomanimation flag manually,
157                 // reason: loadend event in layers.js will not achieved in unittests
158                 map.zoomanimationActive = false;
159                 evt.keyCode = 95;
160                 control.defaultKeyPress(evt);
161                 t.eq( map.getZoom(), STARTING_ZOOM_LEVEL, "key code 95 works correctly: -/_ key (some ASCII)"); 
162             }
163         );
164     }
165
166
167   </script>
168 </head>
169 <body>
170     <div id="map" style="width: 1024px; height: 512px;"/>
171 </body>
172 </html>