1
YUI.add('slider-base-tests', function(Y) {
3
var suite = new Y.Test.Suite("Y.Slider");
5
suite.add( new Y.Test.Case({
9
Y.one("body").append('<div id="testbed"></div>');
12
tearDown: function () {
13
Y.one("#testbed").remove(true);
16
"test default construction": function () {
17
Y.Assert.isInstanceOf( Y.Slider, new Y.Slider() );
20
"test SliderBase construction": function () {
21
Y.Assert.isInstanceOf( Y.SliderBase, new Y.SliderBase() );
24
"test render(selector)": function () {
25
Y.one("#testbed").setContent(
26
"<div></div>" + // block element
27
'<div class="floated" style="float:left"></div>' + // float
28
"<p></p>" + // limited block element
29
"<span></span>"); // inline element
31
(new Y.Slider().render("#testbed > div"));
32
(new Y.Slider().render("#testbed > div.floated"));
33
(new Y.Slider().render("#testbed > p"));
34
(new Y.Slider().render("#testbed > span"));
36
var div = Y.one("#testbed > div"),
37
fl = Y.one("#testbed > div.floated"),
38
p = Y.one("#testbed > p"),
39
span = Y.one("#testbed > span");
41
Y.assert( (div.get("offsetHeight") > 0) );
42
Y.assert( (fl.get("offsetHeight") > 0) );
43
Y.assert( (p.get("offsetHeight") > 0) );
44
Y.assert( (span.get("offsetHeight") > 0) );
46
Y.assert( (fl.get("offsetWidth") > 0) );
47
Y.assert( (span.get("offsetWidth") > 0) );
49
Y.Assert.areEqual( 8, div.all("span,img").size() );
50
Y.Assert.areEqual( 8, fl.all("span,img").size() );
51
Y.Assert.areEqual( 8, p.all("span,img").size() );
52
Y.Assert.areEqual( 8, span.all("span,img").size() );
55
"test render( node )": function () {
56
Y.one("#testbed").setContent(
57
"<div></div>" + // block element
58
'<div class="floated" style="float:left"></div>' + // float
59
"<p></p>" + // limited block element
60
"<span></span>"); // inline element
62
var div = Y.one("#testbed > div"),
63
fl = Y.one("#testbed > div.floated"),
64
p = Y.one("#testbed > p"),
65
span = Y.one("#testbed > span");
67
(new Y.Slider().render(div));
68
(new Y.Slider().render(fl));
69
(new Y.Slider().render(p));
70
(new Y.Slider().render(span));
72
Y.assert( (div.get("offsetHeight") > 0) );
73
Y.assert( (fl.get("offsetHeight") > 0) );
74
Y.assert( (p.get("offsetHeight") > 0) );
75
Y.assert( (span.get("offsetHeight") > 0) );
77
Y.assert( (fl.get("offsetWidth") > 0) );
78
Y.assert( (span.get("offsetWidth") > 0) );
80
Y.Assert.areEqual( 8, div.all("span,img").size() );
81
Y.Assert.areEqual( 8, fl.all("span,img").size() );
82
Y.Assert.areEqual( 8, p.all("span,img").size() );
83
Y.Assert.areEqual( 8, span.all("span,img").size() );
86
"test render: selector attrib in constructor": function () {
87
Y.one("#testbed").setContent(
88
"<div></div>" + // block element
89
'<div class="floated" style="float:left"></div>' + // float
90
"<p></p>" + // limited block element
91
"<span></span>"); // inline element
93
(new Y.Slider({ render: "#testbed > div" }));
94
(new Y.Slider({ render: "#testbed > div.floated" }));
95
(new Y.Slider({ render: "#testbed > p" }));
96
(new Y.Slider({ render: "#testbed > span" }));
98
var div = Y.one("#testbed > div"),
99
fl = Y.one("#testbed > div.floated"),
100
p = Y.one("#testbed > p"),
101
span = Y.one("#testbed > span");
103
Y.assert( (div.get("offsetHeight") > 0) );
104
Y.assert( (fl.get("offsetHeight") > 0) );
105
Y.assert( (p.get("offsetHeight") > 0) );
106
Y.assert( (span.get("offsetHeight") > 0) );
108
Y.assert( (fl.get("offsetWidth") > 0) );
109
Y.assert( (span.get("offsetWidth") > 0) );
111
Y.Assert.areEqual( 8, div.all("span,img").size() );
112
Y.Assert.areEqual( 8, fl.all("span,img").size() );
113
Y.Assert.areEqual( 8, p.all("span,img").size() );
114
Y.Assert.areEqual( 8, span.all("span,img").size() );
117
"test render: node attrib in constructor": function () {
118
Y.one("#testbed").setContent(
119
"<div></div>" + // block element
120
'<div class="floated" style="float:left"></div>' + // float
121
"<p></p>" + // limited block element
122
"<span></span>"); // inline element
124
var div = Y.one("#testbed > div"),
125
fl = Y.one("#testbed > div.floated"),
126
p = Y.one("#testbed > p"),
127
span = Y.one("#testbed > span");
129
(new Y.Slider({ render: div }));
130
(new Y.Slider({ render: fl }));
131
(new Y.Slider({ render: p }));
132
(new Y.Slider({ render: span }));
134
Y.assert( (div.get("offsetHeight") > 0) );
135
Y.assert( (fl.get("offsetHeight") > 0) );
136
Y.assert( (p.get("offsetHeight") > 0) );
137
Y.assert( (span.get("offsetHeight") > 0) );
139
Y.assert( (fl.get("offsetWidth") > 0) );
140
Y.assert( (span.get("offsetWidth") > 0) );
142
Y.Assert.areEqual( 8, div.all("span,img").size() );
143
Y.Assert.areEqual( 8, fl.all("span,img").size() );
144
Y.Assert.areEqual( 8, p.all("span,img").size() );
145
Y.Assert.areEqual( 8, span.all("span,img").size() );
148
"test render off DOM": function () {
149
var container = Y.Node.create("<div></div>");
151
(new Y.Slider().render(container));
153
Y.Assert.areEqual( 8, container.all("span,img").size() );
156
"test destroy() before render": function () {
157
var slider = new Y.Slider();
161
Y.Assert.isTrue( slider.get("destroyed") );
164
"test destroy() after render off DOM": function () {
165
var container = Y.Node.create("<div></div>"),
166
slider = new Y.Slider();
168
slider.render( container );
172
Y.Assert.isTrue( slider.get("destroyed") );
174
Y.Assert.isNull( container.get("firstChild") );
177
"test destroy() after render to DOM": function () {
178
var slider = new Y.Slider();
180
slider.render( "#testbed" );
184
Y.Assert.isTrue( slider.get("destroyed") );
186
Y.Assert.isNull( Y.one("#testbed").get("firstChild") );
190
suite.add( new Y.Test.Case({
194
Y.one('body').append('<div id="testbed"></div>');
196
this.slider = new Y.Slider();
199
tearDown: function () {
200
this.slider.destroy();
202
Y.one('#testbed').remove(true);
205
"test getValue() and setValue(v) before render": function () {
208
Y.Assert.areEqual( 0, s.getValue() );
211
Y.Assert.areEqual( 50, s.getValue() );
214
Y.Assert.areEqual( 3, s.getValue() );
216
// out of range constrained by setter
218
Y.Assert.areEqual( 0, s.getValue() );
221
Y.Assert.areEqual( 100, s.getValue() );
222
Y.Assert.areEqual( s.get('value'), s.getValue() );
224
s.set('value', 6.66666);
225
Y.Assert.areEqual( 7, s.getValue() );
226
Y.Assert.areEqual( s.get('value'), s.getValue() );
229
"test getValue() and setValue(v) after render() to hidden container": function () {
230
var container = Y.Node.create('<div></div>'),
233
s.render( container );
235
Y.Assert.areEqual( 0, s.getValue() );
238
Y.Assert.areEqual( 50, s.getValue() );
241
Y.Assert.areEqual( 3, s.getValue() );
244
Y.Assert.areEqual( 0, s.getValue() );
247
Y.Assert.areEqual( 100, s.getValue() );
248
Y.Assert.areEqual( s.get('value'), s.getValue() );
250
s.set('value', 6.66666);
251
Y.Assert.areEqual( 7, s.getValue() );
252
Y.Assert.areEqual( s.get('value'), s.getValue() );
255
"test getValue() and setValue(v) after render() to DOM": function () {
258
s.render('#testbed');
260
Y.Assert.areEqual( 0, s.getValue() );
263
Y.Assert.areEqual( 50, s.getValue() );
266
Y.Assert.areEqual( 3, s.getValue() );
269
Y.Assert.areEqual( 0, s.getValue() );
272
Y.Assert.areEqual( 100, s.getValue() );
273
Y.Assert.areEqual( s.get('value'), s.getValue() );
275
s.set('value', 6.66666);
276
Y.Assert.areEqual( 7, s.getValue() );
277
Y.Assert.areEqual( s.get('value'), s.getValue() );
280
"setValue(v) then render() should position thumb": function () {
284
s.render("#testbed");
286
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle("left"),10) );
289
"setValue(v) after render() should move the thumb": function () {
292
s.render('#testbed');
294
Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
297
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
300
Y.Assert.areEqual( 0, s.getValue() );
301
Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
304
Y.Assert.areEqual( 100, s.getValue() );
305
Y.Assert.areEqual( 135, parseInt(s.thumb.getStyle('left'),10) );
308
"setValue(v) when hidden should still move the thumb": function () {
311
Y.one('#testbed').setStyle('display','none');
313
s.render('#testbed');
315
Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
318
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
321
Y.one('#testbed').setStyle('display','');
322
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
326
suite.add( new Y.Test.Case({
331
// TODO This is a bug. invalid construction value should fallback
332
// to specified attribute default
333
"axis should only accept 'x', 'X', 'y', and 'Y'": true
338
Y.one('body').append('<span id="testbed"></span>');
341
tearDown: function () {
342
Y.one('#testbed').remove(true);
345
"test axis": function () {
346
var testbed = Y.one('#testbed'),
347
slider = new Y.Slider({ axis: 'x' }).render( testbed ),
348
bb = testbed.get("firstChild");
350
Y.assert( (bb.get("offsetWidth") > 100), "offsetWidth > 100" );
351
Y.assert( (bb.get("offsetHeight") < 50), "offsetHeight < 50" );
355
slider = new Y.Slider({ axis: 'y' }).render( testbed );
356
bb = testbed.get("firstChild");
358
Y.assert( (bb.get("offsetHeight") > 100), "offsetHeight > 100" );
359
Y.assert( (bb.get("offsetWidth") < 50), "offsetWidth < 50" );
364
"axis should be writeOnce": function () {
365
var slider = new Y.Slider();
367
Y.Assert.areEqual("x", slider.get("axis"));
369
slider.set('axis', 'y');
370
Y.Assert.areEqual("x", slider.get("axis"));
374
slider = new Y.Slider({ axis: 'y' });
375
Y.Assert.areEqual("y", slider.get("axis"));
377
slider.set('axis', 'x');
378
Y.Assert.areEqual("y", slider.get("axis"));
381
"axis should only accept 'x', 'X', 'y', and 'Y'": function () {
382
var attempts = "a b c 1 2 3 yx yy YX YY vertical vert eks".split(/ /);
384
Y.each( attempts, function ( axis ) {
385
var slider = new Y.Slider({ axis: axis });
386
Y.Assert.areEqual("x", slider.get("axis"));
390
attempts = ['y', 'Y'];
391
Y.each( attempts, function ( axis ) {
392
var slider = new Y.Slider({ axis: axis });
393
Y.Assert.areEqual("y", slider.get("axis"));
398
"test length": function () {
399
Y.one('#testbed').append('<div id="slider"></div><div id="ref"></div>');
401
var testbed = Y.one("#slider"),
405
slider = new Y.Slider().render( testbed );
406
bb = testbed.get('firstChild');
408
delta = bb.get('offsetWidth') - parseInt(slider.get('length'), 10);
412
slider = new Y.Slider({ length: 50 }).render( testbed );
413
bb = testbed.get('firstChild');
415
Y.Assert.areEqual( (50 + delta), bb.get('offsetWidth') );
417
slider.set('length', 300);
418
Y.Assert.areEqual( (300 + delta), bb.get('offsetWidth') );
420
slider.set('length', "-140px");
421
Y.Assert.areEqual( (300 + delta), bb.get('offsetWidth') );
423
ref.setStyle("width", "23.5em");
424
slider.set('length', '23.5em');
425
Y.Assert.areEqual( (ref.get('offsetWidth') + delta), bb.get('offsetWidth') );
429
slider = new Y.Slider({ axis: 'y' }).render( testbed );
430
bb = testbed.get('firstChild');
432
delta = bb.get('offsetHeight') - parseInt(slider.get('length'), 10);
436
slider = new Y.Slider({ axis: 'y', length: 50 }).render( testbed );
437
bb = testbed.get('firstChild');
439
Y.Assert.areEqual( (50 + delta), bb.get('offsetHeight') );
441
slider.set('length', 300);
442
Y.Assert.areEqual( (300 + delta), bb.get('offsetHeight') );
444
slider.set('length', "-140px");
445
Y.Assert.areEqual( (300 + delta), bb.get('offsetHeight') );
447
ref.setStyle("height", "23.5em");
448
slider.set('length', '23.5em');
449
Y.Assert.areEqual( (ref.get('offsetHeight') + delta), bb.get('offsetHeight') );
452
"thumbUrl should default at render()": function () {
453
var slider = new Y.Slider();
455
Y.Assert.isNull( slider.get('thumbUrl') );
457
slider.render('#testbed');
459
Y.Assert.isString( slider.get('thumbUrl') );
464
"thumbUrl should default to sam skin": function () {
465
var slider = new Y.Slider().render("#testbed");
467
Y.Assert.areEqual( Y.config.base + 'slider-base/assets/skins/sam/thumb-x.png', slider.get('thumbUrl') );
472
"thumbUrl should default from the current skin": function () {
473
var testbed = Y.one("#testbed"),
474
slider = new Y.Slider();
476
testbed.addClass("yui3-skin-foo");
478
slider.render( testbed );
480
Y.Assert.areEqual( Y.config.base + 'slider-base/assets/skins/foo/thumb-x.png', slider.get('thumbUrl') );
485
"test clickableRail": function () {
489
"test min": function () {
492
"test max": function () {
495
"test value": function () {
500
suite.add( new Y.Test.Case({
501
name: "Runtime expectations",
506
tearDown: function () {
509
"test ": function () {
514
suite.add( new Y.Test.Case({
520
tearDown: function () {
523
"test ": function () {
528
Y.Test.Runner.add( suite );
531
}, '@VERSION@' ,{requires:['slider-base', 'test']});