testsuite.js revision 6c299ce58a8804eadd3d34ea217c3def48949662
0N/AYUI.add('dial-test', function(Y) {
0N/A
0N/A
0N/A
0N/A
0N/Avar suite = new Y.Test.Suite("Y.Dial");
0N/A
0N/Asuite.add( new Y.Test.Case({
0N/A name: "Simple dial test",
0N/A
0N/A setUp: function () {
0N/A Y.one("body").append('<div id="testbed"></div>');
0N/A },
0N/A
0N/A tearDown: function () {
0N/A Y.one("#testbed").remove(true);
0N/A },
0N/A
0N/A "test default construction": function () {
0N/A Y.Assert.isInstanceOf( Y.Dial, new Y.Dial() );
0N/A } //no comma
0N/A}));
0N/A
0N/A
0N/Asuite.add( new Y.Test.Case({
0N/A name: "Lifecycle",
0N/A
0N/A setUp: function () {
0N/A Y.one("body").append('<div id="testbed"></div>');
0N/A },
0N/A
0N/A tearDown: function () {
0N/A Y.one("#testbed").remove(true);
0N/A },
0N/A
0N/A "test default construction": function () {
0N/A Y.Assert.isInstanceOf( Y.Dial, new Y.Dial() );
0N/A },
0N/A
0N/A "test render(selector)": function () {
0N/A
0N/A Y.one("#testbed").setContent(
0N/A "<div></div>" + // block element
0N/A '<div class="floated" style="float:left"></div>' + // float
0N/A "<p></p>" + // limited block element
0N/A "<span></span>"); // inline element
0N/A
0N/A (new Y.Dial().render("#testbed > div"));
0N/A (new Y.Dial().render("#testbed > div.floated"));
0N/A (new Y.Dial().render("#testbed > p"));
0N/A (new Y.Dial().render("#testbed > span"));
0N/A
0N/A var div = Y.one("#testbed > div"),
0N/A fl = Y.one("#testbed > div.floated"),
0N/A p = Y.one("#testbed > p"),
0N/A span = Y.one("#testbed > span");
0N/A
0N/A Y.assert( (div.get("offsetHeight") > 0) );
0N/A Y.assert( (fl.get("offsetHeight") > 0) );
0N/A Y.assert( (p.get("offsetHeight") > 0) );
0N/A Y.assert( (span.get("offsetHeight") > 0) );
0N/A
0N/A Y.assert( (fl.get("offsetWidth") > 0) );
0N/A Y.assert( (span.get("offsetWidth") > 0) );
0N/A
0N/A //Check for IE VML and set different number of objects
0N/A var numObjs = (Y.UA.ie && Y.UA.ie < 9) ? 11 : 11;
0N/A
0N/A Y.Assert.areEqual( numObjs, div.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, fl.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, p.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, span.all("span,div").size() );
0N/A },
0N/A
0N/A "test render( node )": function () {
0N/A Y.one("#testbed").setContent(
0N/A "<div></div>" + // block element
0N/A '<div class="floated" style="float:left"></div>' + // float
0N/A "<p></p>" + // limited block element
0N/A "<span></span>"); // inline element
0N/A
0N/A var div = Y.one("#testbed > div"),
0N/A fl = Y.one("#testbed > div.floated"),
0N/A p = Y.one("#testbed > p"),
0N/A span = Y.one("#testbed > span");
0N/A
0N/A (new Y.Dial().render(div));
0N/A (new Y.Dial().render(fl));
0N/A (new Y.Dial().render(p));
0N/A (new Y.Dial().render(span));
0N/A
0N/A Y.assert( (div.get("offsetHeight") > 0) );
0N/A Y.assert( (fl.get("offsetHeight") > 0) );
0N/A Y.assert( (p.get("offsetHeight") > 0) );
0N/A Y.assert( (span.get("offsetHeight") > 0) );
0N/A
0N/A Y.assert( (fl.get("offsetWidth") > 0) );
0N/A Y.assert( (span.get("offsetWidth") > 0) );
0N/A
0N/A //Check for IE VML and set different number of objects
0N/A var numObjs = (Y.UA.ie && Y.UA.ie < 9) ? 11 : 11;
0N/A
0N/A
0N/A Y.Assert.areEqual( numObjs, div.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, fl.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, p.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, span.all("span,div").size() );
0N/A },
0N/A
0N/A "test render: selector attrib in constructor": function () {
0N/A Y.one("#testbed").setContent(
0N/A "<div></div>" + // block element
0N/A '<div class="floated" style="float:left"></div>' + // float
0N/A "<p></p>" + // limited block element
0N/A "<span></span>"); // inline element
0N/A
0N/A (new Y.Dial({ render: "#testbed > div" }));
0N/A (new Y.Dial({ render: "#testbed > div.floated" }));
0N/A (new Y.Dial({ render: "#testbed > p" }));
0N/A (new Y.Dial({ render: "#testbed > span" }));
0N/A
0N/A var div = Y.one("#testbed > div"),
0N/A fl = Y.one("#testbed > div.floated"),
0N/A p = Y.one("#testbed > p"),
0N/A span = Y.one("#testbed > span");
0N/A
0N/A Y.assert( (div.get("offsetHeight") > 0) );
0N/A Y.assert( (fl.get("offsetHeight") > 0) );
0N/A Y.assert( (p.get("offsetHeight") > 0) );
0N/A Y.assert( (span.get("offsetHeight") > 0) );
0N/A
0N/A Y.assert( (fl.get("offsetWidth") > 0) );
0N/A Y.assert( (span.get("offsetWidth") > 0) );
0N/A
0N/A
0N/A //Check for IE VML and set different number of objects
0N/A var numObjs = (Y.UA.ie && Y.UA.ie < 9) ? 11 : 11;
0N/A Y.Assert.areEqual( numObjs, div.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, fl.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, p.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, span.all("span,div").size() );
0N/A },
0N/A
0N/A "test render: node attrib in constructor": function () {
0N/A Y.one("#testbed").setContent(
0N/A "<div></div>" + // block element
0N/A '<div class="floated" style="float:left"></div>' + // float
0N/A "<p></p>" + // limited block element
0N/A "<span></span>"); // inline element
0N/A
0N/A var div = Y.one("#testbed > div"),
0N/A fl = Y.one("#testbed > div.floated"),
0N/A p = Y.one("#testbed > p"),
0N/A span = Y.one("#testbed > span");
0N/A
0N/A (new Y.Dial({ render: div }));
0N/A (new Y.Dial({ render: fl }));
0N/A (new Y.Dial({ render: p }));
0N/A (new Y.Dial({ render: span }));
0N/A
0N/A Y.assert( (div.get("offsetHeight") > 0) );
0N/A Y.assert( (fl.get("offsetHeight") > 0) );
0N/A Y.assert( (p.get("offsetHeight") > 0) );
0N/A Y.assert( (span.get("offsetHeight") > 0) );
0N/A
0N/A Y.assert( (fl.get("offsetWidth") > 0) );
0N/A Y.assert( (span.get("offsetWidth") > 0) );
0N/A
0N/A //Check for IE VML and set different number of objects
0N/A var numObjs = (Y.UA.ie && Y.UA.ie < 9) ? 11 : 11;
0N/A
0N/A Y.Assert.areEqual( numObjs, div.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, fl.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, p.all("span,div").size() );
0N/A Y.Assert.areEqual( numObjs, span.all("span,div").size() );
0N/A },
0N/A
0N/A "test render off DOM": function () {
0N/A var container = Y.Node.create("<div></div>");
0N/A
0N/A (new Y.Dial().render(container));
0N/A
0N/A //Check for IE VML and set different number of objects
0N/A var numObjs = (Y.UA.ie && Y.UA.ie < 9) ? 11 : 11;
0N/A
0N/A
0N/A Y.Assert.areEqual( numObjs, container.all("span,div").size() );
0N/A },
0N/A
0N/A "test destroy() before render": function () {
0N/A var dial = new Y.Dial();
0N/A
0N/A dial.destroy();
0N/A
0N/A Y.Assert.isTrue( dial.get("destroyed") );
0N/A },
0N/A
0N/A "test destroy() after render off DOM": function () {
0N/A var container = Y.Node.create("<div></div>"),
0N/A dial = new Y.Dial();
0N/A
0N/A dial.render( container );
0N/A
0N/A dial.destroy();
0N/A
0N/A Y.Assert.isTrue( dial.get("destroyed") );
0N/A
0N/A Y.Assert.isNull( container.get("firstChild") );
0N/A },
0N/A
0N/A "test destroy() after render to DOM": function () {
0N/A var dial = new Y.Dial();
0N/A
0N/A dial.render( "#testbed" );
0N/A
0N/A dial.destroy();
0N/A
0N/A Y.Assert.isTrue( dial.get("destroyed") );
0N/A
0N/A Y.Assert.isNull( Y.one("#testbed").get("firstChild") );
0N/A }
0N/A}));
0N/A
0N/Asuite.add( new Y.Test.Case({
0N/A name: "API",
0N/A
0N/A setUp: function () {
0N/A Y.one('body').append('<div id="testbed"></div>');
0N/A
0N/A this.dial = new Y.Dial();
0N/A },
0N/A
0N/A tearDown: function () {
0N/A this.dial.destroy();
0N/A
0N/A Y.one('#testbed').remove(true);
0N/A },
0N/A
0N/A "test get('value')) and set('value', v) before render": function () {
0N/A var d = this.dial;
0N/A
0N/A Y.Assert.areEqual( 0, d.get('value') );
0N/A
0N/A d.set('value', 50);
0N/A Y.Assert.areEqual( 50, d.get('value') );
0N/A/*
0N/A d.set('value', 3.3333); // dial does not round value
0N/A Y.Assert.areEqual( 3, d.get('value') );
0N/A
0N/A // out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
0N/A d.set('value', -500);
0N/A Y.Assert.areEqual( -220, d.get('value') );
0N/A
0N/A // out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
0N/A d.set('value', 500);
0N/A Y.Assert.areEqual( 220, d.get('value') );
0N/A Y.Assert.areEqual( d.get('value'), d.get('value') );
0N/A
0N/A d.set('value', 6.77777); // dial does not round value
0N/A Y.Assert.areEqual( 7, d.get('value') );
0N/A Y.Assert.areEqual( d.get('value'), d.get('value') );
0N/A*/
0N/A },
0N/A
0N/A "test get('value')) and set('value', v) after render() to hidden container": function () {
0N/A var container = Y.Node.create('<div></div>'),
0N/A d = this.dial;
0N/A
0N/A d.render( container );
0N/A
0N/A Y.Assert.areEqual( 0, d.get('value'), "1" );
0N/A
0N/A d.set('value', 50);
0N/A Y.Assert.areEqual( 50, d.get('value') );
0N/A/*
0N/A d.set('value', 3.3333); // dial does not round value
0N/A Y.Assert.areEqual( 3, d.get('value') );
0N/A
0N/A // out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
0N/A d.set('value', -500);
0N/A Y.Assert.areEqual( -220, d.get('value'), "2" );
0N/A
0N/A // out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
0N/A d.set('value', 500);
0N/A Y.Assert.areEqual( 220, d.get('value') );
0N/A Y.Assert.areEqual( d.get('value'), d.get('value') );
0N/A
0N/A d.set('value', 6.77777); // dial does not round value
0N/A Y.Assert.areEqual( 7, d.get('value') );
0N/A Y.Assert.areEqual( d.get('value'), d.get('value') );
0N/A*/
0N/A },
0N/A
0N/A "test get('value')) and set('value', v) after render() to DOM": function () {
0N/A var d = this.dial;
0N/A
0N/A d.render('#testbed');
0N/A
0N/A Y.Assert.areEqual( 0, d.get('value') );
0N/A
0N/A d.set('value', 50);
0N/A Y.Assert.areEqual( 50, d.get('value') );
0N/A/*
0N/A d.set('value', 3.3333); // dial does not round value
0N/A Y.Assert.areEqual( 3, d.get('value') );
0N/A
0N/A // out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
0N/A d.set('value', -500);
0N/A Y.Assert.areEqual( -220, d.get('value') );
0N/A
0N/A // out of range constrained by setter FIX THIS BUG. leaving in 3.3.0
0N/A d.set('value', 500);
0N/A Y.Assert.areEqual( 220, d.get('value') );
0N/A Y.Assert.areEqual( d.get('value'), d.get('value') );
0N/A
0N/A d.set('value', 6.77777); // dial does not round value
0N/A Y.Assert.areEqual( 7, d.get('value') );
0N/A Y.Assert.areEqual( d.get('value'), d.get('value') );
0N/A*/
0N/A },
0N/A
0N/A "set('value', v) then render() should position _handleNode": function () {
0N/A var d = this.dial;
0N/A
0N/A d.set('value', 20);
0N/A d.render("#testbed");
0N/A
0N/A
0N/A Y.Assert.areEqual( 76, parseInt(d._handleNode.getStyle("left"),10) );
0N/A },
0N/A
0N/A "set('value', v) after render() should move the _handleNode": function () {
0N/A var d = this.dial;
0N/A
0N/A d.render('#testbed');
0N/A
0N/A Y.Assert.areEqual( 40, parseInt(d._handleNode.getStyle('left'),10) );
0N/A d.set('value', 20);
0N/A Y.Assert.areEqual( 76, parseInt(d._handleNode.getStyle('left'),10) );
0N/A
0N/A d.set('value', 0);
0N/A Y.Assert.areEqual( 0, d.get('value') );
0N/A Y.Assert.areEqual( 40, parseInt(d._handleNode.getStyle('left'),10) );
0N/A
0N/A d.set('value', -93);
0N/A Y.Assert.areEqual( -93, d.get('value') );
0N/A Y.Assert.areEqual( 56, parseInt(d._handleNode.getStyle('left'),10) );
0N/A }// no comma *****************
0N/A
0N/A/*
0N/A // This works in everything but IE9. I don't know why.
0N/A // compare to similar test in slider's testsuite.js
0N/A "setValue(v) when hidden should still move the handle-user": function () {
0N/A var d = this.dial;
0N/A
0N/A Y.one('#testbed').setStyle('visibility','block');
0N/A
0N/A d.render('#testbed');
0N/A
0N/A Y.Assert.areEqual( 40, parseInt(d._handleNode.getStyle('left'),10) );
0N/A d.set('value', 20);
0N/A Y.Assert.areEqual( 76, parseInt(d._handleNode.getStyle('left'),10) );
0N/A
0N/A Y.one('#testbed').setStyle('visibility','');
0N/A Y.Assert.areEqual( 76, parseInt(d._handleNode.getStyle('left'),10) );
0N/A } // no comma *****************
0N/A*/
0N/A}));
0N/A
0N/Asuite.add( new Y.Test.Case({
0N/A name: "Attributes",
0N/A
0N/A// _should: {
0N/A// fail: {
0N/A// // TODO This is a bug. invalid construction value should fallback
0N/A// // to specified attribute default
0N/A// "axis should only accept 'x', 'X', 'y', and 'Y'": true
0N/A// }
0N/A// },
0N/A
0N/A setUp: function () {
0N/A Y.one('body').append('<span id="testbed"></span>');
0N/A },
0N/A
0N/A tearDown: function () {
0N/A Y.one('#testbed').remove(true);
0N/A },
0N/A
0N/A "test diameter": function () {
0N/A Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
0N/A
0N/A var testbed = Y.one("#dial"),
0N/A ref = Y.one("#ref"),
0N/A dial, delta, bb;
0N/A
0N/A dial = new Y.Dial().render( testbed );
0N/A bb = testbed.get('firstChild');
0N/A
0N/A delta = bb.get('offsetWidth') - parseInt(dial.get('diameter'), 10);
0N/A
0N/A dial.destroy();
0N/A
0N/A dial = new Y.Dial({ diameter: 300 }).render( testbed );
0N/A bb = testbed.get('firstChild');
0N/A
0N/A Y.Assert.areEqual( (300 + delta), bb.get('offsetWidth') );
0N/A
0N/A/* I don't believe the diameter should be able to be changed after render
0N/A dial.set('diameter', 200);
0N/A Y.Assert.areEqual( (200 + delta), bb.get('offsetWidth') );
0N/A
0N/A dial.set('diameter', "-140px");
0N/A Y.Assert.areEqual( (200 + delta), bb.get('offsetWidth') );
0N/A
0N/A ref.setStyle("width", "150px");
0N/A dial.set('diameter', '150');
0N/A Y.Assert.areEqual( (ref.get('offsetWidth') + delta), bb.get('offsetWidth') );
0N/A*/
0N/A dial.destroy();
0N/A
0N/A },
0N/A
0N/A
0N/A "test handleDiameter": function () {
0N/A Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
0N/A var testbed = Y.one("#dial"),
0N/A ref = Y.one("#ref"),
0N/A dial, calcSize, bb;
0N/A dial = new Y.Dial({handleDiameter: 0.53 }).render( testbed );
0N/A bb = testbed.get('firstChild');
0N/A calcSize = dial.get('diameter') * dial.get('handleDiameter');
0N/A Y.Assert.areEqual( calcSize, dial._handleNode.get('offsetWidth') );
0N/A dial.destroy();
0N/A },
0N/A
0N/A // Would like to test markerDiameter
0N/A // but it reads as zero I believe because _markerNode is hidden until the handle is dragged.
0N/A
0N/A "test centerButtonDiameter": function () {
0N/A Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
0N/A var testbed = Y.one("#dial"),
0N/A ref = Y.one("#ref"),
0N/A dial, calcSize, bb;
0N/A dial = new Y.Dial({centerButtonDiameter: 0.89 }).render( testbed );
0N/A bb = testbed.get('firstChild');
0N/A calcSize = dial.get('diameter') * dial.get('centerButtonDiameter');
0N/A Y.Assert.areEqual( calcSize, dial._centerButtonNode.get('offsetWidth') );
0N/A dial.destroy();
0N/A },
0N/A
0N/A
0N/A "test handleDistance": function () {
0N/A Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
0N/A var testbed = Y.one("#dial"),
0N/A ref = Y.one("#ref"),
0N/A dial, calcHandleTop, bb;
0N/A dial = new Y.Dial({handleDistance: 1 }).render( testbed );
0N/A bb = testbed.get('firstChild');
0N/A calcHandleTop = -(dial.get('handleDiameter') * dial.get('diameter')) / 2;
0N/A Y.Assert.areEqual( calcHandleTop, parseInt(dial._handleNode.getStyle('top'),10) );
0N/A dial.destroy();
0N/A },
0N/A
0N/A
0N/A "test increments and min max": function () {
0N/A
0N/A },
0N/A
0N/A "test min, max, resetDial, incrMinor, decrMinor, incrMajor, decrMajor": function () {
0N/A Y.one('#testbed').append('<div id="dial"></div>');
0N/A
0N/A var testbed = Y.one("#dial"),
0N/A dial;
0N/A dial = new Y.Dial().render( testbed );
0N/A dial._setToMin();
0N/A Y.Assert.areEqual(dial.get('min'), dial.get('value'));
0N/A
0N/A dial._setToMax();
0N/A Y.Assert.areEqual(dial.get('max'), dial.get('value'));
0N/A
0N/A dial._resetDial();
0N/A Y.Assert.areEqual(dial._originalValue, dial.get('value'));
0N/A
0N/A dial.set('value', 0);
0N/A
0N/A dial._incrMinor();
0N/A Y.Assert.areEqual(1, dial.get('value'));
0N/A
0N/A dial._decrMinor();
0N/A Y.Assert.areEqual(0, dial.get('value'));
0N/A
0N/A dial._incrMajor();
0N/A Y.Assert.areEqual(10, dial.get('value'));
0N/A
0N/A dial._decrMajor();
0N/A Y.Assert.areEqual(0, dial.get('value'));
0N/A
0N/A
0N/A },
0N/A
0N/A "test max": function () {
0N/A },
0N/A
0N/A "test value": function () {
0N/A }
0N/A}));
0N/A
0N/Asuite.add( new Y.Test.Case({
0N/A
0N/A name: "String Changes After Render",
0N/A
0N/A setUp: function () {
0N/A Y.one('body').append('<span id="testbed"></span>');
0N/A },
0N/A
0N/A tearDown: function () {
0N/A Y.one('#testbed').remove(true);
0N/A },
0N/A
0N/A "test changing strings after rendering dial": function() {
0N/A var testbed = Y.one("#testbed"),
0N/A labelStr = 'My new label',
0N/A tooltipStr = 'My new tooltip';
0N/A
0N/A dial = new Y.Dial().render("#testbed");
0N/A dial._setLabelString(labelStr);
0N/A dial._setTooltipString(tooltipStr);
0N/A Y.Assert.areEqual( labelStr, Y.one('.' + dial._classes[0].CSS_CLASSES.labelString).get('innerHTML') );
0N/A
0N/A if(Y.UA.ie && Y.UA.ie < 9){
0N/A Y.Assert.areEqual( tooltipStr, Y.one('.' + dial._classes[0].CSS_CLASSES.handleVml).get('title') );
0N/A }else{
0N/A Y.Assert.areEqual( tooltipStr, Y.one('.' + dial._classes[0].CSS_CLASSES.handle).get('title') );
0N/A }
0N/A
0N/A }
0N/A}));
0N/A
0N/Asuite.add( new Y.Test.Case({
0N/A
0N/A name: "International Strings",
0N/A
0N/A setUp: function () {
0N/A Y.one('body').append('<span id="testbed"></span>');
0N/A },
0N/A
0N/A tearDown: function () {
0N/A Y.one('#testbed').remove(true);
0N/A },
0N/A
0N/A "test international strings from lang files": function() {
0N/A var testbed = Y.one("#testbed");
0N/A
0N/A Y.Intl.add ( 'dial' , 'xs' , {label: 'My label lang test', resetStr: 'Reset lang test', tooltipHandle: 'Drag to set value lang test'} )
0N/A
0N/A Y.Intl.setLang('dial', 'xs');
0N/A //alert(Y.Intl.setLang('dial', 'xs'));
0N/A dial = new Y.Dial().render("#testbed");
0N/A Y.Assert.areEqual( Y.Intl.get('dial').label, Y.one('.' + dial._classes[0].CSS_CLASSES.labelString).get('innerHTML') );
0N/A if(Y.UA.ie && Y.UA.ie < 9){
0N/A Y.Assert.areEqual( Y.Intl.get('dial').tooltipHandle, Y.one('.' + dial._classes[0].CSS_CLASSES.handleVml).get('title') );
0N/A }else{
0N/A Y.Assert.areEqual( Y.Intl.get('dial').tooltipHandle, Y.one('.' + dial._classes[0].CSS_CLASSES.handle).get('title') );
0N/A }
0N/A }
0N/A}));
0N/A
0N/Asuite.add( new Y.Test.Case({
0N/A
0N/A name: "Change Value by mousedown",
0N/A
0N/A setUp: function () {
0N/A Y.one('body').append('<span id="testbed"></span>');
0N/A },
0N/A
0N/A tearDown: function () {
0N/A Y.one('#testbed').remove(true);
0N/A },
0N/A // Places a red marker where the event (mousdown, drag:drag, drag:end) is going to take place.
0N/A // In order to see it, you need to put a breakpoint on the ring.simulate line just after this is called
0N/A // Turn the global enableVis to false before check in
0N/A visualInspection: function (x,y,dialObj){
0N/A var enableVis = false; // Global enable. You'll need to put breakpoints in code to see it.
0N/A if(enableVis){
0N/A var eventXYMarker,
0N/A scrollT = Y.one('document').get('scrollTop'),
0N/A scrollL = Y.one('document').get('scrollLeft');
0N/A
0N/A if(Y.one('.mDMarker')){
0N/A eventXYMarker = Y.one('.mDMarker');
0N/A }else{
0N/A eventXYMarker = Y.Node.create('<div class="mDMarker" style="position:absolute; width:3px; height:3px; background-color:#f00;"></div>')
0N/A Y.one('.yui3-dial-ring').append(eventXYMarker);
0N/A }
0N/A eventXYMarker.setXY([(dialObj._centerXOnPage + x - scrollL), (dialObj._centerYOnPage + y - scrollT)]);
0N/A }
0N/A },
0N/A
0N/A
0N/A "test min:0 max:100 -- drag past max/max, then click 11 or 1 o'clock.": function() { //string must start with "test
0N/A Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
0N/A var testbed = Y.one("#dial"),
0N/A ref = Y.one("#ref"),
0N/A dial = new Y.Dial({handleDistance: 1, value: 90, min: 0, max: 100 }).render( testbed ),
0N/A ring = Y.one('.yui3-dial-ring'),
0N/A scrollT = Y.one('document').get('scrollTop'),
0N/A scrollL = Y.one('document').get('scrollLeft'),
0N/A eventX,
0N/A eventY,
0N/A getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
0N/A return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
0N/A };
0N/A // listeners that bind an event *unused* by Dial to the intended method
0N/A Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
0N/A Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
0N/A
0N/A eventX = 22; //Set the X for event simulation. This is offset from dial._centerXOnPage
0N/A eventY = -30; //Set the Y for event simulation.
0N/A this.visualInspection(eventX,eventY,dial);
0N/A ring.simulate("mouseover", getXYProps());
0N/A ring.simulate("mouseout", getXYProps());
0N/A Y.Assert.areEqual( 100, dial.get('value'), 'drag CW past max:100');
0N/A
0N/A eventX = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
0N/A eventY = -30;
0N/A this.visualInspection(eventX,eventY,dial);
0N/A ring.simulate("mousedown", getXYProps());
0N/A Y.Assert.areEqual( 90, dial.get('value'), 'then click 11 0clock');
0N/A
0N/A dial.set('value', 10);
0N/A
0N/A eventX = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
0N/A eventY = -30;
0N/A this.visualInspection(eventX,eventY,dial);
0N/A ring.simulate("mouseover", getXYProps());
0N/A ring.simulate("mouseout", getXYProps());
0N/A Y.Assert.areEqual( 0, dial.get('value'), 'drag CCW past min:0');
0N/A
0N/A eventX = 22; //Set the X for event simulation. This is offset from dial._centerXOnPage
0N/A eventY = -30;
0N/A this.visualInspection(eventX,eventY,dial);
0N/A ring.simulate("mousedown", getXYProps());
0N/A Y.Assert.areEqual( 10, dial.get('value'), 'then click 1 0clock');
0N/A
0N/A dial.set('value', 10);
0N/A
0N/A eventX = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
0N/A eventY = -30;
0N/A this.visualInspection(eventX,eventY,dial);
0N/A ring.simulate("mouseover", getXYProps());
0N/A ring.simulate("mouseout", getXYProps());
0N/A Y.Assert.areEqual( 0, dial.get('value'), 'drag CCW past min:0');
0N/A
0N/A eventX = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
0N/A eventY = -30;
0N/A this.visualInspection(eventX,eventY,dial);
0N/A ring.simulate("mousedown", getXYProps());
0N/A Y.Assert.areEqual( 90, dial.get('value'), 'then click 11 o`clock');
0N/A
0N/A dial.destroy();
0N/A },
726N/A
0N/A "test min:0 max:100 -- mousedown on and off North. Range = one revolution": function() { //string must start with "test
0N/A Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
0N/A var testbed = Y.one("#dial"),
726N/A ref = Y.one("#ref"),
726N/A dial = new Y.Dial({handleDistance: 1, value: 0, min: 0, max: 100 }).render( testbed ),
726N/A ring = Y.one('.yui3-dial-ring'),
726N/A scrollT = Y.one('document').get('scrollTop'),
0N/A scrollL = Y.one('document').get('scrollLeft'),
0N/A
726N/A eventX,
0N/A eventY,
0N/A getXYProps = function(){ // this returns the properties, the object literal needed for .simulate
0N/A return { clientX: (dial._centerXOnPage + eventX - scrollL), clientY: (dial._centerYOnPage + eventY - scrollT)};
726N/A };
0N/A // listeners that bind an event *unused* by Dial to the intended method
0N/A// Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode); // make mouseover do what a real drag:drag would do
0N/A// Y.on('mouseout', Y.bind(dial._handleDragEnd, dial), dial._ringNode); // make mouseover do what a real drag:end would do
0N/A
0N/A eventX = -15; //Set the X for click simulation. This is offset from dial._centerXOnPage
0N/A eventY = -30; //Set the Y for click simulation. This is offset from dial._centerYOnPage
0N/A this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 93, dial.get('value'));
eventX = 0; //Set the X for click simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y for click simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 100, dial.get('value'));
eventX = -15;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 93, dial.get('value'));
eventX = 1;
eventY = 30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 49, dial.get('value'));
eventX = 3;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 2, dial.get('value'));
eventX = 0;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 100, dial.get('value'));
dial.destroy();
},
"test min: 0, max: 200 -- drag past max/max, then click 11 or 1 o'clock.": function() { //string must start with "test
Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
var testbed = Y.one("#dial"),
dial = new Y.Dial({handleDistance: 1, value: 190, min: 0, max: 200 }).render( testbed ),
ring = Y.one('.yui3-dial-ring'),
scrollT = Y.one('document').get('scrollTop'),
scrollL = Y.one('document').get('scrollLeft'),
eventX,
eventY,
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 = 22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y for event simulation.
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
ring.simulate("mouseout", getXYProps());
Y.Assert.areEqual( 200, dial.get('value'), 'drag CW past max:200');
eventX = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 190, dial.get('value'), 'then click 11 0clock');
dial.set('value', 10); ////////////////////////////////////////////////////////
eventX = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
ring.simulate("mouseout", getXYProps());
Y.Assert.areEqual( 0, dial.get('value'), 'drag CCW past min:0');
eventX = 22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 10, dial.get('value'), 'then click 1 0clock');
dial.set('value', 10); /////////////////////////////////////////////
eventX = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
ring.simulate("mouseout", getXYProps());
Y.Assert.areEqual( 0, dial.get('value'), 'drag CCW past min:0');
eventX = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 0, dial.get('value'), 'then click 11 o`clock');
eventX = 22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = 30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 40, dial.get('value'), 'then click 5 o`clock');
dial.destroy();
},
"test min: 0, max: 200 -- click through two revolutions CW": function() { //string must start with "test
Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
var testbed = Y.one("#dial"),
ref = Y.one("#ref"),
dial = new Y.Dial({handleDistance: 1, value: 90, min: 0, max: 200 }).render( testbed ),
ring = Y.one('.yui3-dial-ring'),
scrollT = Y.one('document').get('scrollTop'),
scrollL = Y.one('document').get('scrollLeft'),
eventX,
eventY,
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; //Set the X for click simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y for click simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 93, dial.get('value'));
eventX = 0; //Set the X for click simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y for click simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 100, dial.get('value'));
eventX = 15;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 107, dial.get('value'));
eventX = 1;
eventY = 30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 149, dial.get('value'));
eventX = -2;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 199, dial.get('value'));
eventX = 3;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 200, dial.get('value'));
dial.destroy();
},
"test min: -35, max: 35 -- drag past max/max, then click in/out of range also #2530597." : function() { //string must start with "test
Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
var testbed = Y.one("#dial"),
ref = Y.one("#ref"),
dial = new Y.Dial({handleDistance: 1, value: -25, min: -35, max: 35 }).render( testbed ),
ring = Y.one('.yui3-dial-ring'),
scrollT = Y.one('document').get('scrollTop'),
scrollL = Y.one('document').get('scrollLeft'),
eventX,
eventY,
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 = -22; //Set the X for click simulation. This is offset from dial._centerXOnPage
eventY = 30; //Set the Y for click simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
ring.simulate("mouseout", getXYProps());
Y.Assert.areEqual( -35, dial.get('value'), 'drag CCW past min:-35');
eventX = 30;
eventY = 0;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 25, dial.get('value'), 'then click 3 o`clock');
eventX = -22;
eventY = 30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( -35, dial.get('value'), 'then click 7 o`clock. out of range, min');
eventX = 22;
eventY = 30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 35, dial.get('value'), 'then click 5 o`clock. out of range, max');
//#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
dial.set('value', 10); /////////////////////////////////////////////
dial.set('decimalPlaces', 2);
eventX = -8; // -8 results in value 0.35 ... -12. results in -0.35
eventY = -100; //Set the Y for click simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
ring.simulate("mouseout", getXYProps());
// Y.Assert.areEqual( 0, dial.get('value'), 'drag to get value 0 but angle slightly > 0'); // check dial._prevAng
dial.set('decimalPlaces', 0); // round to integer for Y.assert
eventX = -30;
eventY = 0;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( -25, dial.get('value'), 'then click 9 o`clock.'); //#2530597
//#2530597 issues with min at zero and other zero related problem
// Try the opposite
dial.set('value', -10); /////////////////////////////////////////////
dial.set('decimalPlaces', 2);
eventX = -12; // -8 results in value 0.35 ... -12. results in -0.35
eventY = -100; //Set the Y for click simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
ring.simulate("mouseout", getXYProps());
// Y.Assert.areEqual( 0, dial.get('value'), 'drag to get value 0 but angle slightly < 0'); // check dial._prevAng
dial.set('decimalPlaces', 0); // round to integer for Y.assert
eventX = -30;
eventY = 0;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( -25, dial.get('value'), 'then click 9 o`clock.'); //#2530597
dial.set('value', 0); /////////////////////////////////////////////
eventX = -30;
eventY = 0;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( -25, dial.get('value'), 'then click 9 o`clock.'); //#2530597
dial.set('value', 0); /////////////////////////////////////////////
eventX = 30;
eventY = 0;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 25, dial.get('value'), 'then click 3 o`clock.'); //#2530597
dial.destroy();
},
"test min: 10, max: 25 -- mousedown text min max and opposite mid angle ": function() { //string must start with "test
Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
var testbed = Y.one("#dial"),
ref = Y.one("#ref"),
dial = new Y.Dial({handleDistance: 1, value: 12, min: 10, max: 25 }).render( testbed ),
ring = Y.one('.yui3-dial-ring'),
scrollT = Y.one('document').get('scrollTop'),
scrollL = Y.one('document').get('scrollLeft'),
eventX,
eventY,
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; //Set the X for click simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y for click simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 10, dial.get('value'));
eventX = 28; //Set the X for click simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y for click simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 12, dial.get('value'));
eventX = 25;
eventY = 5;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 25, dial.get('value'));
eventX = -5;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 10, dial.get('value'));
eventX = 3;
eventY = 30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 25, dial.get('value'));
eventX = -30;
eventY = -3;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 10, dial.get('value'));
eventX = 5;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 10, dial.get('value'));
dial.destroy();
},
"test min: 5, max: 80 -- mousedown text min max and opposite mid angle": function() { //string must start with "test
Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
var testbed = Y.one("#dial"),
ref = Y.one("#ref"),
dial = new Y.Dial({handleDistance: 1, value: 60, min: 5, max: 80 }).render( testbed ),
ring = Y.one('.yui3-dial-ring'),
scrollT = Y.one('document').get('scrollTop'),
scrollL = Y.one('document').get('scrollLeft'),
eventX,
eventY,
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 = -5; //Set the X for click simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y for click simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 5, dial.get('value'));
eventX = -30; //Set the X for click simulation. This is offset from dial._centerXOnPage
eventY = 0; //Set the Y for click simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 75, dial.get('value'));
eventX = 15;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 7, dial.get('value'));
eventX = 2;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 5, dial.get('value'));
eventX = -2;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 5, dial.get('value'));
eventX = -30;
eventY = -20;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 80, dial.get('value'));
dial.destroy();
},
"test drag CW past max, then click 11 O'clock -- min: 0, max: 100": function() { //string must start with "test
Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
var testbed = Y.one("#dial"),
ref = Y.one("#ref"),
dial = new Y.Dial({handleDistance: 1, value: 90, min: 0, max: 100 }).render( testbed ),
ring = Y.one('.yui3-dial-ring'),
scrollT = Y.one('document').get('scrollTop'),
scrollL = Y.one('document').get('scrollLeft'),
eventX,
eventY,
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 = 22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y for event simulation.
ring.simulate("mouseover", getXYProps());
ring.simulate("mouseout", getXYProps());
eventX = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 90, dial.get('value'), 'past min CCW, then click 11 0clock');
dial.destroy();
},
"test drag CCW past min, then click 1 O'clock -- min: 0, max: 100": function() { //string must start with "test
Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
var testbed = Y.one("#dial"),
ref = Y.one("#ref"),
dial = new Y.Dial({handleDistance: 1, value: 10, min: 0, max: 100 }).render( testbed ),
ring = Y.one('.yui3-dial-ring'),
scrollT = Y.one('document').get('scrollTop'),
scrollL = Y.one('document').get('scrollLeft'),
eventX,
eventY,
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 = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30;
ring.simulate("mouseover", getXYProps());
ring.simulate("mouseout", getXYProps());
eventX = 22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30;
ring.simulate("mousedown", getXYProps());
Y.Assert.areEqual( 10, dial.get('value'), 'past min CCW, then click 11 0clock');
dial.destroy();
},
"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
Y.one('#testbed').append('<div id="dial"></div><div id="ref"></div>');
var testbed = Y.one("#dial"),
ref = Y.one("#ref"),
dial = new Y.Dial({handleDistance: 1, value: 80, min: 0, max: 100 }).render( testbed ),
ring = Y.one('.yui3-dial-ring'),
scrollT = Y.one('document').get('scrollTop'),
scrollL = Y.one('document').get('scrollLeft'),
eventX,
eventY,
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.
Y.on('mouseover', Y.bind(dial._handleDrag, dial), dial._ringNode);
eventX = -25; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y for event simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 90, dial.get('value'), 'Less than max at 11 oclock');
eventX = 25;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 100, dial.get('value'), '> max at 1 oclock');
eventX = 25;
eventY = 30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 100, dial.get('value'), '> max at 4 oclock');
eventX = -25;
eventY = 30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 100, dial.get('value'), '> max at 7 oclock');
eventX = -25;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 100, dial.get('value'), '> max at 11oclock');
eventX = 25;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 100, dial.get('value'), 'passed max the second time');
eventX = -25;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 90, dial.get('value'), 'was > max, now back to < max');
///////////////////////////////////////// Now do min
dial.set('value', 2);
eventX = -22; //Set the X for event simulation. This is offset from dial._centerXOnPage
eventY = -30; //Set the Y for event simulation. This is offset from dial._centerYOnPage
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 0, dial.get('value'), '< min at 11 oclock');
eventX = -22;
eventY = 30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 0, dial.get('value'), '< min at 7 oclock');
eventX = 22;
eventY = 30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 0, dial.get('value'), '< min at 4 oclock');
eventX = 22;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 0, dial.get('value'), '< min at 1 oclock');
eventX = -10;
eventY = -30;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 0, dial.get('value'), '< min at 11oclock passed min 2nd time');
eventX = 12;
eventY = -40;
this.visualInspection(eventX,eventY,dial);
ring.simulate("mouseover", getXYProps());
Y.Assert.areEqual( 10, dial.get('value'), 'now drag back to > min');
dial.destroy();
} //,
}));
/*
suite.add( new Y.Test.Case({
name: "Bugs",
setUp: function () {
},
tearDown: function () {
},
"test ": function () {
}
}));
*/
Y.Test.Runner.add( suite );
}, '@VERSION@' ,{requires:['test', 'dial']});