~bac/juju-gui/trunkcopy

« back to all changes in this revision

Viewing changes to lib/yui/tests/slider/tests/src/slider.js

  • Committer: kapil.foss at gmail
  • Date: 2012-07-13 18:45:59 UTC
  • Revision ID: kapil.foss@gmail.com-20120713184559-2xl7be17egsrz0c9
reshape

Show diffs side-by-side

added added

removed removed

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