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("lingerstart linger lingerend", opts || {}, function( event ){
19 obj.counts[ event.type ] += 1;
21 obj.counts = { lingerstart:0, linger:0, lingerend:0 };
29 asyncTest("defaults",function(){
35 // simulate interaction
37 .fire("mouseover",{ pageX:50, pageY:50 })
38 .fire("mousemove",{ pageX:56, pageY:58 }); // move <= 10 pixels (default speed)
39 // wait 100 ms (default delay)
40 setTimeout(function(){
41 obj.$div.fire("mouseout",{ pageX:51, pageY:51 });
42 // wait 400 ms (default persist)
43 setTimeout(function(){
45 equals( obj.counts.lingerstart, 1, "lingerstart");
46 equals( obj.counts.linger, 1, "linger");
47 equals( obj.counts.lingerend, 1, "lingerend");
53 asyncTest("speed (miss)",function(){
58 obj.init({ speed:200 });
59 // simulate interaction
61 .fire("mouseover",{ pageX:50, pageY:50 })
62 .fire("mousemove",{ pageX:63, pageY:67 }); // move > 20 pixels (custom speed)
63 // wait 100 ms (default delay)
64 setTimeout(function(){
65 obj.$div.fire("mouseout",{ pageX:51, pageY:51 });
66 // wait 400 ms (default persist)
67 setTimeout(function(){
69 equals( obj.counts.lingerstart, 1, "lingerstart");
70 equals( obj.counts.linger, 0, "linger");
71 equals( obj.counts.lingerend, 0, "lingerend");
77 asyncTest("speed (hit)",function(){
82 obj.init({ speed:200 });
83 // simulate interaction
85 .fire("mouseover",{ pageX:50, pageY:50 })
86 .fire("mousemove",{ pageX:62, pageY:66 }); // move <= 20 pixels (custom speed)
87 // wait 100 ms (default delay)
88 setTimeout(function(){
89 obj.$div.fire("mouseout",{ pageX:51, pageY:51 });
90 // wait 400 ms (default persist)
91 setTimeout(function(){
93 equals( obj.counts.lingerstart, 1, "lingerstart");
94 equals( obj.counts.linger, 1, "linger");
95 equals( obj.counts.lingerend, 1, "lingerend");
101 asyncTest("delay (miss)",function(){
106 obj.init({ delay:200 });
107 // simulate interaction
109 .fire("mouseover",{ pageX:50, pageY:50 })
110 .fire("mousemove",{ pageX:56, pageY:58 }); // move <= 10 pixels (default speed)
111 // wait < 200 ms (custom delay)
112 setTimeout(function(){
113 obj.$div.fire("mouseout",{ pageX:51, pageY:51 });
114 // wait 400 ms (default persist)
115 setTimeout(function(){
117 equals( obj.counts.lingerstart, 1, "lingerstart");
118 equals( obj.counts.linger, 0, "linger");
119 equals( obj.counts.lingerend, 0, "lingerend");
125 asyncTest("delay (hit)",function(){
130 obj.init({ delay:200 });
131 // simulate interaction
133 .fire("mouseover",{ pageX:50, pageY:50 })
134 .fire("mousemove",{ pageX:56, pageY:58 }); // move <= 10 pixels (default speed)
135 // wait 200 ms (custom delay)
136 setTimeout(function(){
137 obj.$div.fire("mouseout",{ pageX:51, pageY:51 });
138 // wait 400 ms (default persist)
139 setTimeout(function(){
141 equals( obj.counts.lingerstart, 1, "lingerstart");
142 equals( obj.counts.linger, 1, "linger");
143 equals( obj.counts.lingerend, 1, "lingerend");
149 asyncTest("persist (miss)",function(){
154 obj.init({ persist:200 });
155 // simulate interaction
157 .fire("mouseover",{ pageX:50, pageY:50 })
158 .fire("mousemove",{ pageX:56, pageY:58 }); // move <= 10 pixels (default speed)
159 // wait 100 ms (default delay)
160 setTimeout(function(){
161 obj.$div.fire("mouseout",{ pageX:51, pageY:51 });
162 // wait < 200 ms (custom persist)
163 setTimeout(function(){
165 equals( obj.counts.lingerstart, 1, "lingerstart");
166 equals( obj.counts.linger, 1, "linger");
167 equals( obj.counts.lingerend, 0, "lingerend");
168 setTimeout(function(){
175 asyncTest("persist (hit)",function(){
180 obj.init({ persist:200 });
181 // simulate interaction
183 .fire("mouseover",{ pageX:50, pageY:50 })
184 .fire("mousemove",{ pageX:56, pageY:58 }); // move <= 10 pixels (default speed)
185 // wait 100 ms (default delay)
186 setTimeout(function(){
187 obj.$div.fire("mouseout",{ pageX:51, pageY:51 });
188 // wait 200 ms (custom persist)
189 setTimeout(function(){
191 equals( obj.counts.lingerstart, 1, "lingerstart");
192 equals( obj.counts.linger, 1, "linger");
193 equals( obj.counts.lingerend, 1, "lingerend");
200 asyncTest("persist (re-enter)",function(){
205 obj.init({ persist:200 });
206 // simulate interaction
208 .fire("mouseover",{ pageX:50, pageY:50 })
209 .fire("mousemove",{ pageX:56, pageY:58 }); // move <= 10 pixels (default speed)
210 // wait 100 ms (default delay)
211 setTimeout(function(){
212 obj.$div.fire("mouseout",{ pageX:51, pageY:51 })
213 // wait < 200 ms (custom persist)
214 setTimeout(function(){
215 // re-enter the element
216 obj.$div.fire("mouseover",{ pageX:50, pageY:50 });
217 // wait 200 ms (custom persist)
218 setTimeout(function(){
220 equals( obj.counts.lingerstart, 1, "lingerstart");
221 equals( obj.counts.linger, 1, "linger");
222 equals( obj.counts.lingerend, 0, "lingerend");