1
var suite = new Y.Test.Suite("Y.Slider");
3
suite.add( new Y.Test.Case({
7
Y.one("body").append('<div id="testbed"></div>');
10
tearDown: function () {
11
Y.one("#testbed").remove(true);
14
"test default construction": function () {
15
Y.Assert.isInstanceOf( Y.Slider, new Y.Slider() );
18
"test SliderBase construction": function () {
19
Y.Assert.isInstanceOf( Y.SliderBase, new Y.SliderBase() );
22
"test render(selector)": function () {
23
Y.one("#testbed").setContent(
24
"<div></div>" + // block element
25
'<div class="floated" style="float:left"></div>' + // float
26
"<p></p>" + // limited block element
27
"<span></span>"); // inline element
29
(new Y.Slider().render("#testbed > div"));
30
(new Y.Slider().render("#testbed > div.floated"));
31
(new Y.Slider().render("#testbed > p"));
32
(new Y.Slider().render("#testbed > span"));
34
var div = Y.one("#testbed > div"),
35
fl = Y.one("#testbed > div.floated"),
36
p = Y.one("#testbed > p"),
37
span = Y.one("#testbed > span");
39
Y.assert( (div.get("offsetHeight") > 0) );
40
Y.assert( (fl.get("offsetHeight") > 0) );
41
Y.assert( (p.get("offsetHeight") > 0) );
42
Y.assert( (span.get("offsetHeight") > 0) );
44
Y.assert( (fl.get("offsetWidth") > 0) );
45
Y.assert( (span.get("offsetWidth") > 0) );
47
Y.Assert.areEqual( 8, div.all("span,img").size() );
48
Y.Assert.areEqual( 8, fl.all("span,img").size() );
49
Y.Assert.areEqual( 8, p.all("span,img").size() );
50
Y.Assert.areEqual( 8, span.all("span,img").size() );
53
"test render( node )": function () {
54
Y.one("#testbed").setContent(
55
"<div></div>" + // block element
56
'<div class="floated" style="float:left"></div>' + // float
57
"<p></p>" + // limited block element
58
"<span></span>"); // inline element
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");
65
(new Y.Slider().render(div));
66
(new Y.Slider().render(fl));
67
(new Y.Slider().render(p));
68
(new Y.Slider().render(span));
70
Y.assert( (div.get("offsetHeight") > 0) );
71
Y.assert( (fl.get("offsetHeight") > 0) );
72
Y.assert( (p.get("offsetHeight") > 0) );
73
Y.assert( (span.get("offsetHeight") > 0) );
75
Y.assert( (fl.get("offsetWidth") > 0) );
76
Y.assert( (span.get("offsetWidth") > 0) );
78
Y.Assert.areEqual( 8, div.all("span,img").size() );
79
Y.Assert.areEqual( 8, fl.all("span,img").size() );
80
Y.Assert.areEqual( 8, p.all("span,img").size() );
81
Y.Assert.areEqual( 8, span.all("span,img").size() );
84
"test render: selector attrib in constructor": function () {
85
Y.one("#testbed").setContent(
86
"<div></div>" + // block element
87
'<div class="floated" style="float:left"></div>' + // float
88
"<p></p>" + // limited block element
89
"<span></span>"); // inline element
91
(new Y.Slider({ render: "#testbed > div" }));
92
(new Y.Slider({ render: "#testbed > div.floated" }));
93
(new Y.Slider({ render: "#testbed > p" }));
94
(new Y.Slider({ render: "#testbed > span" }));
96
var div = Y.one("#testbed > div"),
97
fl = Y.one("#testbed > div.floated"),
98
p = Y.one("#testbed > p"),
99
span = Y.one("#testbed > span");
101
Y.assert( (div.get("offsetHeight") > 0) );
102
Y.assert( (fl.get("offsetHeight") > 0) );
103
Y.assert( (p.get("offsetHeight") > 0) );
104
Y.assert( (span.get("offsetHeight") > 0) );
106
Y.assert( (fl.get("offsetWidth") > 0) );
107
Y.assert( (span.get("offsetWidth") > 0) );
109
Y.Assert.areEqual( 8, div.all("span,img").size() );
110
Y.Assert.areEqual( 8, fl.all("span,img").size() );
111
Y.Assert.areEqual( 8, p.all("span,img").size() );
112
Y.Assert.areEqual( 8, span.all("span,img").size() );
115
"test render: node attrib in constructor": function () {
116
Y.one("#testbed").setContent(
117
"<div></div>" + // block element
118
'<div class="floated" style="float:left"></div>' + // float
119
"<p></p>" + // limited block element
120
"<span></span>"); // inline element
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");
127
(new Y.Slider({ render: div }));
128
(new Y.Slider({ render: fl }));
129
(new Y.Slider({ render: p }));
130
(new Y.Slider({ render: span }));
132
Y.assert( (div.get("offsetHeight") > 0) );
133
Y.assert( (fl.get("offsetHeight") > 0) );
134
Y.assert( (p.get("offsetHeight") > 0) );
135
Y.assert( (span.get("offsetHeight") > 0) );
137
Y.assert( (fl.get("offsetWidth") > 0) );
138
Y.assert( (span.get("offsetWidth") > 0) );
140
Y.Assert.areEqual( 8, div.all("span,img").size() );
141
Y.Assert.areEqual( 8, fl.all("span,img").size() );
142
Y.Assert.areEqual( 8, p.all("span,img").size() );
143
Y.Assert.areEqual( 8, span.all("span,img").size() );
146
"test render off DOM": function () {
147
var container = Y.Node.create("<div></div>");
149
(new Y.Slider().render(container));
151
Y.Assert.areEqual( 8, container.all("span,img").size() );
154
"test destroy() before render": function () {
155
var slider = new Y.Slider();
159
Y.Assert.isTrue( slider.get("destroyed") );
162
"test destroy() after render off DOM": function () {
163
var container = Y.Node.create("<div></div>"),
164
slider = new Y.Slider();
166
slider.render( container );
170
Y.Assert.isTrue( slider.get("destroyed") );
172
Y.Assert.isNull( container.get("firstChild") );
175
"test destroy() after render to DOM": function () {
176
var slider = new Y.Slider();
178
slider.render( "#testbed" );
182
Y.Assert.isTrue( slider.get("destroyed") );
184
Y.Assert.isNull( Y.one("#testbed").get("firstChild") );
188
suite.add( new Y.Test.Case({
192
Y.one('body').append('<div id="testbed"></div>');
194
this.slider = new Y.Slider();
197
tearDown: function () {
198
this.slider.destroy();
200
Y.one('#testbed').remove(true);
203
"test getValue() and setValue(v) before render": function () {
206
Y.Assert.areEqual( 0, s.getValue() );
209
Y.Assert.areEqual( 50, s.getValue() );
212
Y.Assert.areEqual( 3, s.getValue() );
214
// out of range constrained by setter
216
Y.Assert.areEqual( 0, s.getValue() );
219
Y.Assert.areEqual( 100, s.getValue() );
220
Y.Assert.areEqual( s.get('value'), s.getValue() );
222
s.set('value', 6.66666);
223
Y.Assert.areEqual( 7, s.getValue() );
224
Y.Assert.areEqual( s.get('value'), s.getValue() );
227
"test getValue() and setValue(v) after render() to hidden container": function () {
228
var container = Y.Node.create('<div></div>'),
231
s.render( container );
233
Y.Assert.areEqual( 0, s.getValue() );
236
Y.Assert.areEqual( 50, s.getValue() );
239
Y.Assert.areEqual( 3, s.getValue() );
242
Y.Assert.areEqual( 0, s.getValue() );
245
Y.Assert.areEqual( 100, s.getValue() );
246
Y.Assert.areEqual( s.get('value'), s.getValue() );
248
s.set('value', 6.66666);
249
Y.Assert.areEqual( 7, s.getValue() );
250
Y.Assert.areEqual( s.get('value'), s.getValue() );
253
"test getValue() and setValue(v) after render() to DOM": function () {
256
s.render('#testbed');
258
Y.Assert.areEqual( 0, s.getValue() );
261
Y.Assert.areEqual( 50, s.getValue() );
264
Y.Assert.areEqual( 3, s.getValue() );
267
Y.Assert.areEqual( 0, s.getValue() );
270
Y.Assert.areEqual( 100, s.getValue() );
271
Y.Assert.areEqual( s.get('value'), s.getValue() );
273
s.set('value', 6.66666);
274
Y.Assert.areEqual( 7, s.getValue() );
275
Y.Assert.areEqual( s.get('value'), s.getValue() );
278
"setValue(v) then render() should position thumb": function () {
282
s.render("#testbed");
284
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle("left"),10) );
287
"setValue(v) after render() should move the thumb": function () {
290
s.render('#testbed');
292
Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
295
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
298
Y.Assert.areEqual( 0, s.getValue() );
299
Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
302
Y.Assert.areEqual( 100, s.getValue() );
303
Y.Assert.areEqual( 135, parseInt(s.thumb.getStyle('left'),10) );
306
"setValue(v) when hidden should still move the thumb": function () {
309
Y.one('#testbed').setStyle('display','none');
311
s.render('#testbed');
313
Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
316
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
319
Y.one('#testbed').setStyle('display','');
320
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
324
suite.add( new Y.Test.Case({
329
// TODO This is a bug. invalid construction value should fallback
330
// to specified attribute default
331
"axis should only accept 'x', 'X', 'y', and 'Y'": true
336
Y.one('body').append('<span id="testbed"></span>');
339
tearDown: function () {
340
Y.one('#testbed').remove(true);
343
"test axis": function () {
344
var testbed = Y.one('#testbed'),
345
slider = new Y.Slider({ axis: 'x' }).render( testbed ),
346
bb = testbed.get("firstChild");
348
Y.assert( (bb.get("offsetWidth") > 100), "offsetWidth > 100" );
349
Y.assert( (bb.get("offsetHeight") < 50), "offsetHeight < 50" );
353
slider = new Y.Slider({ axis: 'y' }).render( testbed );
354
bb = testbed.get("firstChild");
356
Y.assert( (bb.get("offsetHeight") > 100), "offsetHeight > 100" );
357
Y.assert( (bb.get("offsetWidth") < 50), "offsetWidth < 50" );
362
"axis should be writeOnce": function () {
363
var slider = new Y.Slider();
365
Y.Assert.areEqual("x", slider.get("axis"));
367
slider.set('axis', 'y');
368
Y.Assert.areEqual("x", slider.get("axis"));
372
slider = new Y.Slider({ axis: 'y' });
373
Y.Assert.areEqual("y", slider.get("axis"));
375
slider.set('axis', 'x');
376
Y.Assert.areEqual("y", slider.get("axis"));
379
"axis should only accept 'x', 'X', 'y', and 'Y'": function () {
380
var attempts = "a b c 1 2 3 yx yy YX YY vertical vert eks".split(/ /);
382
Y.each( attempts, function ( axis ) {
383
var slider = new Y.Slider({ axis: axis });
384
Y.Assert.areEqual("x", slider.get("axis"));
388
attempts = ['y', 'Y'];
389
Y.each( attempts, function ( axis ) {
390
var slider = new Y.Slider({ axis: axis });
391
Y.Assert.areEqual("y", slider.get("axis"));
396
"test length": function () {
397
Y.one('#testbed').append('<div id="slider"></div><div id="ref"></div>');
399
var testbed = Y.one("#slider"),
403
slider = new Y.Slider().render( testbed );
404
bb = testbed.get('firstChild');
406
delta = bb.get('offsetWidth') - parseInt(slider.get('length'), 10);
410
slider = new Y.Slider({ length: 50 }).render( testbed );
411
bb = testbed.get('firstChild');
413
Y.Assert.areEqual( (50 + delta), bb.get('offsetWidth') );
415
slider.set('length', 300);
416
Y.Assert.areEqual( (300 + delta), bb.get('offsetWidth') );
418
slider.set('length', "-140px");
419
Y.Assert.areEqual( (300 + delta), bb.get('offsetWidth') );
421
ref.setStyle("width", "23.5em");
422
slider.set('length', '23.5em');
423
Y.Assert.areEqual( (ref.get('offsetWidth') + delta), bb.get('offsetWidth') );
427
slider = new Y.Slider({ axis: 'y' }).render( testbed );
428
bb = testbed.get('firstChild');
430
delta = bb.get('offsetHeight') - parseInt(slider.get('length'), 10);
434
slider = new Y.Slider({ axis: 'y', length: 50 }).render( testbed );
435
bb = testbed.get('firstChild');
437
Y.Assert.areEqual( (50 + delta), bb.get('offsetHeight') );
439
slider.set('length', 300);
440
Y.Assert.areEqual( (300 + delta), bb.get('offsetHeight') );
442
slider.set('length', "-140px");
443
Y.Assert.areEqual( (300 + delta), bb.get('offsetHeight') );
445
ref.setStyle("height", "23.5em");
446
slider.set('length', '23.5em');
447
Y.Assert.areEqual( (ref.get('offsetHeight') + delta), bb.get('offsetHeight') );
450
"thumbUrl should default at render()": function () {
451
var slider = new Y.Slider();
453
Y.Assert.isNull( slider.get('thumbUrl') );
455
slider.render('#testbed');
457
Y.Assert.isString( slider.get('thumbUrl') );
462
"thumbUrl should default to sam skin": function () {
463
var slider = new Y.Slider().render("#testbed");
465
Y.Assert.areEqual( Y.config.base + 'slider-base/assets/skins/sam/thumb-x.png', slider.get('thumbUrl') );
470
"thumbUrl should default from the current skin": function () {
471
var testbed = Y.one("#testbed"),
472
slider = new Y.Slider();
474
testbed.addClass("yui3-skin-foo");
476
slider.render( testbed );
478
Y.Assert.areEqual( Y.config.base + 'slider-base/assets/skins/foo/thumb-x.png', slider.get('thumbUrl') );
483
"test clickableRail": function () {
487
"test min": function () {
490
"test max": function () {
493
"test value": function () {
498
suite.add( new Y.Test.Case({
499
name: "Runtime expectations",
504
tearDown: function () {
507
"test ": function () {
512
suite.add( new Y.Test.Case({
518
tearDown: function () {
521
"test ": function () {
526
Y.Test.Runner.add( suite );