testsuite.js revision eb3266446a33b2f72f6f18bfa24c33b004da16ab
// copied this from event-key-test.js to add tests for changing value by keyboard
if (typeof code === "string") {
}
if (type) {
} else {
}
};
// END copied this from event-key-test.js to add tests for changing value by keyboard
name: "Simple dial test",
setUp: function () {
},
tearDown: function () {
},
"test default construction": function () {
} //no comma
}));
name: "Lifecycle",
setUp: function () {
},
tearDown: function () {
},
"test default construction": function () {
},
"test render(selector)": function () {
"<div></div>" + // block element
'<div class="floated" style="float:left"></div>' + // float
"<p></p>" + // limited block element
"<span></span>"); // inline element
p = Y.one("#testbed > p"),
//Check for IE VML and set different number of objects
},
"test render( node )": function () {
"<div></div>" + // block element
'<div class="floated" style="float:left"></div>' + // float
"<p></p>" + // limited block element
"<span></span>"); // inline element
p = Y.one("#testbed > p"),
//Check for IE VML and set different number of objects
},
"test render: selector attrib in constructor": function () {
"<div></div>" + // block element
'<div class="floated" style="float:left"></div>' + // float
"<p></p>" + // limited block element
"<span></span>"); // inline element
p = Y.one("#testbed > p"),
//Check for IE VML and set different number of objects
},
"test render: node attrib in constructor": function () {
"<div></div>" + // block element
'<div class="floated" style="float:left"></div>' + // float
"<p></p>" + // limited block element
"<span></span>"); // inline element
p = Y.one("#testbed > p"),
//Check for IE VML and set different number of objects
},
"test render off DOM": function () {
//Check for IE VML and set different number of objects
},
"test destroy() before render": function () {
},
"test destroy() after render off DOM": function () {
},
"test destroy() after render to DOM": function () {
}
}));
name: "API",
setUp: function () {
},
tearDown: function () {
},
"test getting a value from an angle": function () {
},
"test get('value')) and set('value', v) before render": function () {
var d = this.dial;
/*
d.set('value', 3.3333); // dial does not round value
Y.Assert.areEqual( 3, d.get('value') );
// out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
d.set('value', -500);
Y.Assert.areEqual( -220, d.get('value') );
// out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
d.set('value', 500);
Y.Assert.areEqual( 220, d.get('value') );
Y.Assert.areEqual( d.get('value'), d.get('value') );
d.set('value', 6.77777); // dial does not round value
Y.Assert.areEqual( 7, d.get('value') );
Y.Assert.areEqual( d.get('value'), d.get('value') );
*/
},
"test get('value')) and set('value', v) after render() to hidden container": function () {
d = this.dial;
/*
d.set('value', 3.3333); // dial does not round value
Y.Assert.areEqual( 3, d.get('value') );
// out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
d.set('value', -500);
Y.Assert.areEqual( -220, d.get('value'), "2" );
// out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
d.set('value', 500);
Y.Assert.areEqual( 220, d.get('value') );
Y.Assert.areEqual( d.get('value'), d.get('value') );
d.set('value', 6.77777); // dial does not round value
Y.Assert.areEqual( 7, d.get('value') );
Y.Assert.areEqual( d.get('value'), d.get('value') );
*/
},
"test get('value')) and set('value', v) after render() to DOM": function () {
var d = this.dial;
d.render('#testbed');
/*
d.set('value', 3.3333); // dial does not round value
Y.Assert.areEqual( 3, d.get('value') );
// out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
d.set('value', -500);
Y.Assert.areEqual( -220, d.get('value') );
// out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
d.set('value', 500);
Y.Assert.areEqual( 220, d.get('value') );
Y.Assert.areEqual( d.get('value'), d.get('value') );
d.set('value', 6.77777); // dial does not round value
Y.Assert.areEqual( 7, d.get('value') );
Y.Assert.areEqual( d.get('value'), d.get('value') );
*/
},
"set('value', v) then render() should position _handleNode": function () {
var d = this.dial;
d.render("#testbed");
},
"set('value', v) after render() should move the _handleNode": function () {
var d = this.dial;
d.render('#testbed');
}// no comma *****************
/*
// This works in everything but IE9. I don't know why.
// compare to similar test in slider's testsuite.js
"setValue(v) when hidden should still move the handle-user": function () {
var d = this.dial;
Y.one('#testbed').setStyle('visibility','block');
d.render('#testbed');
Y.Assert.areEqual( 40, parseInt(d._handleNode.getStyle('left'),10) );
d.set('value', 20);
Y.Assert.areEqual( 76, parseInt(d._handleNode.getStyle('left'),10) );
Y.one('#testbed').setStyle('visibility','');
Y.Assert.areEqual( 76, parseInt(d._handleNode.getStyle('left'),10) );
} // no comma *****************
*/
}));
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 () {
},
tearDown: function () {
},
"test diameter": function () {
/* I don't believe the diameter should be able to be changed after render
dial.set('diameter', 200);
Y.Assert.areEqual( (200 + delta), bb.get('offsetWidth') );
dial.set('diameter', "-140px");
Y.Assert.areEqual( (200 + delta), bb.get('offsetWidth') );
ref.setStyle("width", "150px");
dial.set('diameter', '150');
Y.Assert.areEqual( (ref.get('offsetWidth') + delta), bb.get('offsetWidth') );
*/
},
"test handleDiameter": function () {
},
// Would like to test markerDiameter
// but it reads as zero I believe because _markerNode is hidden until the handle is dragged.
"test centerButtonDiameter": function () {
},
"test handleDistance": function () {
},
"test increments and min max": function () {
},
"test min, max, resetDial, incrMinor, decrMinor, incrMajor, decrMajor": function () {
dial;
dial._resetDial();
dial._incrMinor();
dial._decrMinor();
dial._incrMajor();
dial._decrMajor();
},
"test max": function () {
},
"test value": function () {
}
}));
name: "String Changes After Render",
setUp: function () {
},
tearDown: function () {
},
"test changing strings after rendering dial": function() {
labelStr = 'My new label',
tooltipStr = 'My new tooltip';
Y.Assert.areEqual( labelStr, Y.one('.' + dial._classes[0].CSS_CLASSES.labelString).get('innerHTML') );
}else{
}
}
}));
name: "International Strings",
setUp: function () {
},
tearDown: function () {
},
"test international strings from lang files": function() {
Y.Intl.add ( 'dial' , 'xs' , {label: 'My label lang test', resetStr: 'Reset lang test', tooltipHandle: 'Drag to set value lang test'} )
//alert(Y.Intl.setLang('dial', 'xs'));
Y.Assert.areEqual( Y.Intl.get('dial').label, Y.one('.' + dial._classes[0].CSS_CLASSES.labelString).get('innerHTML') );
Y.Assert.areEqual( Y.Intl.get('dial').tooltipHandle, Y.one('.' + dial._classes[0].CSS_CLASSES.handleVml).get('title') );
}else{
Y.Assert.areEqual( Y.Intl.get('dial').tooltipHandle, Y.one('.' + dial._classes[0].CSS_CLASSES.handle).get('title') );
}
}
}));
name: "Change Value by mousedown",
setUp: function () {
},
tearDown: function () {
},
// Places a red marker where the event (mousdown, drag:drag, drag:end) is going to take place.
// In order to see it, you need to put a breakpoint on the ring.simulate line just after this is called
// Turn the global enableVis to false before check in
visualInspection: function (x,y,dialObj){
var enableVis = false; // Global enable. You'll need to put breakpoints in code to see it.
if(enableVis){
var eventXYMarker,
if(Y.one('.mDMarker')){
}else{
eventXYMarker = Y.Node.create('<div class="mDMarker" style="position:absolute; width:3px; height:3px; background-color:#f00;"></div>')
}
eventXYMarker.setXY([(dialObj._centerXOnPage + x - scrollL), (dialObj._centerYOnPage + y - scrollT)]);
}
},
"test centerButton mousedown": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
//Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
//Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
},
"test min:0 max:100 -- drag past max/max, then click 11 or 1 o'clock.": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
eventY = -30;
eventY = -30;
eventY = -30;
eventY = -30;
eventY = -30;
},
"test mousedown Range = one revolution. Not at North": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
},
"test min:0 max:100 -- mousedown on and off North. Range = one revolution": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
// Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
// Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
eventX = -15;
eventY = -30;
eventX = 1;
eventY = 30;
eventX = 3;
eventY = -30;
eventX = 0;
eventY = -30;
},
"test min: 0, max: 200 -- drag past max/max, then click 11 or 1 o'clock.": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
eventY = -30;
eventY = -30;
eventY = -30;
eventY = -30;
eventY = -30;
eventY = 30;
},
"test min: 0, max: 200 -- click through two revolutions CW": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
// Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
// Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
eventX = 15;
eventY = -30;
eventX = 1;
eventY = 30;
eventX = -2;
eventY = -30;
eventX = 3;
eventY = -30;
},
"test min: -35, max: 35 -- drag past max/max, then click in/out of range also #2530597." : function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
eventX = 30;
eventY = 0;
eventX = -22;
eventY = 30;
eventX = 22;
eventY = 30;
//#2530597 issues with min at zero and other zero related problem
// originally this bug was:
// drag to get angle just slightly > 0 but value is Zero
// then click to left side of dial
// Handle snapped to max on the right side of the dial
// Y.Assert.areEqual( 0, dial.get('value'), 'drag to get value 0 but angle slightly > 0'); // check dial._prevAng
eventX = -30;
eventY = 0;
//#2530597 issues with min at zero and other zero related problem
// Try the opposite
// Y.Assert.areEqual( 0, dial.get('value'), 'drag to get value 0 but angle slightly < 0'); // check dial._prevAng
eventX = -30;
eventY = 0;
eventX = -30;
eventY = 0;
eventX = 30;
eventY = 0;
},
"test min: 10, max: 25 -- mousedown text min max and opposite mid angle ": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
// Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
// Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
eventX = 25;
eventY = 5;
eventX = -5;
eventY = -30;
eventX = 3;
eventY = 30;
eventX = -30;
eventY = -3;
eventX = 5;
eventY = -30;
},
"test min: 75, max: 90 -- mousedown test min max and opposite mid angle ": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
// Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
// Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
eventX = 25;
eventY = 5;
eventX = -5;
eventY = 30;
eventX = 28;
eventY = 8;
eventX = -30;
eventY = 3;
eventX = -5;
eventY = -30;
},
"test min: 5, max: 80 -- mousedown text min max and opposite mid angle": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
// Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
// Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
eventX = 15;
eventY = -30;
eventX = 2;
eventY = -30;
eventX = -2;
eventY = -30;
eventX = -30;
eventY = -20;
},
"test drag CW past max, then click 11 O'clock -- min: 0, max: 100": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
},
"test drag CCW past min, then click 1 O'clock -- min: 0, max: 100": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
eventY = -30;
eventY = -30;
},
"test min:0, max:100 -- drag (no drag:end) handle past max, around one revolution, then back to less than max. See ratchet effect": function() { //string must start with "test
getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
};
// listeners that bind an event *unused* by Dial to the intended method
Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
// Simulating a drag is not possible with Y.event.simulate
// So I have to use an event supported by simulate.
// One that doesn't interfere with the other events of dial as mousedown does
// I chose mouseover on the ring as the event
// and send it to the dial._handleDrag method,
// which is what drag is attached to in the Dial.js code.
eventX = 25;
eventY = -30;
eventX = 25;
eventY = 30;
eventX = -25;
eventY = 30;
eventX = -25;
eventY = -30;
eventX = 25;
eventY = -30;
eventX = -25;
eventY = -30;
///////////////////////////////////////// Now do min
eventX = -22;
eventY = 30;
eventX = 22;
eventY = 30;
eventX = 22;
eventY = -30;
eventX = -22;
eventY = -30;
eventX = 22;
eventY = -30;
} //,
}));
name: "Keyboard value changes",
setUp: function () {
},
tearDown: function () {
},
"test changing dial value by keyboard": function () {
dial;
// beyond max
// min and beyond
}
}));
/*
suite.add( new Y.Test.Case({
name: "Bugs",
setUp: function () {
},
tearDown: function () {
},
"test ": function () {
}
}));
*/