3 module("Mouse Interaction");
5 // a simple re-usable test harness object
7 init: function( opts ){
8 obj.$div = $('<div />')
16 .append('<div class="child" />')
17 .appendTo( document.body )
18 .bind("draginit dragstart drag dragend click", opts || {}, function( event ){
19 obj[ event.type ] += 1;
21 $.extend( obj, { draginit:0, dragstart:0, drag:0, dragend:0, click:0 });
29 asyncTest("default",function(){
31 // prep DEFAULT interaction
33 // simulate DEFAULT interaction
35 .fire("mousedown",{ pageX:50, pageY:50 })
36 .fire("mousemove",{ pageX:51, pageY:51 })
37 .fire("mouseup",{ pageX:51, pageY:51 })
40 equals( obj.draginit, 1, "draginit");
41 equals( obj.dragstart, 1, "dragstart");
42 equals( obj.drag, 1, "drag");
43 equals( obj.dragend, 1, "dragend");
44 equals( obj.click, 0, "click");
45 // clean-up interaction
49 asyncTest('"not" option',function(){
52 obj.init({ not:'.child' });
53 // simulate NOT interaction
55 .fire("mousedown",{ pageX:50, pageY:50 })
56 .fire("mousemove",{ pageX:51, pageY:51 })
57 .fire("mouseup",{ pageX:51, pageY:51 })
60 equals( obj.draginit, 0, "draginit");
61 equals( obj.dragstart, 0, "dragstart");
62 equals( obj.drag, 0, "drag");
63 equals( obj.dragend, 0, "dragend");
64 equals( obj.click, 1, "click");
65 // simlate NON NOT interaction
67 .fire("mousedown",{ pageX:50, pageY:50 })
68 .fire("mousemove",{ pageX:51, pageY:51 })
69 .fire("mouseup",{ pageX:51, pageY:51 })
72 equals( obj.draginit, 1, "draginit");
73 equals( obj.dragstart, 1, "dragstart");
74 equals( obj.drag, 1, "drag");
75 equals( obj.dragend, 1, "dragend");
76 equals( obj.click, 1, "click");
77 // clean-up interaction
81 asyncTest('"handle" option',function(){
84 obj.init({ handle:'.child' });
85 // simulate HANDLE interaction
87 .fire("mousedown",{ pageX:50, pageY:50 })
88 .fire("mousemove",{ pageX:51, pageY:51 })
89 .fire("mouseup",{ pageX:51, pageY:51 })
92 equals( obj.draginit, 1, "draginit");
93 equals( obj.dragstart, 1, "dragstart");
94 equals( obj.drag, 1, "drag");
95 equals( obj.dragend, 1, "dragend");
96 equals( obj.click, 0, "click");
97 // simulate NON HANDLE interaction
99 .fire("mousedown",{ pageX:50, pageY:50 })
100 .fire("mousemove",{ pageX:51, pageY:51 })
101 .fire("mouseup",{ pageX:51, pageY:51 })
104 equals( obj.draginit, 1, "draginit");
105 equals( obj.dragstart, 1, "dragstart");
106 equals( obj.drag, 1, "drag");
107 equals( obj.dragend, 1, "dragend");
108 equals( obj.click, 1, "click");
109 // clean-up interaction
113 asyncTest('"which" option',function(){
116 obj.init({ which:3 });
117 // simulate WHICH interaction
119 .fire("mousedown",{ pageX:50, pageY:50, button:2 })
120 .fire("mousemove",{ pageX:51, pageY:51 })
121 .fire("mouseup",{ pageX:51, pageY:51 })
124 equals( obj.draginit, 1, "draginit");
125 equals( obj.dragstart, 1, "dragstart");
126 equals( obj.drag, 1, "drag");
127 equals( obj.dragend, 1, "dragend");
128 equals( obj.click, 0, "click");
129 // simulate NON WHICH interaction
131 .fire("mousedown",{ pageX:50, pageY:50 })
132 .fire("mousemove",{ pageX:51, pageY:51 })
133 .fire("mouseup",{ pageX:51, pageY:51 })
136 equals( obj.draginit, 1, "draginit");
137 equals( obj.dragstart, 1, "dragstart");
138 equals( obj.drag, 1, "drag");
139 equals( obj.dragend, 1, "dragend");
140 equals( obj.click, 1, "click");
141 // clean-up interaction
145 asyncTest('"distance" option',function(){
148 obj.init({ distance:5 });
149 // simulate NON DISTANCE interaction
151 .fire("mousedown",{ pageX:50, pageY:50 })
152 .fire("mousemove",{ pageX:51, pageY:51 })
153 .fire("mouseup",{ pageX:51, pageY:51 })
156 equals( obj.draginit, 1, "draginit");
157 equals( obj.dragstart, 0, "dragstart");
158 equals( obj.drag, 0, "drag");
159 equals( obj.dragend, 0, "dragend");
160 equals( obj.click, 1, "click");
161 // simulate DISTANCE interaction
163 .fire("mousedown",{ pageX:50, pageY:50 })
164 .fire("mousemove",{ pageX:53, pageY:54 })
165 .fire("mouseup",{ pageX:53, pageY:54 })
168 equals( obj.draginit, 2, "draginit");
169 equals( obj.dragstart, 1, "dragstart");
170 equals( obj.drag, 1, "drag");
171 equals( obj.dragend, 1, "dragend");
172 equals( obj.click, 1, "click");
173 // clean-up interaction
178 asyncTest('"click" option',function(){
181 obj.init({ click:true });
182 // simulate CLICK interaction
184 .fire("mousedown",{ pageX:50, pageY:50 })
185 .fire("mousemove",{ pageX:51, pageY:51 })
186 .fire("mouseup",{ pageX:51, pageY:51 })
189 equals( obj.draginit, 1, "draginit");
190 equals( obj.dragstart, 1, "dragstart");
191 equals( obj.drag, 1, "drag");
192 equals( obj.dragend, 1, "dragend");
193 equals( obj.click, 1, "click");
194 // clean-up interaction