slider-tests.js revision 2e7280e28d58d05e501e1fd7388c507257a2db7b
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. ZakasYUI.add('slider-tests', function(Y) {
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas// copied this from event-key-test.js to add tests for changing value by keyboard
b33d3bf66f037e3c87d1b857d3706eee0072e0cdNicholasY.Node.prototype.key = function (keyCode, charCode, mods, type) {
dccf3aebe7d408b6ba58f67cc6793da9dcbb4696Nicholas var simulate = Y.Event.simulate,
dccf3aebe7d408b6ba58f67cc6793da9dcbb4696Nicholas el = this._node,
dccf3aebe7d408b6ba58f67cc6793da9dcbb4696Nicholas config = Y.merge(mods || {});
dccf3aebe7d408b6ba58f67cc6793da9dcbb4696Nicholas
dccf3aebe7d408b6ba58f67cc6793da9dcbb4696Nicholas if (type) {
f6d5fae9a8e0cb7ad096e821b651d3cd51d88024Nicholas if (type === 'keypress') {
f6d5fae9a8e0cb7ad096e821b651d3cd51d88024Nicholas config.charCode = config.keyCode = config.which = charCode || keyCode;
f6d5fae9a8e0cb7ad096e821b651d3cd51d88024Nicholas } else {
f6d5fae9a8e0cb7ad096e821b651d3cd51d88024Nicholas config.keyCode = config.which = keyCode;
f6d5fae9a8e0cb7ad096e821b651d3cd51d88024Nicholas }
f6d5fae9a8e0cb7ad096e821b651d3cd51d88024Nicholas simulate(el, type, config);
f6d5fae9a8e0cb7ad096e821b651d3cd51d88024Nicholas } else {
e2be19408a54a8ec1c9e810ea4eaa2f0ac7cda07george puckett config.keyCode = config.which = keyCode;
e2be19408a54a8ec1c9e810ea4eaa2f0ac7cda07george puckett simulate(el, 'keydown', config);
e2be19408a54a8ec1c9e810ea4eaa2f0ac7cda07george puckett simulate(el, 'keyup', config);
3311c55c55c920279703d40fac28a11fe9d8494cNicholas
0b5e1d37b52292808888e5c0674f90c2bbc3c210Nicholas config.charCode = config.keyCode = config.which = charCode || keyCode;
9062ea13d64c4cc70df35e5e10a77e55f2029d41Nicholas simulate(el, 'keypress', config);
9062ea13d64c4cc70df35e5e10a77e55f2029d41Nicholas }
3311c55c55c920279703d40fac28a11fe9d8494cNicholas};
a2def8478a773d7a61b1d17ab98383371861d7baNicholas// END copied this from event-key-test.js to add tests for changing value by keyboard
300ddd61d98200ad4f5bfe82c94ba0a802349bdaNicholas
a2def8478a773d7a61b1d17ab98383371861d7baNicholasvar suite = new Y.Test.Suite("Y.Slider");
359c147bb7d734b478b47d664e9f09e5f2f47cf1Nicholas
359c147bb7d734b478b47d664e9f09e5f2f47cf1Nicholassuite.add( new Y.Test.Case({
359c147bb7d734b478b47d664e9f09e5f2f47cf1Nicholas name: "Lifecycle",
52573a9e39b00926b9b978f85340102df4b4063dNicholas
52573a9e39b00926b9b978f85340102df4b4063dNicholas setUp: function () {
52573a9e39b00926b9b978f85340102df4b4063dNicholas Y.one("body").append('<div id="testbed"></div>');
52573a9e39b00926b9b978f85340102df4b4063dNicholas },
52573a9e39b00926b9b978f85340102df4b4063dNicholas
16a523a00015233b8508de0e296d2a69bbdd2722Nicholas tearDown: function () {
0b5e1d37b52292808888e5c0674f90c2bbc3c210Nicholas Y.one("#testbed").remove(true);
cd4f0c50c6a7faa3fd8e38236929bb9b37bc11b7Nicholas C. Zakas },
b5983d53e5f50f3137991a80821078a32a4be3b3Nicholas C. Zakas
b044439bdcfcb383ec0e2f5db45fea4acea4fb9cNicholas C. Zakas "test default construction": function () {
b5983d53e5f50f3137991a80821078a32a4be3b3Nicholas C. Zakas Y.Assert.isInstanceOf( Y.Slider, new Y.Slider() );
3b582a24e4eec5a8ccf9dce2c722ee81023e6dbaNicholas C. Zakas },
cd4f0c50c6a7faa3fd8e38236929bb9b37bc11b7Nicholas C. Zakas
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas "test SliderBase construction": function () {
b33d3bf66f037e3c87d1b857d3706eee0072e0cdNicholas Y.Assert.isInstanceOf( Y.SliderBase, new Y.SliderBase() );
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas },
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas "test render(selector)": function () {
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas Y.one("#testbed").setContent(
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas "<div></div>" + // block element
7a2fdaed1646e4131f96888dce8170e96e79a5b4Nicholas C. Zakas '<div class="floated" style="float:left"></div>' + // float
7a2fdaed1646e4131f96888dce8170e96e79a5b4Nicholas C. Zakas "<p></p>" + // limited block element
7a2fdaed1646e4131f96888dce8170e96e79a5b4Nicholas C. Zakas "<span></span>"); // inline element
7a2fdaed1646e4131f96888dce8170e96e79a5b4Nicholas C. Zakas
7a2fdaed1646e4131f96888dce8170e96e79a5b4Nicholas C. Zakas (new Y.Slider().render("#testbed > div"));
6eccb99d95a457b8714d60222b7bbc2ebaa0c1f2Nicholas C. Zakas (new Y.Slider().render("#testbed > div.floated"));
6eccb99d95a457b8714d60222b7bbc2ebaa0c1f2Nicholas C. Zakas (new Y.Slider().render("#testbed > p"));
a8240e5d8edb13039000a849e3b9ba2e50d93c55Nicholas C. Zakas (new Y.Slider().render("#testbed > span"));
f28a71a935fd9c3a101c8f45f192a7996c62ef2fNicholas C. Zakas
7a2fdaed1646e4131f96888dce8170e96e79a5b4Nicholas C. Zakas var div = Y.one("#testbed > div"),
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas fl = Y.one("#testbed > div.floated"),
b33d3bf66f037e3c87d1b857d3706eee0072e0cdNicholas p = Y.one("#testbed > p"),
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas span = Y.one("#testbed > span");
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas
8e2f5a54575e4da16c524b6c45cba19a4ad00070Nicholas C. Zakas Y.assert( (div.get("offsetHeight") > 0) );
Y.assert( (fl.get("offsetHeight") > 0) );
Y.assert( (p.get("offsetHeight") > 0) );
Y.assert( (span.get("offsetHeight") > 0) );
Y.assert( (fl.get("offsetWidth") > 0) );
Y.assert( (span.get("offsetWidth") > 0) );
Y.Assert.areEqual( 8, div.all("span,img").size() );
Y.Assert.areEqual( 8, fl.all("span,img").size() );
Y.Assert.areEqual( 8, p.all("span,img").size() );
Y.Assert.areEqual( 8, span.all("span,img").size() );
},
"test render( node )": function () {
Y.one("#testbed").setContent(
"<div></div>" + // block element
'<div class="floated" style="float:left"></div>' + // float
"<p></p>" + // limited block element
"<span></span>"); // inline element
var div = Y.one("#testbed > div"),
fl = Y.one("#testbed > div.floated"),
p = Y.one("#testbed > p"),
span = Y.one("#testbed > span");
(new Y.Slider().render(div));
(new Y.Slider().render(fl));
(new Y.Slider().render(p));
(new Y.Slider().render(span));
Y.assert( (div.get("offsetHeight") > 0) );
Y.assert( (fl.get("offsetHeight") > 0) );
Y.assert( (p.get("offsetHeight") > 0) );
Y.assert( (span.get("offsetHeight") > 0) );
Y.assert( (fl.get("offsetWidth") > 0) );
Y.assert( (span.get("offsetWidth") > 0) );
Y.Assert.areEqual( 8, div.all("span,img").size() );
Y.Assert.areEqual( 8, fl.all("span,img").size() );
Y.Assert.areEqual( 8, p.all("span,img").size() );
Y.Assert.areEqual( 8, span.all("span,img").size() );
},
"test render: selector attrib in constructor": function () {
Y.one("#testbed").setContent(
"<div></div>" + // block element
'<div class="floated" style="float:left"></div>' + // float
"<p></p>" + // limited block element
"<span></span>"); // inline element
(new Y.Slider({ render: "#testbed > div" }));
(new Y.Slider({ render: "#testbed > div.floated" }));
(new Y.Slider({ render: "#testbed > p" }));
(new Y.Slider({ render: "#testbed > span" }));
var div = Y.one("#testbed > div"),
fl = Y.one("#testbed > div.floated"),
p = Y.one("#testbed > p"),
span = Y.one("#testbed > span");
Y.assert( (div.get("offsetHeight") > 0) );
Y.assert( (fl.get("offsetHeight") > 0) );
Y.assert( (p.get("offsetHeight") > 0) );
Y.assert( (span.get("offsetHeight") > 0) );
Y.assert( (fl.get("offsetWidth") > 0) );
Y.assert( (span.get("offsetWidth") > 0) );
Y.Assert.areEqual( 8, div.all("span,img").size() );
Y.Assert.areEqual( 8, fl.all("span,img").size() );
Y.Assert.areEqual( 8, p.all("span,img").size() );
Y.Assert.areEqual( 8, span.all("span,img").size() );
},
"test render: node attrib in constructor": function () {
Y.one("#testbed").setContent(
"<div></div>" + // block element
'<div class="floated" style="float:left"></div>' + // float
"<p></p>" + // limited block element
"<span></span>"); // inline element
var div = Y.one("#testbed > div"),
fl = Y.one("#testbed > div.floated"),
p = Y.one("#testbed > p"),
span = Y.one("#testbed > span");
(new Y.Slider({ render: div }));
(new Y.Slider({ render: fl }));
(new Y.Slider({ render: p }));
(new Y.Slider({ render: span }));
Y.assert( (div.get("offsetHeight") > 0) );
Y.assert( (fl.get("offsetHeight") > 0) );
Y.assert( (p.get("offsetHeight") > 0) );
Y.assert( (span.get("offsetHeight") > 0) );
Y.assert( (fl.get("offsetWidth") > 0) );
Y.assert( (span.get("offsetWidth") > 0) );
Y.Assert.areEqual( 8, div.all("span,img").size() );
Y.Assert.areEqual( 8, fl.all("span,img").size() );
Y.Assert.areEqual( 8, p.all("span,img").size() );
Y.Assert.areEqual( 8, span.all("span,img").size() );
},
"test render off DOM": function () {
var container = Y.Node.create("<div></div>");
(new Y.Slider().render(container));
Y.Assert.areEqual( 8, container.all("span,img").size() );
},
"test destroy() before render": function () {
var slider = new Y.Slider();
slider.destroy();
Y.Assert.isTrue( slider.get("destroyed") );
},
"test destroy() after render off DOM": function () {
var container = Y.Node.create("<div></div>"),
slider = new Y.Slider();
slider.render( container );
slider.destroy();
Y.Assert.isTrue( slider.get("destroyed") );
Y.Assert.isNull( container.get("firstChild") );
},
"test destroy() after render to DOM": function () {
var slider = new Y.Slider();
slider.render( "#testbed" );
slider.destroy();
Y.Assert.isTrue( slider.get("destroyed") );
Y.Assert.isNull( Y.one("#testbed").get("firstChild") );
}
}));
suite.add( new Y.Test.Case({
name: "API",
setUp: function () {
Y.one('body').append('<div id="testbed"></div>');
this.slider = new Y.Slider();
},
tearDown: function () {
this.slider.destroy();
Y.one('#testbed').remove(true);
},
"test getValue() and setValue(v) before render": function () {
var s = this.slider;
Y.Assert.areEqual( 0, s.getValue() );
s.setValue(50);
Y.Assert.areEqual( 50, s.getValue() );
s.setValue(3.3333);
Y.Assert.areEqual( 3, s.getValue() );
// out of range constrained by setter
s.setValue(-10);
Y.Assert.areEqual( 0, s.getValue() );
s.setValue(110);
Y.Assert.areEqual( 100, s.getValue() );
Y.Assert.areEqual( s.get('value'), s.getValue() );
s.set('value', 6.66666);
Y.Assert.areEqual( 7, s.getValue() );
Y.Assert.areEqual( s.get('value'), s.getValue() );
},
"test getValue() and setValue(v) after render() to hidden container": function () {
var container = Y.Node.create('<div></div>'),
s = this.slider;
s.render( container );
Y.Assert.areEqual( 0, s.getValue() );
s.setValue(50);
Y.Assert.areEqual( 50, s.getValue() );
s.setValue(3.3333);
Y.Assert.areEqual( 3, s.getValue() );
s.setValue(-10);
Y.Assert.areEqual( 0, s.getValue() );
s.setValue(110);
Y.Assert.areEqual( 100, s.getValue() );
Y.Assert.areEqual( s.get('value'), s.getValue() );
s.set('value', 6.66666);
Y.Assert.areEqual( 7, s.getValue() );
Y.Assert.areEqual( s.get('value'), s.getValue() );
},
"test getValue() and setValue(v) after render() to DOM": function () {
var s = this.slider;
s.render('#testbed');
Y.Assert.areEqual( 0, s.getValue() );
s.setValue(50);
Y.Assert.areEqual( 50, s.getValue() );
s.setValue(3.3333);
Y.Assert.areEqual( 3, s.getValue() );
s.setValue(-10);
Y.Assert.areEqual( 0, s.getValue() );
s.setValue(110);
Y.Assert.areEqual( 100, s.getValue() );
Y.Assert.areEqual( s.get('value'), s.getValue() );
s.set('value', 6.66666);
Y.Assert.areEqual( 7, s.getValue() );
Y.Assert.areEqual( s.get('value'), s.getValue() );
},
"setValue(v) then render() should position thumb": function () {
var s = this.slider;
s.setValue(20);
s.render("#testbed");
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle("left"),10) );
},
"setValue(v) after render() should move the thumb": function () {
var s = this.slider;
s.render('#testbed');
Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
s.setValue(20);
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
s.setValue(0);
Y.Assert.areEqual( 0, s.getValue() );
Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
s.setValue(100);
Y.Assert.areEqual( 100, s.getValue() );
Y.Assert.areEqual( 135, parseInt(s.thumb.getStyle('left'),10) );
},
"setValue(v) when hidden should still move the thumb": function () {
var s = this.slider;
Y.one('#testbed').setStyle('display','none');
s.render('#testbed');
Y.Assert.areEqual( 0, parseInt(s.thumb.getStyle('left'),10) );
s.setValue(20);
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
Y.one('#testbed').setStyle('display','');
Y.Assert.areEqual( 27, parseInt(s.thumb.getStyle('left'),10) );
}
}));
suite.add( new Y.Test.Case({
name: "Attributes",
_should: {
fail: {
// TODO This is a bug. invalid construction value should fallback
// to specified attribute default
"axis should only accept 'x', 'X', 'y', and 'Y'": true
}
},
setUp: function () {
Y.one('body').append('<span id="testbed"></span>');
},
tearDown: function () {
Y.one('#testbed').remove(true);
},
"test axis": function () {
var testbed = Y.one('#testbed'),
slider = new Y.Slider({ axis: 'x' }).render( testbed ),
bb = testbed.get("firstChild");
Y.assert( (bb.get("offsetWidth") > 100), "offsetWidth > 100" );
Y.assert( (bb.get("offsetHeight") < 50), "offsetHeight < 50" );
slider.destroy();
slider = new Y.Slider({ axis: 'y' }).render( testbed );
bb = testbed.get("firstChild");
Y.assert( (bb.get("offsetHeight") > 100), "offsetHeight > 100" );
Y.assert( (bb.get("offsetWidth") < 50), "offsetWidth < 50" );
slider.destroy();
},
"axis should be writeOnce": function () {
var slider = new Y.Slider();
Y.Assert.areEqual("x", slider.get("axis"));
slider.set('axis', 'y');
Y.Assert.areEqual("x", slider.get("axis"));
slider.destroy();
slider = new Y.Slider({ axis: 'y' });
Y.Assert.areEqual("y", slider.get("axis"));
slider.set('axis', 'x');
Y.Assert.areEqual("y", slider.get("axis"));
},
"axis should only accept 'x', 'X', 'y', and 'Y'": function () {
var attempts = "a b c 1 2 3 yx yy YX YY vertical vert eks".split(/ /);
Y.each( attempts, function ( axis ) {
var slider = new Y.Slider({ axis: axis });
Y.Assert.areEqual("x", slider.get("axis"));
slider.destroy();
});
attempts = ['y', 'Y'];
Y.each( attempts, function ( axis ) {
var slider = new Y.Slider({ axis: axis });
Y.Assert.areEqual("y", slider.get("axis"));
slider.destroy();
});
},
"test length": function () {
Y.one('#testbed').append('<div id="slider"></div><div id="ref"></div>');
var testbed = Y.one("#slider"),
ref = Y.one("#ref"),
slider, delta, bb;
slider = new Y.Slider().render( testbed );
bb = testbed.get('firstChild');
delta = bb.get('offsetWidth') - parseInt(slider.get('length'), 10);
slider.destroy();
slider = new Y.Slider({ length: 50 }).render( testbed );
bb = testbed.get('firstChild');
Y.Assert.areEqual( (50 + delta), bb.get('offsetWidth') );
slider.set('length', 300);
Y.Assert.areEqual( (300 + delta), bb.get('offsetWidth') );
slider.set('length', "-140px");
Y.Assert.areEqual( (300 + delta), bb.get('offsetWidth') );
ref.setStyle("width", "23.5em");
slider.set('length', '23.5em');
Y.Assert.areEqual( (ref.get('offsetWidth') + delta), bb.get('offsetWidth') );
slider.destroy();
slider = new Y.Slider({ axis: 'y' }).render( testbed );
bb = testbed.get('firstChild');
delta = bb.get('offsetHeight') - parseInt(slider.get('length'), 10);
slider.destroy();
slider = new Y.Slider({ axis: 'y', length: 50 }).render( testbed );
bb = testbed.get('firstChild');
Y.Assert.areEqual( (50 + delta), bb.get('offsetHeight') );
slider.set('length', 300);
Y.Assert.areEqual( (300 + delta), bb.get('offsetHeight') );
slider.set('length', "-140px");
Y.Assert.areEqual( (300 + delta), bb.get('offsetHeight') );
ref.setStyle("height", "23.5em");
slider.set('length', '23.5em');
Y.Assert.areEqual( (ref.get('offsetHeight') + delta), bb.get('offsetHeight') );
},
"thumbUrl should default at render()": function () {
var slider = new Y.Slider();
Y.Assert.isNull( slider.get('thumbUrl') );
slider.render('#testbed');
Y.Assert.isString( slider.get('thumbUrl') );
slider.destroy();
},
"thumbUrl should default to sam skin": function () {
var slider = new Y.Slider().render("#testbed");
Y.Assert.areEqual( Y.config.base + 'slider-base/assets/skins/sam/thumb-x.png', slider.get('thumbUrl') );
slider.destroy();
},
"thumbUrl should default from the current skin": function () {
var testbed = Y.one("#testbed"),
slider = new Y.Slider();
testbed.addClass("yui3-skin-foo");
slider.render( testbed );
Y.Assert.areEqual( Y.config.base + 'slider-base/assets/skins/foo/thumb-x.png', slider.get('thumbUrl') );
slider.destroy();
},
"test clickableRail": function () {
},
"test min": function () {
},
"test max": function () {
},
"test value": function () {
}
}));
suite.add( new Y.Test.Case({
name: "Keyboard",
_should: {
fail: {
"test keyboard input and resultant value change, when Slider length is less than max - min": 2531498
}
},
setUp: function () {
Y.one("body").append('<div id="testbed"></div>');
},
tearDown: function () {
Y.one("#testbed").remove(true);
},
"test keyboard input": function () {
var slider = new Y.Slider({
length: '350px',
min : 0,
max : 100,
value : 50
});
slider.render( "#testbed" );
Y.Assert.areEqual( 50, slider.get('value') );
var thumb = slider.thumb;
thumb.key(33); // pageUp // .key() method is at top of this file
Y.Assert.areEqual(60, slider.get('value'));
thumb.key(38); // up
Y.Assert.areEqual(61, slider.get('value'));
thumb.key(39); // right
Y.Assert.areEqual(62, slider.get('value'));
thumb.key(33); // pageUp
Y.Assert.areEqual(72, slider.get('value'));
thumb.key(40); // down
Y.Assert.areEqual(71, slider.get('value'));
thumb.key(34); // pageDown
Y.Assert.areEqual(61, slider.get('value'));
thumb.key(37); // left
thumb.key(37); // left
Y.Assert.areEqual(59, slider.get('value'));
thumb.key(36); // home
Y.Assert.areEqual(0, slider.get('value'));
thumb.key(35); // end
Y.Assert.areEqual(100, slider.get('value'));
// beyond max
thumb.key(33); // pageUp
Y.Assert.areEqual(100, slider.get('value'));
thumb.key(38); // up
Y.Assert.areEqual(100, slider.get('value'));
thumb.key(39); // right
Y.Assert.areEqual(100, slider.get('value'));
// min and beyond
slider.set('value', 0);
thumb.key(34); // pageDown
Y.Assert.areEqual(0, slider.get('value'), "= pageDown at min");
thumb.key(40); // down
Y.Assert.areEqual(0, slider.get('value'));
thumb.key(37); // left
Y.Assert.areEqual(0, slider.get('value'));
slider.destroy();
},
/*
* This tests changing the value by one unit
* that would not move the slider a full pixel
* and because of ticket #2531498, was
* changing the value back to previous value
* to match the thumb position
*/
"test keyboard input and resultant value change, when Slider length is less than max - min": function () {
var slider = new Y.Slider({
length: '30px', // length less than max - min
min : 0,
max : 100,
value : 0
});
slider.render( "#testbed" );
Y.Assert.areEqual( 0, slider.get('value') );
var thumb = slider.thumb;
thumb.key(38); // up // .key() method is at top of this file
Y.Assert.areEqual(1, slider.get('value'), "** init at 0, then keyUp");
slider.destroy();
},
"test ARIA attributes while values change by keyboard input": function () {
var slider = new Y.Slider({
length: '300px', // length less than max - min
min : 0,
max : 100,
value : 50
});
slider.render( "#testbed" );
Y.Assert.areEqual( 50, slider.get('value') );
var thumb = slider.thumb;
Y.Assert.areEqual(0, thumb.getAttribute('aria-valuemin'));
Y.Assert.areEqual(100, thumb.getAttribute('aria-valuemax'));
thumb.key(38); // up // .key() method is at top of this file
Y.Assert.areEqual(51, thumb.getAttribute('aria-valuenow'));
Y.Assert.areEqual(51, thumb.getAttribute('aria-valuetext'));
thumb.key(33); // pageUp
Y.Assert.areEqual(61, thumb.getAttribute('aria-valuenow'));
Y.Assert.areEqual(61, thumb.getAttribute('aria-valuetext'));
slider.destroy();
}
}));
suite.add( new Y.Test.Case({
name: "Runtime expectations",
setUp: function () {
},
tearDown: function () {
},
"test ": function () {
}
}));
/*
suite.add( new Y.Test.Case({
name: "Bugs",
setUp: function () {
},
tearDown: function () {
},
"test ": function () {
}
}));
*/
Y.Test.Runner.add( suite );
}, '@VERSION@' ,{requires:['slider', 'test']});