Bienvenue sur PostGIS.fr

Bienvenue sur PostGIS.fr , le site de la communauté des utilisateurs francophones de PostGIS.

PostGIS ajoute le support d'objets géographique à la base de données PostgreSQL. En effet, PostGIS "spatialise" le serverur PostgreSQL, ce qui permet de l'utiliser comme une base de données SIG.

Maintenu à jour, en fonction de nos disponibilités et des diverses sorties des outils que nous testons, nous vous proposons l'ensemble de nos travaux publiés en langue française.

source: trunk/workshop-routing-foss4g/web/ext/test/unit/util/MixedCollection.js @ 76

Revision 76, 15.2 KB checked in by djay, 12 years ago (diff)

Ajout du répertoire web

  • Property svn:executable set to *
Line 
1/*!
2 * Ext JS Library 3.4.0
3 * Copyright(c) 2006-2011 Sencha Inc.
4 * licensing@sencha.com
5 * http://www.sencha.com/license
6 */
7(function() {
8    var suite  = Ext.test.session.getSuite('Ext.util.MixedCollection'),
9        assert = Y.Assert;
10
11    suite.add(new Y.Test.Case({
12        name: 'constructor',
13
14        setUp: function() {
15            this.mc = new Ext.util.MixedCollection();
16        },
17
18        tearDown: function() {
19            this.mc.clear();
20        },
21
22        //test that a default getKey implementation is set
23        testHasDefaultGetKey: function() {
24            var item1      = {id: 1, data: 'first item' },
25                item2      = {id: 2, data: 'second item'};
26           
27            this.mc.add(item1);
28            this.mc.add(item2);
29           
30            assert.areSame(item1, this.mc.get(1));
31            assert.areSame(item2, this.mc.get(2));
32        },
33
34        //test that we can provide a getKey implementation
35        testCanSetGetKey: function() {
36            var collection = new Ext.util.MixedCollection(false, function(item) {
37                return item.myKey;
38            });
39           
40            var item1 = {myKey: 'a', data: 'first item' },
41                item2 = {myKey: 'b', data: 'second item'};
42           
43            collection.add(item1);
44            collection.add(item2);
45           
46            assert.areSame(item2, collection.get('b'));
47            assert.areSame(item1, collection.get('a'));
48        }
49    }));
50   
51    suite.add(new Y.Test.Case({
52        name: 'iterators',
53       
54        setUp: function() {
55            this.mc = new Ext.util.MixedCollection();
56           
57            this.mc.addAll([
58                {id: 1, name: 'first'},
59                {id: 2, name: 'second'},
60                {id: 3, name: 'third'}
61            ]);
62        },
63
64        testEach: function() {
65            var callCount = 0, callScope, total;
66           
67            this.mc.each(function(item, index, length) {
68                //make sure that the function is called in the correct scope
69                callScope = this;
70                callCount ++;
71                total = length;
72            }, this);
73           
74            assert.areEqual(this, callScope);
75            assert.areEqual(3, callCount);
76            assert.areEqual(3, total);
77        },
78       
79        testEachKey: function() {
80            var callCount = 0, callScope;
81           
82            this.mc.eachKey(function(key, index, length) {
83                //make sure that the function is called in the correct scope
84                callScope = this;
85                callCount ++;
86            }, this);
87           
88            assert.areEqual(this, callScope);
89            assert.areEqual(3, callCount);
90        }
91    }));
92   
93    suite.add(new Y.Test.Case({
94        name: 'add and remove',
95       
96        setUp: function() {
97            this.mc = new Ext.util.MixedCollection();
98        },
99       
100        testAddAll: function() {
101            var mc = this.mc;
102           
103            assert.areEqual(0, mc.length);
104           
105            mc.addAll([{id: 1}, {id: 2}, {id: 3}]);
106           
107            assert.areEqual(3, mc.length);
108        },
109       
110        testAddAndClear: function() {
111            var mc = this.mc;
112           
113            mc.add({id: 1});
114            mc.add({id: 2});
115            mc.add({id: 3});
116           
117            assert.areEqual(3, mc.length);
118           
119            mc.clear();
120            assert.areEqual(0, mc.length);
121        },
122       
123        testAddEventFired: function() {
124            var mc    = this.mc,
125                fired = false;
126           
127            mc.on('add', function() {fired = true;});
128           
129            mc.add({id: 1});
130            assert.isTrue(fired);
131        },
132       
133        testClearEventFired: function() {
134            var mc    = this.mc,
135                fired = false;
136           
137            mc.on('clear', function() {fired = true;}, this);
138            mc.clear();
139           
140            assert.isTrue(fired);
141        },
142       
143        testGetCount: function() {
144            this.mc.add({id: 1});
145            this.mc.add({id: 2});
146            this.mc.add({id: 3});
147           
148            assert.areEqual(3, this.mc.getCount());
149        },
150       
151        testRemove: function() {
152           
153        },
154       
155        testRemoveFiresEvent: function() {
156           
157        }
158    }));
159   
160    suite.add(new Y.Test.Case({
161        name: 'insert',
162       
163        setUp: function() {
164            this.mc = new Ext.util.MixedCollection();
165           
166            this.mc.addAll([
167                {id: 1, name: 'first'},
168                {id: 2, name: 'second'},
169                {id: 3, name: 'third'}
170            ]);
171        },
172       
173        doInsert: function() {
174            this.mc.insert(1, {id: 4, name: 'fourth'});
175        },
176       
177        testInsertsToCorrectLocation: function() {
178            this.doInsert();
179           
180            assert.areEqual(4, this.mc.itemAt(1).id);
181        },
182       
183        testOtherItemsPreserved: function() {
184            var prevCount = this.mc.getCount();
185           
186            this.doInsert();
187            assert.areEqual(prevCount + 1, this.mc.getCount());
188        },
189       
190        testFiresAddEvent: function() {
191            var fired = false;
192           
193            this.mc.on('add', function() { fired = true; });
194            this.doInsert();
195           
196            assert.isTrue(fired);
197        }
198    }));
199   
200    suite.add(new Y.Test.Case({
201        name: 'replace',
202       
203        setUp: function() {
204            this.mc = new Ext.util.MixedCollection();
205           
206            this.mc.addAll([
207                {id: 1, name: 'first'},
208                {id: 2, name: 'second'},
209                {id: 3, name: 'third'}
210            ]);
211        },
212       
213        doReplace: function() {
214            this.mc.replace(2, {id: 4, name: 'fourth'});
215        },
216       
217        testReplacesCorrectItem: function() {
218            this.doReplace();
219            assert.areEqual("fourth", this.mc.itemAt(1).name);
220        },
221       
222        testPreviousItemRemoved: function() {
223            var prevCount = this.mc.getCount();
224           
225            this.doReplace();
226            assert.areEqual(prevCount, this.mc.getCount());
227        },
228       
229        testReplaceEventFired: function() {
230            var fired = false;
231           
232            this.mc.on('replace', function() { fired = true; });
233            this.doReplace();
234           
235            assert.isTrue(fired);
236        }
237    }));
238   
239    suite.add(new Y.Test.Case({
240        name: 'clone',
241       
242        setUp: function() {
243            this.mc = new Ext.util.MixedCollection();
244           
245            this.mc.addAll([
246                {id: 1, name: 'first'},
247                {id: 2, name: 'second'},
248                {id: 3, name: 'third'}
249            ]);
250        },
251       
252        //test that a shallow clone is completed correctly
253        testClone: function() {
254            var newMC = this.mc.clone();
255           
256            assert.areEqual(3, newMC.getCount());
257           
258            Ext.each([1, 2, 3], function(id) {
259              assert.areEqual(this.mc.get(id).id, newMC.get(id).id);
260            }, this);
261        }
262    }));
263   
264    suite.add(new Y.Test.Case({
265        name: 'getting items',
266       
267        setUp: function() {
268            this.mc = new Ext.util.MixedCollection();
269            this.item1 = {id: 1, name: 'first'};
270           
271            this.mc.addAll([
272                this.item1,
273                {id: 2, name: 'second'},
274                {id: 3, name: 'third'}
275            ]);
276        },
277       
278        testFirst: function() {
279            assert.areEqual(1, this.mc.first().id);
280        },
281       
282        testLast: function() {
283            assert.areEqual(3, this.mc.last().id);
284        },
285       
286        testGet: function() {
287            assert.areEqual(2, this.mc.get(2).id);
288        },
289       
290        testGetKey: function() {
291            assert.areEqual(1, this.mc.getKey(this.item1));
292        },
293       
294        //should return items in the given range
295        testGetRange: function() {
296            var items = this.mc.getRange(1, 2);
297           
298            assert.areEqual(2, items.length);
299            assert.areEqual(2, items[0].id);
300            assert.areEqual(3, items[1].id);
301        },
302       
303        //should get all items
304        testGetRangeWithNoArguments: function() {
305            var items = this.mc.getRange();
306           
307            assert.areEqual(3, items.length);
308        },
309       
310        //should get all items after the provided start index
311        testGetRangeWithNoEnd: function() {
312            var items = this.mc.getRange(1);
313           
314            assert.areEqual(2, items.length);
315        },
316       
317        testIndexOf: function() {
318            assert.areEqual(0, this.mc.indexOf(this.item1));
319        },
320       
321        testIndexOfKey: function() {
322            assert.areEqual(2, this.mc.indexOfKey(3));
323        },
324       
325        testKey: function() {
326            assert.areEqual(3, this.mc.key(3).id);
327        },
328       
329        testItemByIndex: function() {
330            this.mc.add({id: 'a', name: 'another item'});
331            this.mc.add({id: 'b', name: 'yet another item'});
332           
333            assert.areEqual('b', this.mc.item(4).id);
334        },
335       
336        //key should take priority over index
337        testItemByKey: function() {
338            this.mc.add({id: 'a', name: 'another item'});
339           
340            assert.areEqual('a', this.mc.item('a').id);
341        },
342       
343        testItemAt: function() {
344            assert.areEqual(3, this.mc.itemAt(2).id);
345        }
346    }));
347   
348    suite.add(new Y.Test.Case({
349        name: 'find functions',
350       
351        setUp: function() {
352            this.mc = new Ext.util.MixedCollection();
353           
354            this.mc.addAll([
355                {id: 1, name: 'first'},
356                {id: 2, name: 'second'},
357                {id: 3, name: 'third'}
358            ]);
359        },
360       
361        testFind: function() {
362            var matched = this.mc.find(function(item) {
363                return item.name == 'third';
364            });
365           
366            assert.areEqual('third', matched.name);
367        },
368       
369        testFindIndex: function() {
370            var matched = this.mc.findIndex('name', 'third');
371           
372            assert.areEqual(2, matched);
373        },
374       
375        testFindIndexBy: function() {
376            var matched = this.mc.findIndexBy(function(item) {
377                return item.name == 'second';
378            });
379           
380            assert.areEqual(1, matched);
381        }
382    }));
383   
384    suite.add(new Y.Test.Case({
385        name: 'contains',
386       
387        setUp: function() {
388            this.mc = new Ext.util.MixedCollection();
389            this.item = {id: 1, name: 'first'};
390           
391            this.mc.addAll([
392                this.item,
393                {id: 2, name: 'second'},
394                {id: 3, name: 'third'}
395            ]);
396        },
397       
398        tearDown: function() {
399            delete this.item;
400        },
401       
402        testContains: function() {
403            assert.isTrue(this.mc.contains(this.item));
404        },
405       
406        testDoesNotContain: function() {
407            assert.isFalse(this.mc.contains({some: 'object'}));
408        },
409       
410        testContainsKey: function() {
411            assert.isTrue(this.mc.containsKey(1));
412        },
413       
414        testDoesNotContainKey: function() {
415            assert.isFalse(this.mc.containsKey('abc'));
416        }
417    }));
418   
419    suite.add(new Y.Test.Case({
420        name: 'single sorting',
421       
422        setUp: function() {
423            this.mc = new Ext.util.MixedCollection(false, function(item) {
424                return item['code'];
425            });
426           
427            this.mc.addAll([
428                {id: 1, name: 'first',  code: 'C', modifier: 10},
429                {id: 2, name: 'second', code: 'A', modifier: 100},
430                {id: 3, name: 'third',  code: 'B', modifier: 5}
431            ]);
432        },
433       
434        testKeySort: function() {
435            var mc = this.mc;
436            mc.keySort();
437           
438            assert.areEqual('A', mc.itemAt(0).code);
439            assert.areEqual('B', mc.itemAt(1).code);
440            assert.areEqual('C', mc.itemAt(2).code);
441        },
442       
443        testDirectionalKeySort: function() {
444            var mc = this.mc;
445            mc.keySort('DESC');
446           
447            assert.areEqual('C', mc.itemAt(0).code);
448            assert.areEqual('B', mc.itemAt(1).code);
449            assert.areEqual('A', mc.itemAt(2).code);
450        },
451       
452        testSort: function() {
453            var mc = new Ext.util.MixedCollection();
454            mc.addAll(3, 1, 4, 2);
455            mc.sort();
456           
457            assert.areEqual(1, mc.itemAt(0));
458            assert.areEqual(2, mc.itemAt(1));
459            assert.areEqual(3, mc.itemAt(2));
460            assert.areEqual(4, mc.itemAt(3));
461        },
462       
463        testDirectionalSort: function() {
464           
465        },
466       
467        testSortWithComparator: function() {
468            var mc = this.mc;
469            mc.sort('ASC', function(a, b) {
470                return (a.id * a.modifier) - (b.id * b.modifier);
471            });
472           
473            assert.areEqual('C', mc.itemAt(0).code);
474            assert.areEqual('B', mc.itemAt(1).code);
475            assert.areEqual('A', mc.itemAt(2).code);
476        },
477       
478        testDirectionalSortWithComparator: function() {
479            var mc = this.mc;
480            mc.sort('DESC', function(a, b) {
481                return (a.id * a.modifier) - (b.id * b.modifier);
482            });
483           
484            assert.areEqual('A', mc.itemAt(0).code);
485            assert.areEqual('B', mc.itemAt(1).code);
486            assert.areEqual('C', mc.itemAt(2).code);
487        },
488       
489        testSortEventFired: function() {
490            var fired = false;
491           
492            this.mc.on('sort', function() { fired = true; });
493            this.mc.sort('name');
494           
495            assert.isTrue(fired);
496        }
497    }));
498   
499    suite.add(new Y.Test.Case({
500        name: 'reordering',
501       
502        setUp: function() {
503            this.mc = new Ext.util.MixedCollection(false, function(item) {
504                return item['code'];
505            });
506           
507            this.mc.addAll([
508                {id: 1, name: 'first',  code: 'C', modifier: 10},
509                {id: 2, name: 'second', code: 'A', modifier: 100},
510                {id: 3, name: 'third',  code: 'B', modifier: 5}
511            ]);
512        },
513       
514        testReordering: function() {
515            var mc = this.mc;
516           
517            mc.reorder({
518                1: 2,
519                2: 0
520            });
521           
522            assert.areEqual('B', mc.itemAt(0).code);
523            assert.areEqual('C', mc.itemAt(1).code);
524            assert.areEqual('A', mc.itemAt(2).code);
525        },
526       
527        testSortEventFired: function() {
528            var wasFired = false,
529                mc       = this.mc;
530           
531            mc.on('sort', function() {
532                wasFired = true;
533            }, this);
534           
535            mc.reorder({
536                1: 2,
537                2: 0
538            });
539           
540            assert.isTrue(wasFired);
541        }
542    }));
543})();
Note: See TracBrowser for help on using the repository browser.