3 module("Tolerance Mode");
5 // re-usable test harness object
7 init: function( opts ){
9 obj.$drop = $('<div />')
17 .appendTo( document.body )
18 .bind("dropinit",function( event ){
23 .appendTo( document.body )
26 .bind("drop",function( event ){
30 obj.$drag = $('<div />')
38 .appendTo( document.body )
39 .bind("draginit", function( event ){
44 .appendTo( document.body )
47 .bind("dragstart",function( ev, dd ){
49 return $( this ).clone()
51 .appendTo( document.body );
53 .bind("drag",function( ev, dd ){
60 .bind("dragend",function( ev, dd ){
61 var $div = $( this ).css({
65 $( document.body ).find('.clone').remove();
69 obj.move = obj.proxy = obj.multidrag = obj.multidrop = null;
79 function asyncEach( obj, func, after ){
81 var arr = [], i = 0, len;
82 // translate into a secondary array
83 $.each( obj, function( index, value ){
84 len = arr.push({ that:this, index:index, value:value });
87 var data = arr[ i++ ], ret;
90 ret = func.call( data.that, data.index, data.value, next );
106 'overlap':[0,0,0,0,0],
107 'middle':[0,0,0,0,0],
113 'overlap':[0,1,1,2,4],
114 'middle':[0,1,1,2,4],
120 'overlap':[0,0,0,0,0],
121 'middle':[0,1,1,2,4],
127 'overlap':[0,0,0,0,0],
128 'middle':[0,0,0,0,0],
134 'overlap':[0,1,1,2,4],
135 'middle':[0,1,1,2,4],
140 }, function( mode, expected ){
143 asyncTest('"'+ mode +'"',function(){
153 // drag to each position
155 'overlap':{ pageX:33, pageY:33 },
156 'middle':{ pageX:66, pageY:66 },
157 'fit':{ pageX:100, pageY:100 },
158 'mouse':{ pageX:250, pageY:250 },
159 'away':{ pageX:-1, pageY:-1 }
160 }, function( where, coord, next ){
161 // execute interaction variants
163 'dropped '+ where +' (no motion)',
164 'dropped '+ where +' (drag motion)',
165 'dropped '+ where +' (proxy motion)',
166 'dropped '+ where +' (multi drag)',
167 'dropped '+ where +' (multi drop)'
168 ], function( i, msg, next ){
171 obj.move = ( i > 0 );
172 obj.proxy = ( i > 1 );
173 obj.multidrag = ( i > 2 );
174 obj.multidrop = ( i > 3 );
175 // simulate a partial drag
177 .fire("mousedown",{ pageX:0, pageY:0 })
178 .fire("mousemove", coord )
179 .fire("mouseup", coord )
180 .fire("click", coord );
181 equals( obj.count, expected[where][i], msg );