1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
;(function(){
module("Event Handlers");
// a simple re-usable test harness object
var obj = {
init: function( opts ){
obj.$div = $('<div />')
.css({
position: 'absolute',
top: 0,
left: 0,
height: 100,
width: 100
})
.append('<div class="child" />')
.appendTo( document.body )
.bind("lingerstart linger lingerend", opts || {}, function( event ){
obj[ event.type ] += 1;
return obj.returned[ event.type ];
});
$.extend( obj, { lingerstart:0, linger:0, lingerend:0 });
obj.returned = {};
},
done: function(){
obj.$div.remove();
start();
}
};
asyncTest('"lingerstart" return false',function(){
expect( 3 );
// prep interaction
obj.init();
// set the return value
obj.returned['lingerstart'] = false;
// simulate interaction
obj.$div
.fire("mouseover",{ pageX:50, pageY:50 })
.fire("mousemove",{ pageX:56, pageY:58 }); // move <= 10 pixels (default speed)
// wait 100 ms (default delay)
setTimeout(function(){
obj.$div.fire("mouseout",{ pageX:51, pageY:51 });
// wait 100 ms (persist)
setTimeout(function(){
// inspect results
equals( obj.lingerstart, 1, "lingerstart");
equals( obj.linger, 0, "linger");
equals( obj.lingerend, 0, "lingerend");
obj.done();
}, 100 );
}, 100 );
});
asyncTest('"linger" return false',function(){
expect( 3 );
// prep interaction
obj.init({ persist:100 });
// set the return value
obj.returned['linger'] = false;
// simulate interaction
obj.$div
.fire("mouseover",{ pageX:50, pageY:50 })
.fire("mousemove",{ pageX:56, pageY:58 }); // move <= 10 pixels (default speed)
// wait 300 ms (3x default delay)
setTimeout(function(){
obj.$div.fire("mouseout",{ pageX:51, pageY:51 });
// wait 100 ms (persist)
setTimeout(function(){
// inspect results
equals( obj.lingerstart, 1, "lingerstart");
equals( obj.linger, 3, "linger");
equals( obj.lingerend, 0, "lingerend");
obj.done();
}, 100 );
}, 350 );
});
asyncTest('"lingerend" return false',function(){
expect( 3 );
// prep interaction
obj.init({ persist:100 });
// set the return value
obj.returned['lingerend'] = false;
// simulate interaction
obj.$div
.fire("mouseover",{ pageX:50, pageY:50 })
.fire("mousemove",{ pageX:56, pageY:58 }); // move <= 10 pixels (default speed)
// wait 100 ms (default delay)
setTimeout(function(){
obj.$div.fire("mouseout",{ pageX:51, pageY:51 });
// wait 300 ms (3x persist)
setTimeout(function(){
// inspect results
equals( obj.lingerstart, 1, "lingerstart");
equals( obj.linger, 1, "linger");
equals( obj.lingerend, 3, "lingerend");
obj.done();
}, 350 );
}, 300 );
});
})();
|