~smagoun/whoopsie/whoopsie-lp1017637

« back to all changes in this revision

Viewing changes to backend/stats/static/js/yui/tests/slider/tests/slider-base-tests.js

  • Committer: Evan Dandrea
  • Date: 2012-05-09 05:53:45 UTC
  • Revision ID: evan.dandrea@canonical.com-20120509055345-z2j41tmcbf4as5uf
The backend now lives in lp:daisy and the website (errors.ubuntu.com) now lives in lp:errors.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
YUI.add('slider-base-tests', function(Y) {
2
 
 
3
 
// copied this from event-key-test.js to add tests for changing value by keyboard
4
 
Y.Node.prototype.key = function (keyCode, charCode, mods, type) {
5
 
    var simulate = Y.Event.simulate,
6
 
        el       = this._node,
7
 
        config   = Y.merge(mods || {});
8
 
 
9
 
    if (type) {
10
 
        if (type === 'keypress') {
11
 
            config.charCode = config.keyCode = config.which = charCode || keyCode;
12
 
        } else {
13
 
            config.keyCode = config.which = keyCode;
14
 
        }
15
 
        simulate(el, type, config);
16
 
    } else {
17
 
        config.keyCode = config.which = keyCode;
18
 
        simulate(el, 'keydown', config);
19
 
        simulate(el, 'keyup', config);
20
 
 
21
 
        config.charCode = config.keyCode = config.which = charCode || keyCode;
22
 
        simulate(el, 'keypress', config);
23
 
    }
24
 
};
25
 
// END   copied this from event-key-test.js to add tests for changing value by keyboard
26
 
 
27
 
var suite = new Y.Test.Suite("Y.Slider");
28
 
 
29
 
suite.add( new Y.Test.Case({
30
 
    name: "Lifecycle",
31
 
 
32
 
    setUp: function () {
33
 
        Y.one("body").append('<div id="testbed"></div>');
34
 
    },
35
 
 
36
 
    tearDown: function () {
37
 
        Y.one("#testbed").remove(true);
38
 
    },
39
 
 
40
 
    "test default construction": function () {
41
 
        Y.Assert.isInstanceOf( Y.Slider, new Y.Slider() );
42
 
    },
43
 
 
44
 
    "test SliderBase construction": function () {
45
 
        Y.Assert.isInstanceOf( Y.SliderBase, new Y.SliderBase() );
46
 
    },
47
 
 
48
 
    "test render(selector)": function () {
49
 
        Y.one("#testbed").setContent(
50
 
            "<div></div>" +   // block element
51
 
            '<div class="floated" style="float:left"></div>' + // float
52
 
            "<p></p>" +       // limited block element
53
 
            "<span></span>"); // inline element
54
 
 
55
 
        (new Y.Slider().render("#testbed > div"));
56
 
        (new Y.Slider().render("#testbed > div.floated"));
57
 
        (new Y.Slider().render("#testbed > p"));
58
 
        (new Y.Slider().render("#testbed > span"));
59
 
 
60
 
        var div  = Y.one("#testbed > div"),
61
 
            fl   = Y.one("#testbed > div.floated"),
62
 
            p    = Y.one("#testbed > p"),
63
 
            span = Y.one("#testbed > span");
64
 
 
65
 
        Y.assert( (div.get("offsetHeight") > 0) );
66
 
        Y.assert( (fl.get("offsetHeight") > 0) );
67
 
        Y.assert( (p.get("offsetHeight") > 0) );
68
 
        Y.assert( (span.get("offsetHeight") > 0) );
69
 
 
70
 
        Y.assert( (fl.get("offsetWidth") > 0) );
71
 
        Y.assert( (span.get("offsetWidth") > 0) );
72
 
 
73
 
        Y.Assert.areEqual( 8, div.all("span,img").size() );
74
 
        Y.Assert.areEqual( 8, fl.all("span,img").size() );
75
 
        Y.Assert.areEqual( 8, p.all("span,img").size() );
76
 
        Y.Assert.areEqual( 8, span.all("span,img").size() );
77
 
    },
78
 
 
79
 
    "test render( node )": function () {
80
 
        Y.one("#testbed").setContent(
81
 
            "<div></div>" +   // block element
82
 
            '<div class="floated" style="float:left"></div>' + // float
83
 
            "<p></p>" +       // limited block element
84
 
            "<span></span>"); // inline element
85
 
 
86
 
        var div  = Y.one("#testbed > div"),
87
 
            fl   = Y.one("#testbed > div.floated"),
88
 
            p    = Y.one("#testbed > p"),
89
 
            span = Y.one("#testbed > span");
90
 
 
91
 
        (new Y.Slider().render(div));
92
 
        (new Y.Slider().render(fl));
93
 
        (new Y.Slider().render(p));
94
 
        (new Y.Slider().render(span));
95
 
 
96
 
        Y.assert( (div.get("offsetHeight") > 0) );
97
 
        Y.assert( (fl.get("offsetHeight") > 0) );
98
 
        Y.assert( (p.get("offsetHeight") > 0) );
99
 
        Y.assert( (span.get("offsetHeight") > 0) );
100
 
 
101
 
        Y.assert( (fl.get("offsetWidth") > 0) );
102
 
        Y.assert( (span.get("offsetWidth") > 0) );
103
 
 
104
 
        Y.Assert.areEqual( 8, div.all("span,img").size() );
105
 
        Y.Assert.areEqual( 8, fl.all("span,img").size() );
106
 
        Y.Assert.areEqual( 8, p.all("span,img").size() );
107
 
        Y.Assert.areEqual( 8, span.all("span,img").size() );
108
 
    },
109
 
 
110
 
    "test render: selector attrib in constructor": function () {
111
 
        Y.one("#testbed").setContent(
112
 
            "<div></div>" +   // block element
113
 
            '<div class="floated" style="float:left"></div>' + // float
114
 
            "<p></p>" +       // limited block element
115
 
            "<span></span>"); // inline element
116
 
 
117
 
        (new Y.Slider({ render: "#testbed > div" }));
118
 
        (new Y.Slider({ render: "#testbed > div.floated" }));
119
 
        (new Y.Slider({ render: "#testbed > p" }));
120
 
        (new Y.Slider({ render: "#testbed > span" }));
121
 
 
122
 
        var div  = Y.one("#testbed > div"),
123
 
            fl   = Y.one("#testbed > div.floated"),
124
 
            p    = Y.one("#testbed > p"),
125
 
            span = Y.one("#testbed > span");
126
 
 
127
 
        Y.assert( (div.get("offsetHeight") > 0) );
128
 
        Y.assert( (fl.get("offsetHeight") > 0) );
129
 
        Y.assert( (p.get("offsetHeight") > 0) );
130
 
        Y.assert( (span.get("offsetHeight") > 0) );
131
 
 
132
 
        Y.assert( (fl.get("offsetWidth") > 0) );
133
 
        Y.assert( (span.get("offsetWidth") > 0) );
134
 
 
135
 
        Y.Assert.areEqual( 8, div.all("span,img").size() );
136
 
        Y.Assert.areEqual( 8, fl.all("span,img").size() );
137
 
        Y.Assert.areEqual( 8, p.all("span,img").size() );
138
 
        Y.Assert.areEqual( 8, span.all("span,img").size() );
139
 
    },
140
 
 
141
 
    "test render: node attrib in constructor": function () {
142
 
        Y.one("#testbed").setContent(
143
 
            "<div></div>" +   // block element
144
 
            '<div class="floated" style="float:left"></div>' + // float
145
 
            "<p></p>" +       // limited block element
146
 
            "<span></span>"); // inline element
147
 
 
148
 
        var div  = Y.one("#testbed > div"),
149
 
            fl   = Y.one("#testbed > div.floated"),
150
 
            p    = Y.one("#testbed > p"),
151
 
            span = Y.one("#testbed > span");
152
 
 
153
 
        (new Y.Slider({ render: div }));
154
 
        (new Y.Slider({ render: fl }));
155
 
        (new Y.Slider({ render: p }));
156
 
        (new Y.Slider({ render: span }));
157
 
 
158
 
        Y.assert( (div.get("offsetHeight") > 0) );
159
 
        Y.assert( (fl.get("offsetHeight") > 0) );
160
 
        Y.assert( (p.get("offsetHeight") > 0) );
161
 
        Y.assert( (span.get("offsetHeight") > 0) );
162
 
 
163
 
        Y.assert( (fl.get("offsetWidth") > 0) );
164
 
        Y.assert( (span.get("offsetWidth") > 0) );
165
 
 
166
 
        Y.Assert.areEqual( 8, div.all("span,img").size() );
167
 
        Y.Assert.areEqual( 8, fl.all("span,img").size() );
168
 
        Y.Assert.areEqual( 8, p.all("span,img").size() );
169
 
        Y.Assert.areEqual( 8, span.all("span,img").size() );
170
 
    },
171
 
 
172
 
    "test render off DOM": function () {
173
 
        var container = Y.Node.create("<div></div>");
174
 
 
175
 
        (new Y.Slider().render(container));
176
 
 
177
 
        Y.Assert.areEqual( 8, container.all("span,img").size() );
178
 
    },
179
 
 
180
 
    "test destroy() before render": function () {
181
 
        var slider = new Y.Slider();
182
 
 
183
 
        slider.destroy();
184
 
 
185
 
        Y.Assert.isTrue( slider.get("destroyed") );
186
 
    },
187
 
 
188
 
    "test destroy() after render off DOM": function () {
189
 
        var container = Y.Node.create("<div></div>"),
190
 
            slider = new Y.Slider();
191
 
 
192
 
        slider.render( container );
193
 
 
194
 
        slider.destroy();
195
 
 
196
 
        Y.Assert.isTrue( slider.get("destroyed") );
197
 
 
198
 
        Y.Assert.isNull( container.get("firstChild") );
199
 
    },
200
 
 
201
 
    "test destroy() after render to DOM": function () {
202
 
        var slider = new Y.Slider();
203
 
 
204
 
        slider.render( "#testbed" );
205
 
 
206
 
        slider.destroy();
207
 
 
208
 
        Y.Assert.isTrue( slider.get("destroyed") );
209
 
 
210
 
        Y.Assert.isNull( Y.one("#testbed").get("firstChild") );
211
 
    }
212
 
}));
213
 
 
214
 
suite.add( new Y.Test.Case({
215
 
    name: "API",
216
 
 
217
 
    setUp: function () {
218
 
        Y.one('body').append('<div id="testbed"></div>');
219
 
 
220
 
        this.slider = new Y.Slider();
221
 
    },
222
 
 
223
 
    tearDown: function () {
224
 
        this.slider.destroy();
225
 
 
226
 
        Y.one('#testbed').remove(true);
227
 
    },
228
 
 
229
 
    "test getValue() and setValue(v) before render": function () {
230
 
        var s = this.slider;
231
 
 
232
 
        Y.Assert.areEqual( 0, s.getValue() );
233
 
 
234
 
        s.setValue(50);
235
 
        Y.Assert.areEqual( 50, s.getValue() );
236
 
 
237
 
        s.setValue(3.3333);
238
 
        Y.Assert.areEqual( 3, s.getValue() );
239
 
 
240
 
        // out of range constrained by setter
241
 
        s.setValue(-10);
242
 
        Y.Assert.areEqual( 0, s.getValue() );
243
 
 
244
 
        s.setValue(110);
245
 
        Y.Assert.areEqual( 100, s.getValue() );
246
 
        Y.Assert.areEqual( s.get('value'), s.getValue() );
247
 
 
248
 
        s.set('value', 6.66666);
249
 
        Y.Assert.areEqual( 7, s.getValue() );
250
 
        Y.Assert.areEqual( s.get('value'), s.getValue() );
251
 
    },
252
 
 
253
 
    "test getValue() and setValue(v) after render() to hidden container": function () {
254
 
        var container = Y.Node.create('<div></div>'),
255
 
            s = this.slider;
256
 
 
257
 
        s.render( container );
258
 
 
259
 
        Y.Assert.areEqual( 0, s.getValue() );
260
 
 
261
 
        s.setValue(50);
262
 
        Y.Assert.areEqual( 50, s.getValue() );
263
 
 
264
 
        s.setValue(3.3333);
265
 
        Y.Assert.areEqual( 3, s.getValue() );
266
 
 
267
 
        s.setValue(-10);
268
 
        Y.Assert.areEqual( 0, s.getValue() );
269
 
 
270
 
        s.setValue(110);
271
 
        Y.Assert.areEqual( 100, s.getValue() );
272
 
        Y.Assert.areEqual( s.get('value'), s.getValue() );
273
 
 
274
 
        s.set('value', 6.66666);
275
 
        Y.Assert.areEqual( 7, s.getValue() );
276
 
        Y.Assert.areEqual( s.get('value'), s.getValue() );
277
 
    },
278
 
 
279
 
    "test getValue() and setValue(v) after render() to DOM": function () {
280
 
        var s = this.slider;
281
 
 
282
 
        s.render('#testbed');
283
 
 
284
 
        Y.Assert.areEqual( 0, s.getValue() );
285
 
 
286
 
        s.setValue(50);
287
 
        Y.Assert.areEqual( 50, s.getValue() );
288
 
 
289
 
        s.setValue(3.3333);
290
 
        Y.Assert.areEqual( 3, s.getValue() );
291
 
 
292
 
        s.setValue(-10);
293
 
        Y.Assert.areEqual( 0, s.getValue() );
294
 
 
295
 
        s.setValue(110);
296
 
        Y.Assert.areEqual( 100, s.getValue() );
297
 
        Y.Assert.areEqual( s.get('value'), s.getValue() );
298
 
 
299
 
        s.set('value', 6.66666);
300
 
        Y.Assert.areEqual( 7, s.getValue() );
301
 
        Y.Assert.areEqual( s.get('value'), s.getValue() );
302
 
    },
303
 
 
304
 
    "setValue(v) then render() should position thumb": function () {
305
 
        var s = this.slider;
306
 
 
307
 
        s.setValue(20);
308
 
        s.render("#testbed");
309
 
 
310
 
        Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle("left"),10) );
311
 
    },
312
 
 
313
 
    "setValue(v) after render() should move the thumb": function () {
314
 
        var s = this.slider;
315
 
 
316
 
        s.render('#testbed');
317
 
 
318
 
        Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
319
 
 
320
 
        s.setValue(20);
321
 
        Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
322
 
 
323
 
        s.setValue(0);
324
 
        Y.Assert.areEqual( 0, s.getValue() );
325
 
        Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
326
 
 
327
 
        s.setValue(100);
328
 
        Y.Assert.areEqual( 100, s.getValue() );
329
 
        Y.Assert.areEqual( 135, parseInt(s.thumb.getStyle('left'),10) );
330
 
    },
331
 
 
332
 
    "setValue(v) when hidden should still move the thumb": function () {
333
 
        var s = this.slider;
334
 
 
335
 
        Y.one('#testbed').setStyle('display','none');
336
 
 
337
 
        s.render('#testbed');
338
 
 
339
 
        Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
340
 
 
341
 
        s.setValue(20);
342
 
        Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
343
 
 
344
 
 
345
 
        Y.one('#testbed').setStyle('display','');
346
 
        Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
347
 
    }
348
 
}));
349
 
 
350
 
suite.add( new Y.Test.Case({
351
 
    name: "Attributes",
352
 
 
353
 
    _should: {
354
 
        fail: {
355
 
            // TODO This is a bug. invalid construction value should fallback
356
 
            // to specified attribute default
357
 
            "axis should only accept 'x', 'X', 'y', and 'Y'": true
358
 
        }
359
 
    },
360
 
 
361
 
    setUp: function () {
362
 
        Y.one('body').append('<span id="testbed"></span>');
363
 
    },
364
 
 
365
 
    tearDown: function () {
366
 
        Y.one('#testbed').remove(true);
367
 
    },
368
 
 
369
 
    "test axis": function () {
370
 
        var testbed = Y.one('#testbed'),
371
 
            slider = new Y.Slider({ axis: 'x' }).render( testbed ),
372
 
            bb = testbed.get("firstChild");
373
 
 
374
 
        Y.assert( (bb.get("offsetWidth") > 100), "offsetWidth > 100" );
375
 
        Y.assert( (bb.get("offsetHeight") < 50), "offsetHeight < 50" );
376
 
 
377
 
        slider.destroy();
378
 
 
379
 
        slider = new Y.Slider({ axis: 'y' }).render( testbed );
380
 
        bb = testbed.get("firstChild");
381
 
 
382
 
        Y.assert( (bb.get("offsetHeight") > 100), "offsetHeight > 100" );
383
 
        Y.assert( (bb.get("offsetWidth") < 50), "offsetWidth < 50" );
384
 
 
385
 
        slider.destroy();
386
 
    },
387
 
 
388
 
    "axis should be writeOnce": function () {
389
 
        var slider = new Y.Slider();
390
 
 
391
 
        Y.Assert.areEqual("x", slider.get("axis"));
392
 
 
393
 
        slider.set('axis', 'y');
394
 
        Y.Assert.areEqual("x", slider.get("axis"));
395
 
 
396
 
        slider.destroy();
397
 
 
398
 
        slider = new Y.Slider({ axis: 'y' });
399
 
        Y.Assert.areEqual("y", slider.get("axis"));
400
 
 
401
 
        slider.set('axis', 'x');
402
 
        Y.Assert.areEqual("y", slider.get("axis"));
403
 
    },
404
 
 
405
 
    "axis should only accept 'x', 'X', 'y', and 'Y'": function () {
406
 
        var attempts = "a b c 1 2 3 yx yy YX YY vertical vert eks".split(/ /);
407
 
 
408
 
        Y.each( attempts, function ( axis ) {
409
 
            var slider = new Y.Slider({ axis: axis });
410
 
            Y.Assert.areEqual("x", slider.get("axis"));
411
 
            slider.destroy();
412
 
        });
413
 
 
414
 
        attempts = ['y', 'Y'];
415
 
        Y.each( attempts, function ( axis ) {
416
 
            var slider = new Y.Slider({ axis: axis });
417
 
            Y.Assert.areEqual("y", slider.get("axis"));
418
 
            slider.destroy();
419
 
        });
420
 
    },
421
 
 
422
 
    "test length": function () {
423
 
        Y.one('#testbed').append('<div id="slider"></div><div id="ref"></div>');
424
 
 
425
 
        var testbed = Y.one("#slider"),
426
 
            ref     = Y.one("#ref"),
427
 
            slider, delta, bb;
428
 
 
429
 
        slider = new Y.Slider().render( testbed );
430
 
        bb = testbed.get('firstChild');
431
 
 
432
 
        delta = bb.get('offsetWidth') - parseInt(slider.get('length'), 10);
433
 
 
434
 
        slider.destroy();
435
 
 
436
 
        slider = new Y.Slider({ length: 50 }).render( testbed );
437
 
        bb = testbed.get('firstChild');
438
 
 
439
 
        Y.Assert.areEqual( (50 + delta), bb.get('offsetWidth') );
440
 
 
441
 
        slider.set('length', 300);
442
 
        Y.Assert.areEqual( (300 + delta), bb.get('offsetWidth') );
443
 
 
444
 
        slider.set('length', "-140px");
445
 
        Y.Assert.areEqual( (300 + delta), bb.get('offsetWidth') );
446
 
 
447
 
        ref.setStyle("width", "23.5em");
448
 
        slider.set('length', '23.5em');
449
 
        Y.Assert.areEqual( (ref.get('offsetWidth') + delta), bb.get('offsetWidth') );
450
 
 
451
 
        slider.destroy();
452
 
 
453
 
        slider = new Y.Slider({ axis: 'y' }).render( testbed );
454
 
        bb = testbed.get('firstChild');
455
 
 
456
 
        delta = bb.get('offsetHeight') - parseInt(slider.get('length'), 10);
457
 
 
458
 
        slider.destroy();
459
 
 
460
 
        slider = new Y.Slider({ axis: 'y', length: 50 }).render( testbed );
461
 
        bb = testbed.get('firstChild');
462
 
 
463
 
        Y.Assert.areEqual( (50 + delta), bb.get('offsetHeight') );
464
 
 
465
 
        slider.set('length', 300);
466
 
        Y.Assert.areEqual( (300 + delta), bb.get('offsetHeight') );
467
 
 
468
 
        slider.set('length', "-140px");
469
 
        Y.Assert.areEqual( (300 + delta), bb.get('offsetHeight') );
470
 
 
471
 
        ref.setStyle("height", "23.5em");
472
 
        slider.set('length', '23.5em');
473
 
        Y.Assert.areEqual( (ref.get('offsetHeight') + delta), bb.get('offsetHeight') );
474
 
    },
475
 
 
476
 
    "thumbUrl should default at render()": function () {
477
 
        var slider = new Y.Slider();
478
 
        
479
 
        Y.Assert.isNull( slider.get('thumbUrl') );
480
 
        
481
 
        slider.render('#testbed');
482
 
 
483
 
        Y.Assert.isString( slider.get('thumbUrl') );
484
 
 
485
 
        slider.destroy();
486
 
    },
487
 
 
488
 
    "thumbUrl should default to sam skin": function () {
489
 
        var slider = new Y.Slider().render("#testbed");
490
 
 
491
 
        Y.Assert.areEqual( Y.config.base + 'slider-base/assets/skins/sam/thumb-x.png', slider.get('thumbUrl') );
492
 
 
493
 
        slider.destroy();
494
 
    },
495
 
 
496
 
    "thumbUrl should default from the current skin": function () {
497
 
        var testbed = Y.one("#testbed"),
498
 
            slider  = new Y.Slider();
499
 
 
500
 
        testbed.addClass("yui3-skin-foo");
501
 
 
502
 
        slider.render( testbed );
503
 
 
504
 
        Y.Assert.areEqual( Y.config.base + 'slider-base/assets/skins/foo/thumb-x.png', slider.get('thumbUrl') );
505
 
 
506
 
        slider.destroy();
507
 
    },
508
 
 
509
 
    "test clickableRail": function () {
510
 
        
511
 
    },
512
 
 
513
 
    "test min": function () {
514
 
    },
515
 
 
516
 
    "test max": function () {
517
 
    },
518
 
 
519
 
    "test value": function () {
520
 
    }
521
 
}));
522
 
 
523
 
 
524
 
suite.add( new Y.Test.Case({
525
 
    name: "Keyboard",
526
 
 
527
 
    _should: {
528
 
        fail: {
529
 
            "test keyboard input and resultant value change, when Slider length is less than max - min": 2531498
530
 
        }
531
 
    },
532
 
 
533
 
    setUp: function () {
534
 
        Y.one("body").append('<div id="testbed"></div>');
535
 
    },
536
 
 
537
 
    tearDown: function () {
538
 
        Y.one("#testbed").remove(true);
539
 
    },
540
 
 
541
 
    "test keyboard input": function () {
542
 
        var slider = new Y.Slider({
543
 
            length: '350px',
544
 
            min   : 0,
545
 
            max   : 100,
546
 
            value : 50
547
 
        });
548
 
 
549
 
        slider.render( "#testbed" );
550
 
        Y.Assert.areEqual( 50, slider.get('value') );
551
 
        var thumb = slider.thumb;
552
 
        thumb.key(33); // pageUp  // .key() method is at top of this file
553
 
        Y.Assert.areEqual(60, slider.get('value'));
554
 
        thumb.key(38); // up
555
 
        Y.Assert.areEqual(61, slider.get('value'));
556
 
        thumb.key(39); // right
557
 
        Y.Assert.areEqual(62, slider.get('value'));
558
 
        thumb.key(33); // pageUp
559
 
        Y.Assert.areEqual(72, slider.get('value'));
560
 
        thumb.key(40); // down
561
 
        Y.Assert.areEqual(71, slider.get('value'));
562
 
        thumb.key(34); // pageDown
563
 
        Y.Assert.areEqual(61, slider.get('value'));
564
 
        thumb.key(37); // left
565
 
        thumb.key(37); // left
566
 
        Y.Assert.areEqual(59, slider.get('value'));
567
 
        thumb.key(36); // home 
568
 
        Y.Assert.areEqual(0, slider.get('value'));
569
 
        thumb.key(35); // end 
570
 
        Y.Assert.areEqual(100, slider.get('value'));
571
 
        // beyond max
572
 
        thumb.key(33); // pageUp
573
 
        Y.Assert.areEqual(100, slider.get('value'));
574
 
        thumb.key(38); // up
575
 
        Y.Assert.areEqual(100, slider.get('value'));
576
 
        thumb.key(39); // right
577
 
        Y.Assert.areEqual(100, slider.get('value'));
578
 
 
579
 
        // min and beyond
580
 
        slider.set('value', 0);
581
 
        thumb.key(34); // pageDown
582
 
        Y.Assert.areEqual(0, slider.get('value'), "= pageDown at min");
583
 
        thumb.key(40); // down
584
 
        Y.Assert.areEqual(0, slider.get('value'));
585
 
        thumb.key(37); // left
586
 
        Y.Assert.areEqual(0, slider.get('value'));
587
 
 
588
 
        slider.destroy();
589
 
 
590
 
    },
591
 
    
592
 
    /*
593
 
     * This tests changing the value by one unit
594
 
     * that would not move the slider a full pixel
595
 
     * and because of ticket #2531498, was
596
 
     * changing the value back to previous value
597
 
     * to match the thumb position
598
 
     */                             
599
 
    "test keyboard input and resultant value change, when Slider length is less than max - min": function () {
600
 
        var slider = new Y.Slider({
601
 
            length: '30px',  // length less than max - min
602
 
            min   : 0,
603
 
            max   : 100,
604
 
            value : 0
605
 
        });
606
 
 
607
 
        slider.render( "#testbed" );
608
 
        Y.Assert.areEqual( 0, slider.get('value') );
609
 
        var thumb = slider.thumb;
610
 
        thumb.key(38); // up   // .key() method is at top of this file
611
 
        Y.Assert.areEqual(1, slider.get('value'), "** init at 0, then keyUp");
612
 
 
613
 
        slider.destroy();
614
 
 
615
 
    },
616
 
    
617
 
    "test ARIA attributes while values change by keyboard input": function () {
618
 
        var slider = new Y.Slider({
619
 
            length: '300px',  // length less than max - min
620
 
            min   : 0,
621
 
            max   : 100,
622
 
            value : 50
623
 
        });
624
 
 
625
 
        slider.render( "#testbed" );
626
 
        Y.Assert.areEqual( 50, slider.get('value') );
627
 
        var thumb = slider.thumb;
628
 
        Y.Assert.areEqual(0, thumb.getAttribute('aria-valuemin'));
629
 
        Y.Assert.areEqual(100, thumb.getAttribute('aria-valuemax'));
630
 
        thumb.key(38); // up   // .key() method is at top of this file
631
 
        Y.Assert.areEqual(51, thumb.getAttribute('aria-valuenow'));
632
 
        Y.Assert.areEqual(51, thumb.getAttribute('aria-valuetext'));
633
 
        thumb.key(33); // pageUp
634
 
        Y.Assert.areEqual(61, thumb.getAttribute('aria-valuenow'));
635
 
        Y.Assert.areEqual(61, thumb.getAttribute('aria-valuetext'));
636
 
 
637
 
        slider.destroy();
638
 
    }
639
 
}));
640
 
 
641
 
 
642
 
suite.add( new Y.Test.Case({
643
 
    name: "Runtime expectations",
644
 
 
645
 
    setUp: function () {
646
 
    },
647
 
 
648
 
    tearDown: function () {
649
 
    },
650
 
 
651
 
    "test ": function () {
652
 
    }
653
 
}));
654
 
 
655
 
/*
656
 
suite.add( new Y.Test.Case({
657
 
    name: "Bugs",
658
 
 
659
 
    setUp: function () {
660
 
    },
661
 
 
662
 
    tearDown: function () {
663
 
    },
664
 
 
665
 
    "test ": function () {
666
 
    }
667
 
}));
668
 
*/
669
 
 
670
 
Y.Test.Runner.add( suite );
671
 
 
672
 
 
673
 
}, '@VERSION@' ,{requires:['slider-base', 'test']});