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/widgets/layout/VBoxLayout.js @ 76

Revision 76, 17.6 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/**
8 * Tests Ext.data.Store functionality
9 * @author Ed Spencer
10 */
11(function() {
12    var suite  = Ext.test.session.getSuite('Ext.layout.VBoxLayout'),
13        assert = Y.Assert;
14   
15    function buildFakeChild(config) {
16        config = config || {};
17             
18        Ext.applyIf(config, {
19            getWidth: function() {
20                return 10;
21            },
22            getHeight: function() {
23                return 10;
24            },
25            getSize: function() {
26                return {
27                    height: 10,
28                    width : 10
29                };
30            },
31            margins: {
32                top   : 0,
33                right : 0,
34                bottom: 0,
35                left  : 0
36            }
37        });
38       
39        return config;
40    }
41   
42    function buildLayout(config) {
43        config = config || {};
44             
45        Ext.applyIf(config, {
46            padding: {
47                top   : 0,
48                right : 0,
49                bottom: 0,
50                left  : 0
51            }
52        });
53       
54        return new Ext.layout.VBoxLayout(config);
55    };
56   
57    suite.add(new Y.Test.Case({
58        name: 'calculating flexed box sizes',
59       
60        setUp: function() {
61            this.layout = buildLayout();
62           
63            this.items = [
64                buildFakeChild({flex: 1}),
65                buildFakeChild({flex: 1}),
66                buildFakeChild({flex: 1}),
67                buildFakeChild({flex: 1})
68            ];
69           
70            this.targetSize = {
71                height: 400,
72                width : 100
73            };
74        },
75       
76        testEqualFlexHeights: function() {
77            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
78                boxes = calcs.boxes;
79           
80            assert.areEqual(100, boxes[0].height);
81            assert.areEqual(100, boxes[1].height);
82            assert.areEqual(100, boxes[2].height);
83            assert.areEqual(100, boxes[3].height);
84        },
85       
86        testDifferentFlexWidths: function() {
87            this.items = [
88                buildFakeChild({flex: 1}),
89                buildFakeChild({flex: 2}),
90                buildFakeChild({flex: 3}),
91                buildFakeChild({flex: 4})
92            ];
93           
94            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
95                boxes = calcs.boxes;
96           
97            assert.areEqual(40, boxes[0].height);
98            assert.areEqual(80, boxes[1].height);
99            assert.areEqual(120, boxes[2].height);
100            assert.areEqual(160, boxes[3].height);
101        },
102       
103        testMarginsAccountedFor: function() {
104            var items = [
105                buildFakeChild({flex: 1, margins: {left: 0, right: 0, top: 10, bottom: 10}}),
106                buildFakeChild({flex: 1, margins: {left: 0, right: 0, top: 10, bottom: 10}}),
107                buildFakeChild({flex: 1, margins: {left: 0, right: 0, top: 10, bottom: 10}}),
108                buildFakeChild({flex: 1, margins: {left: 0, right: 0, top: 10, bottom: 10}})
109            ];
110             
111            var calcs = this.layout.calculateChildBoxes(items, this.targetSize),
112                boxes = calcs.boxes;
113           
114            assert.areEqual(80, boxes[0].height);
115            assert.areEqual(80, boxes[1].height);
116            assert.areEqual(80, boxes[2].height);
117            assert.areEqual(80, boxes[3].height);
118        },
119       
120        testPaddingAccountedFor: function() {
121            this.layout = buildLayout({
122                padding: {
123                    top   : 10,
124                    right : 10,
125                    bottom: 10,
126                    left  : 10
127                }
128            });
129           
130            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
131                boxes = calcs.boxes;
132           
133            //400px available internally, minus 20px total left + right padding = 380 / 4
134            assert.areEqual(95, boxes[0].height);
135            assert.areEqual(95, boxes[1].height);
136            assert.areEqual(95, boxes[2].height);
137            assert.areEqual(95, boxes[3].height);
138        },
139       
140        //one of the items is passed both a width and a flex - the flex should be ignored
141        testHeightDominatesFlex: function() {
142            var items = [
143                buildFakeChild({flex: 1, height: 250, getHeight: function() {return 250;}}),
144                buildFakeChild({flex: 1}),
145                buildFakeChild({flex: 1}),
146                buildFakeChild({flex: 1})
147            ];
148             
149            var calcs = this.layout.calculateChildBoxes(items, this.targetSize),
150                boxes = calcs.boxes;
151           
152            assert.areEqual(250, boxes[0].height);
153            assert.areEqual(50, boxes[1].height);
154            assert.areEqual(50, boxes[2].height);
155            assert.areEqual(50, boxes[3].height);
156        },
157       
158        testHeightPropertyDominatesGetHeight: function() {
159            var layout = buildLayout({
160                pack : 'start',
161                align: 'stretch'
162            });
163           
164            var items = [
165                {
166                    title: 'Panel 1',
167                    flex: 1,
168                    html: 'flex : 1',
169                    frame: true,
170                    margins: {top: 0, left: 0, right: 0, bottom: 0},
171                    getHeight: function() {return 10;},
172                    getWidth: function() {return 10;}
173                }, {
174                    title: 'Panel 2',
175                    height: 100,
176                    html: 'width : 100',
177                    frame: true,
178                    margins: {top: 0, left: 0, right: 0, bottom: 0},
179                    getWidth: function() {return 10;},
180                   
181                    //NOTE: this should be ignored by HBox because we have a different configured width property
182                    getHeight: function() {return 10;}
183                }, {
184                    title: 'Panel 3',
185                    flex: 2,
186                    html: 'flex : 2',
187                    frame: true,
188                    margins: {top: 0, left: 0, right: 0, bottom: 0},
189                    getHeight: function() {return 10;},
190                    getWidth: function() {return 10;}
191                }
192            ];
193           
194            var targetSize = {
195                height: 1628,
196                width : 630
197            };
198           
199            var calcs = layout.calculateChildBoxes(items, targetSize),
200                boxes = calcs.boxes;
201           
202            assert.areEqual(0, boxes[0].top);
203            assert.areEqual(510, boxes[1].top);
204            assert.areEqual(610, boxes[2].top);
205        }
206    }));
207   
208    suite.add(new Y.Test.Case({
209        name: 'minHeight of items',
210
211        setUp: function() {
212            this.layout = buildLayout();
213
214            this.layout.beforeCt = {
215                getWidth: function() {
216                    return 0;
217                },
218                createChild: Ext.emptyFn
219            };
220
221            this.layout.afterCt = {
222                getWidth: function() {
223                    return 0;
224                },
225                createChild: Ext.emptyFn
226            };
227
228            this.items = [
229                buildFakeChild({height: 100, minHeight: 100}),
230                buildFakeChild({height: 200, minHeight: 120}),
231                buildFakeChild({height: 200, minHeight: 120}),
232                buildFakeChild({height: 200, minHeight: 120})
233            ];
234        },
235
236        testAvailableWidthIsSufficient: function() {
237            var targetSize = {
238                height: 700,
239                width : 25
240            };
241
242            var calcs = this.layout.calculateChildBoxes(this.items, targetSize),
243                boxes = calcs.boxes;
244
245            assert.areEqual(0,   boxes[0].top);
246            assert.areEqual(100, boxes[1].top);
247            assert.areEqual(300, boxes[2].top);
248            assert.areEqual(500, boxes[3].top);
249
250            assert.areEqual(100, boxes[0].height);
251            assert.areEqual(200, boxes[1].height);
252            assert.areEqual(200, boxes[2].height);
253            assert.areEqual(200, boxes[3].height);
254        },
255
256        testHasShortfall: function() {
257            var targetSize = {
258                height: 500,
259                width : 25
260            };
261
262            var calcs = this.layout.calculateChildBoxes(this.items, targetSize),
263                boxes = calcs.boxes;
264
265            assert.areEqual(100, boxes[0].height);
266            assert.areEqual(133, boxes[1].height);
267            assert.areEqual(133, boxes[2].height);
268            assert.areEqual(134, boxes[3].height);
269
270            assert.areEqual(0,   boxes[0].top);
271            assert.areEqual(100, boxes[1].top);
272            assert.areEqual(233, boxes[2].top);
273            assert.areEqual(366, boxes[3].top);
274        },
275
276        testTooNarrow: function() {
277            var targetSize = {
278                height: 400,
279                width : 25
280            };
281
282            var calcs = this.layout.calculateChildBoxes(this.items, targetSize),
283                boxes = calcs.boxes;
284
285            assert.areEqual(0,   boxes[0].top);
286            assert.areEqual(100, boxes[1].top);
287            assert.areEqual(220, boxes[2].top);
288            assert.areEqual(340, boxes[3].top);
289
290            assert.areEqual(100, boxes[0].height);
291            assert.areEqual(120, boxes[1].height);
292            assert.areEqual(120, boxes[2].height);
293            assert.areEqual(120, boxes[3].height);
294        }
295    }));
296   
297    suite.add(new Y.Test.Case({
298        name: 'aligning',
299       
300        setUp: function() {
301            this.items = [
302                buildFakeChild({flex: 1, getWidth: function() {return 10;}}),
303                buildFakeChild({flex: 1, getWidth: function() {return 20;}}),
304                buildFakeChild({flex: 1, getWidth: function() {return 30;}}),
305                buildFakeChild({flex: 1, getWidth: function() {return 40;}})
306            ];
307           
308            this.targetSize = {
309                height: 400,
310                width : 100
311            };
312        },
313       
314        testLeft: function() {
315            this.layout = buildLayout({
316                align: 'left'
317            });
318           
319            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
320                boxes = calcs.boxes;
321           
322            assert.areEqual(0, boxes[0].left);
323            assert.areEqual(0, boxes[1].left);
324            assert.areEqual(0, boxes[2].left);
325            assert.areEqual(0, boxes[3].left);
326        },
327       
328        testMiddle: function() {
329            this.layout = buildLayout({
330                align: 'center'
331            });
332           
333            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
334                boxes = calcs.boxes;
335           
336            assert.areEqual(45, boxes[0].left);
337            assert.areEqual(40, boxes[1].left);
338            assert.areEqual(35, boxes[2].left);
339            assert.areEqual(30, boxes[3].left);
340        },
341       
342        testStretch: function() {
343            this.layout = buildLayout({
344                align: 'stretch'
345            });
346           
347            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
348                boxes = calcs.boxes;
349           
350            assert.areEqual(0, boxes[0].left);
351            assert.areEqual(0, boxes[1].left);
352            assert.areEqual(0, boxes[2].left);
353            assert.areEqual(0, boxes[3].left);
354           
355            assert.areEqual(100, boxes[0].width);
356            assert.areEqual(100, boxes[1].width);
357            assert.areEqual(100, boxes[2].width);
358            assert.areEqual(100, boxes[3].width);
359        },
360       
361        testStretchMax: function() {
362            this.layout = buildLayout({
363                align: 'stretchmax'
364            });
365           
366            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
367                boxes = calcs.boxes;
368           
369            assert.areEqual(0, boxes[0].left);
370            assert.areEqual(0, boxes[1].left);
371            assert.areEqual(0, boxes[2].left);
372            assert.areEqual(0, boxes[3].left);
373           
374            assert.areEqual(40, boxes[0].width);
375            assert.areEqual(40, boxes[1].width);
376            assert.areEqual(40, boxes[2].width);
377            assert.areEqual(40, boxes[3].width);
378        }
379    }));
380   
381    suite.add(new Y.Test.Case({
382        name: 'packing',
383       
384        setUp: function() {
385            this.items = [
386                buildFakeChild({getSize: function() {return {width: 10, height: 10};}}),
387                buildFakeChild({getSize: function() {return {width: 10, height: 20};}}),
388                buildFakeChild({getSize: function() {return {width: 10, height: 30};}}),
389                buildFakeChild({getSize: function() {return {width: 10, height: 40};}})
390            ];
391           
392            this.targetSize = {
393                height: 400,
394                width : 100
395            };
396        },
397       
398        testPackStart: function() {
399            this.layout = buildLayout({
400                pack: 'start'
401            });
402           
403            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
404                boxes = calcs.boxes;
405           
406            assert.areEqual(0, boxes[0].top);
407            assert.areEqual(10, boxes[1].top);
408            assert.areEqual(30, boxes[2].top);
409            assert.areEqual(60, boxes[3].top);
410        },
411       
412        testPackCenter: function() {
413            this.layout = buildLayout({
414                pack: 'center'
415            });
416           
417            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
418                boxes = calcs.boxes;
419                       
420            assert.areEqual(150, boxes[0].top);
421            assert.areEqual(160, boxes[1].top);
422            assert.areEqual(180, boxes[2].top);
423            assert.areEqual(210, boxes[3].top);
424        },
425       
426        testPackEnd: function() {
427            this.layout = buildLayout({
428                pack: 'end'
429            });
430           
431            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
432                boxes = calcs.boxes;
433           
434            assert.areEqual(300, boxes[0].top);
435            assert.areEqual(310, boxes[1].top);
436            assert.areEqual(330, boxes[2].top);
437            assert.areEqual(360, boxes[3].top);
438        }
439    }));
440   
441    suite.add(new Y.Test.Case({
442        name: 'meta data from calculated box sizes',
443       
444        setUp: function() {
445            this.layout = buildLayout();
446           
447            this.items = [
448                buildFakeChild({getWidth: function() {return 50;}, flex: 1}),
449                buildFakeChild({getWidth: function() {return 60;}, flex: 1}),
450                buildFakeChild({getWidth: function() {return 10;}, flex: 1}),
451                buildFakeChild({getWidth: function() {return 80;}, flex: 1})
452            ];
453           
454            this.targetSize = {
455                height: 400,
456                width : 100
457            };
458        },
459       
460        testMaxHeight: function() {
461            var calcs = this.layout.calculateChildBoxes(this.items, this.targetSize),
462                meta  = calcs.meta;
463           
464            assert.areEqual(80, meta.maxWidth);
465        }
466    }));
467   
468    suite.add(new Y.Test.Case({
469        name: 'update innerCt size',
470       
471        setUp: function() {
472            this.layout = buildLayout({
473                align  : 'stretch',
474                padding: {
475                    top   : 0,
476                    bottom: 0,
477                    left  : 10,
478                    right : 20
479                }
480            });
481           
482            //fake the values that are calculated during onLayout
483            this.layoutTargetLastSize = {
484                width : 100,
485                height: 400
486            };
487           
488            this.childBoxCache = {
489                meta: {
490                    maxWidth: 150
491                }
492            };
493        },
494       
495        testMaintainsWidthForAlignStretch: function() {
496            var layout = this.layout,
497                width, height;
498           
499            //a fake innerCt element that we can intercept calls to setSize on
500            layout.innerCt = {
501                setSize: function(widthArg, heightArg) {
502                    width  = widthArg;
503                    height = heightArg;
504                }
505            };
506           
507            layout.updateInnerCtSize(this.layoutTargetLastSize, this.childBoxCache);
508           
509            assert.areSame(100, width);
510            assert.areSame(400, height);
511        },
512       
513        //if aligning middle, increase height to accomodate the tallest child
514        testIncreasesWidthForAlignMiddle: function() {
515            this.layout = buildLayout({
516                align  : 'middle',
517                padding: {
518                    top   : 0,
519                    bottom: 0,
520                    left  : 10,
521                    right : 20
522                }
523            });
524           
525            var layout = this.layout,
526                width, height;
527           
528            //a fake innerCt element that we can intercept calls to setSize on
529            layout.innerCt = {
530                setSize: function(widthArg, heightArg) {
531                    width  = widthArg;
532                    height = heightArg;
533                }
534            };
535           
536            layout.updateInnerCtSize(this.layoutTargetLastSize, this.childBoxCache);
537           
538            assert.areSame(180, width);
539            assert.areSame(400, height);
540        }
541    }));
542})();
Note: See TracBrowser for help on using the repository browser.