Project

General

Profile

1
<html>
2
<head>
3
  <script src="../lib/OpenLayers.js"></script>
4
  <script type="text/javascript"><!--
5
    var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
6
    var map; 
7
    function test_01_Util_getImagesLocation (t) {
8
        t.plan( 1 );
9
        t.ok( OpenLayers.Util.getImagesLocation(), "../img/",
10
                    "getImagesLocation()" );
11
    }
12

    
13
    function test_02_Util_Strings(t) {
14
        t.plan(5);
15
        
16
        var str = "  chicken pox  ";
17

    
18
        t.ok(str.contains("chicken"), "contains() function correctly finds an embedded string");
19
        t.ok(!str.contains("marsupial"), "contains() function correctly does not finds an random string");
20
        
21

    
22
        var trimmedStr = str.trim();        
23

    
24
        t.eq(trimmedStr, "chicken pox", "String.trim works correctly");
25

    
26
        t.eq(trimmedStr.startsWith("chicken"), true, "String.startsWith correctly finds chicken");
27
        t.eq(trimmedStr.startsWith("dolphin"), false, "String.startsWith correctly does not find turkey");
28

    
29

    
30
    }
31

    
32
    function test_03_Util_Array(t) {
33
        t.plan( 5 );
34

    
35
        var array = new Array(1,2,3,4,5);
36

    
37
        array.remove(3);
38
        t.eq( array.toString(), "1,2,4,5", "array.remove works");    
39

    
40
        copy = array.clone();
41
        t.eq( copy.toString(), "1,2,4,5", "array.clone() works");    
42
        array.push(7);
43
        t.eq( copy.toString(), "1,2,4,5", "changing a value in the copied array doesnt affect the new array");    
44

    
45
        
46
        t.eq( copy.indexOf(5), 3, "indexOf function returns index of value in an array");    
47
        t.eq( copy.indexOf(75), -1, "indexOf function returns -1 when element not found in array");    
48
        
49
    }
50

    
51
    function test_04_Util_createDiv(t) {
52
        t.plan( 20 );
53

    
54
        var id = "boo";
55
        var px = new OpenLayers.Pixel(5,5);
56
        var sz = new OpenLayers.Size(10,10);
57
        var img = "http://www.openlayers.org/images/OpenLayers.trac.png";
58
        var position = "absolute";
59
        var border = "13px solid";
60
        var overflow = "hidden";
61

    
62
        var div = OpenLayers.Util.createDiv(id, px, sz, img, position, border, overflow);
63

    
64
        if (!isMozilla)
65
            t.ok( true, "skipping element test outside of Mozilla");
66
        else
67
            t.ok( div instanceof HTMLDivElement, "createDiv creates a valid HTMLDivElement" );
68
        t.eq( div.id, id, "div.id set correctly");    
69
        t.eq( div.style.left, px.x + "px", "div.style.left set correctly");    
70
        t.eq( div.style.top, px.y + "px", "div.style.top set correctly");    
71

    
72
        t.eq( div.style.width, sz.w + "px", "div.style.width set correctly");    
73
        t.eq( div.style.height, sz.h + "px", "div.style.height set correctly");    
74

    
75
        t.eq( div.style.backgroundImage, "url(" + img + ")", "div.style.backgroundImage correctly");    
76

    
77
        t.eq( div.style.position, position, "div.style.positionset correctly");    
78
        t.ok( (div.style.border.indexOf(border) != -1), "div.style.border set correctly");    
79
        t.eq( div.style.overflow, overflow, "div.style.overflow set correctly");    
80

    
81
        //test defaults
82
        var div = OpenLayers.Util.createDiv();
83

    
84
        if (!isMozilla)
85
            t.ok( true, "skipping element test outside of Mozilla");
86
        else
87
            t.ok( div instanceof HTMLDivElement, "createDiv creates a valid HTMLDivElement" );
88
        t.ok( (div.id != ""), "div.id set correctly");    
89
        t.eq(div.style.left, "", "div.style.left set correctly");    
90
        t.eq(div.style.top, "", "div.style.top set correctly");    
91

    
92
        t.eq( div.style.width, "", "div.style.width set correctly");    
93
        t.eq( div.style.height, "", "div.style.height set correctly");    
94

    
95
        t.eq(div.style.backgroundImage, "", "div.style.backgroundImage correctly");    
96

    
97
        t.eq( div.style.position, "absolute", "div.style.positionset correctly");    
98
        t.eq( div.style.border, "", "div.style.border set correctly");    
99
        t.eq(div.style.overflow, "", "div.style.overflow set correctly");    
100

    
101
    }
102

    
103
    function test_05_Util_createImage(t) {
104
        t.plan( 18 );
105

    
106
        var img = "http://www.openlayers.org/images/OpenLayers.trac.png";
107
        var sz = new OpenLayers.Size(10,10);
108
        var xy = new OpenLayers.Pixel(5,5);
109
        var position = "absolute";
110
        var id = "boo";
111
        var border = "1px solid";
112

    
113
        var image = OpenLayers.Util.createImage(id, xy, sz, img, position, border);
114

    
115
        if (!isMozilla)
116
            t.ok( true, "skipping element test outside of Mozilla");
117
        else
118
            t.ok( image instanceof HTMLImageElement, "createImage creates a valid HTMLImageElement" );
119
        t.eq( image.id, id, "image.id set correctly");    
120
        t.eq( image.style.left, xy.x + "px", "image.style.left set correctly");    
121
        t.eq( image.style.top, xy.y + "px", "image.style.top set correctly");    
122

    
123
        t.eq( image.style.width, sz.w + "px", "image.style.width set correctly");    
124
        t.eq( image.style.height, sz.h + "px", "image.style.height set correctly");    
125

    
126
        t.ok( (image.style.border.indexOf(border) != -1), "image.style.border set correctly");    
127
        t.eq( image.src, img, "image.style.backgroundImage correctly");    
128
        t.eq( image.style.position, position, "image.style.positionset correctly");    
129

    
130
        //test defaults
131
        var image = OpenLayers.Util.createImage();
132

    
133
        if (!isMozilla)
134
            t.ok( true, "skipping element test outside of Mozilla");
135
        else
136
            t.ok( image instanceof HTMLImageElement, "createDiv creates a valid HTMLDivElement" );
137
        t.ok( (image.id != ""), "image.id set to something");    
138
        t.eq( image.style.left, "", "image.style.left set correctly");    
139
        t.eq( image.style.top, "", "image.style.top set correctly");    
140

    
141
        t.eq( image.style.width, "", "image.style.width set correctly");    
142
        t.eq( image.style.height, "", "image.style.height set correctly");    
143

    
144
        t.ok((image.style.border == ""), "image.style.border set correctly");    
145
        t.eq(image.src, "", "image.style.backgroundImage correctly");    
146
        t.eq( image.style.position, "relative", "image.style.positionset correctly");    
147

    
148
    }
149

    
150
    function test_06_Util_applyDefaults(t) {
151
    
152
        t.plan(4);
153
        
154
        var to = { a: "abra",
155
                   b: "blorg"
156
                 };
157

    
158
        var from = { b: "zoink",
159
                     c: "press"
160
                   };
161

    
162
        OpenLayers.Util.applyDefaults(to, from);
163

    
164
        t.ok( to instanceof Object, " applyDefaults returns an object");
165
        t.eq( to["a"], "abra", "key present in to but not from maintained");
166
        t.eq( to["b"], "blorg", "key present in to and from, maintained in to");
167
        t.eq( to["c"], "press", "key present in from and not to successfully copied to to");
168
    }
169

    
170
    function test_07_Util_getParameterString(t) {
171
        t.plan( 1 );
172

    
173
        var params = { foo: "bar",
174
                       chicken: 1.5
175
                     }
176

    
177
        t.eq( OpenLayers.Util.getParameterString(params), "foo=bar&chicken=1.5", "getParameterString returns correctly");    
178
    }
179

    
180
    function test_08_Util_createAlphaImageDiv(t) {
181
        t.plan( 17 );
182

    
183
        var img = "http://www.openlayers.org/images/OpenLayers.trac.png";
184
        var sz = new OpenLayers.Size(10,10);
185
        var xy = new OpenLayers.Pixel(5,5);
186
        var position = "absolute";
187
        var id = "boo";
188
        var border = "1px solid";
189
        var sizing = "crop";
190

    
191
        var imageDiv = OpenLayers.Util.createAlphaImageDiv(id, xy, sz, img, position, border, sizing);
192

    
193
        if (!isMozilla)
194
            t.ok( true, "skipping element test outside of Mozilla");
195
        else
196
            t.ok( imageDiv instanceof HTMLDivElement, "createDiv creates a valid HTMLDivElement" );
197

    
198
        t.eq( imageDiv.id, id, "image.id set correctly");    
199
        t.eq( imageDiv.style.left, xy.x + "px", "image.style.left set correctly");    
200
        t.eq( imageDiv.style.top, xy.y + "px", "image.style.top set correctly");    
201

    
202
        t.eq( imageDiv.style.width, sz.w + "px", "image.style.width set correctly");    
203
        t.eq( imageDiv.style.height, sz.h + "px", "image.style.height set correctly");    
204

    
205
        t.eq( imageDiv.style.position, position, "image.style.positionset correctly");    
206

    
207

    
208
        image = imageDiv.firstChild;
209

    
210
        if (!isMozilla)
211
            t.ok( true, "skipping element test outside of Mozilla");
212
        else
213
            t.ok( image instanceof HTMLImageElement, "createImage creates a valid HTMLImageElement" );
214
        t.eq( image.id, id + "_innerImage", "image.id set correctly");    
215

    
216
        t.eq( image.style.width, sz.w + "px", "image.style.width set correctly");    
217
        t.eq( image.style.height, sz.h + "px", "image.style.height set correctly");    
218

    
219
        t.ok( (image.style.border.indexOf(border) != -1), "image.style.border set correctly");    
220
        t.eq( image.style.position, "relative", "image.style.positionset correctly");    
221

    
222
        if (OpenLayers.Util.alphaHack()) {
223
        
224
            t.eq(imageDiv.style.display, "inline-block", "imageDiv.style.display set correctly");
225

    
226
            var filter = "progid:DXImageTransform.Microsoft" +
227
                         ".AlphaImageLoader(src='" + img + "', " +
228
                         "sizingMethod='" + sizing + "')";
229
            t.eq(imageDiv.style.filter, filter, "div filter value correctly set");
230

    
231
            filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
232
            t.eq(image.style.filter, filter, "image filter set correctly");
233

    
234
        } else {
235
            t.eq( image.src, img, "image.style.backgroundImage correctly");    
236
            t.ok(true, "div filter value not set (not in IE)");
237
            t.ok(true, "image filter value not set (not in IE)");
238
        }
239

    
240
        var imageDiv = OpenLayers.Util.createAlphaImageDiv(id, xy, sz, img, position, border);
241
        if (OpenLayers.Util.alphaHack()) {
242
            var filter = "progid:DXImageTransform.Microsoft" +
243
                         ".AlphaImageLoader(src='" + img + "', " +
244
                         "sizingMethod='scale')";
245
            t.eq(imageDiv.style.filter, filter, "sizingMethod default correctly set to scale");
246
        } else {
247
            t.ok(true);
248
        }        
249

    
250
    }
251

    
252
    function test_09_Util_modifyDOMElement(t) {
253

    
254
        t.plan( 8 );
255

    
256
        var id = "boo";
257
        var px = new OpenLayers.Pixel(5,5);
258
        var sz = new OpenLayers.Size(10,10);
259
        var position = "absolute";
260
        var border = "1px solid";
261
        var overflow = "hidden";
262

    
263
        var element = document.createElement("div");
264

    
265
        OpenLayers.Util.modifyDOMElement(element, id, px, sz, 
266
                                         position, border, overflow);
267

    
268
        t.eq( element.id, id, "element.id set correctly");    
269
        t.eq( element.style.left, px.x + "px", "element.style.left set correctly");    
270
        t.eq( element.style.top, px.y + "px", "element.style.top set correctly");    
271

    
272
        t.eq( element.style.width, sz.w + "px", "element.style.width set correctly");    
273
        t.eq( element.style.height, sz.h + "px", "element.style.height set correctly");    
274

    
275
        t.eq( element.style.position, position, "element.style.position set correctly");    
276
        t.ok( (element.style.border.indexOf(border) != -1), "element.style.border set correctly");    
277
        t.eq( element.style.overflow, overflow, "element.style.overflow set correctly");    
278

    
279
    }
280

    
281
    function test_09_Util_modifyAlphaImageDiv(t) {
282
        t.plan( 17 );
283

    
284
        var imageDiv = OpenLayers.Util.createAlphaImageDiv();
285

    
286
        var img = "http://www.openlayers.org/images/OpenLayers.trac.png";
287
        var sz = new OpenLayers.Size(10,10);
288
        var xy = new OpenLayers.Pixel(5,5);
289
        var position = "absolute";
290
        var id = "boo";
291
        var border = "1px solid";
292
        var sizing = "crop";
293

    
294
        OpenLayers.Util.modifyAlphaImageDiv(imageDiv, id, xy, sz, img, position, border, sizing);
295

    
296
        if (!isMozilla)
297
            t.ok( true, "skipping element test outside of Mozilla");
298
        else
299
            t.ok( imageDiv instanceof HTMLDivElement, "createDiv creates a valid HTMLDivElement" );
300

    
301
        t.eq( imageDiv.id, id, "image.id set correctly");    
302
        t.eq( imageDiv.style.left, xy.x + "px", "image.style.left set correctly");    
303
        t.eq( imageDiv.style.top, xy.y + "px", "image.style.top set correctly");    
304

    
305
        t.eq( imageDiv.style.width, sz.w + "px", "image.style.width set correctly");    
306
        t.eq( imageDiv.style.height, sz.h + "px", "image.style.height set correctly");    
307

    
308
        t.eq( imageDiv.style.position, position, "image.style.positionset correctly");    
309

    
310

    
311
        image = imageDiv.firstChild;
312

    
313
        if (!isMozilla)
314
            t.ok( true, "skipping element test outside of Mozilla");
315
        else
316
            t.ok( image instanceof HTMLImageElement, "createImage creates a valid HTMLImageElement" );
317
        t.eq( image.id, id + "_innerImage", "image.id set correctly");    
318

    
319
        t.eq( image.style.width, sz.w + "px", "image.style.width set correctly");    
320
        t.eq( image.style.height, sz.h + "px", "image.style.height set correctly");    
321

    
322
        t.ok( (image.style.border.indexOf(border) != -1), "image.style.border set correctly");    
323
        t.eq( image.style.position, "relative", "image.style.positionset correctly");    
324

    
325
        if (OpenLayers.Util.alphaHack()) {
326
        
327
            t.eq(imageDiv.style.display, "inline-block", "imageDiv.style.display set correctly");
328

    
329
            var filter = "progid:DXImageTransform.Microsoft" +
330
                         ".AlphaImageLoader(src='" + img + "', " +
331
                         "sizingMethod='" + sizing + "')";
332
            t.eq(imageDiv.style.filter, filter, "div filter value correctly set");
333

    
334
            filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
335
            t.eq(image.style.filter, filter, "image filter set correctly");
336

    
337
        } else {
338
            t.eq( image.src, img, "image.style.backgroundImage correctly");    
339
            t.ok(true, "div filter value not set (not in IE)");
340
            t.ok(true, "image filter value not set (not in IE)");
341
        }
342

    
343
        var imageDiv = OpenLayers.Util.createAlphaImageDiv(id, xy, sz, img, position, border);
344
        if (OpenLayers.Util.alphaHack()) {
345
            var filter = "progid:DXImageTransform.Microsoft" +
346
                         ".AlphaImageLoader(src='" + img + "', " +
347
                         "sizingMethod='scale')";
348
            t.eq(imageDiv.style.filter, filter, "sizingMethod default correctly set to scale");
349
        } else {
350
            t.ok(true);
351
        }        
352
   
353
    }
354
       
355
    function test_10_Util_upperCaseObject(t) {
356
    
357
        t.plan(8);
358
        
359
        var aKey = "chicken";
360
        var aValue = "pot pie";
361

    
362
        var bKey = "blorg";
363
        var bValue = "us maximus";
364
        
365
        var obj = new Object();
366
        obj[aKey] = aValue;        
367
        obj[bKey] = bValue;        
368
             
369
        var uObj = OpenLayers.Util.upperCaseObject(obj);          
370

    
371
        //make sure old object not modified
372
        t.eq(obj[aKey], aValue, "old lowercase value still present in old obj");
373
        t.eq(obj[bKey], bValue, "old lowercase value still present in old obj");
374

    
375
        t.eq(obj[aKey.toUpperCase()], null, "new uppercase value not present in old obj");
376
        t.eq(obj[bKey.toUpperCase()], null, "new uppercase value not present in old obj");
377

    
378
        //make sure new object modified
379
        t.eq(uObj[aKey], null, "old lowercase value not present");
380
        t.eq(uObj[bKey], null, "old lowercase value not present");
381

    
382
        t.eq(uObj[aKey.toUpperCase()], aValue, "new uppercase value present");
383
        t.eq(uObj[bKey.toUpperCase()], bValue, "new uppercase value present");
384
    }
385
    
386
    function test_11_Util_createUniqueID(t) {
387
        t.plan(2);
388
        
389
        var id = OpenLayers.Util.createUniqueID();
390
        t.ok( id.startsWith("id_"), "default OpenLayers.Util.createUniqueID starts id correctly");
391

    
392
        var id = OpenLayers.Util.createUniqueID("chicken");
393
        t.ok( id.startsWith("chicken"), "OpenLayers.Util.createUniqueID starts id correctly");
394
    }
395
    
396
    function test_12_Util_limitSigDigs(t) {
397

    
398
        t.plan(7);
399

    
400
        var x;
401

    
402
        x = 123456;
403
        t.eq(x.limitSigDigs(3), 123000, "correctly rounds down");
404

    
405
        x = 555555;
406
        t.eq(x.limitSigDigs(3), 556000, "correctly rounds up");
407

    
408
        x = 66;
409
        t.eq(x.limitSigDigs(3), 66, "correctly handles number smaller than sigdig");
410

    
411
        t.eq(x.limitSigDigs(null), 0, "correctly handles null sigdig");
412
        t.eq(x.limitSigDigs(0), 0, "correctly handles 0 sigdig");
413
        t.eq(x.limitSigDigs(-1), 0, "correctly handles negative sigdig");
414

    
415
        x = 0;
416
        t.eq(x.limitSigDigs(2), 0, "correctly handles 0 number");
417

    
418

    
419

    
420
    }
421

    
422
  // -->
423
  </script>
424
</head>
425
<body>
426
    <div id="map" style="width: 1024px; height: 512px;"/>
427
</body>
428
</html>
(34-34/35)