1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" |
---|
2 | "http://www.w3.org/TR/html4/strict.dtd"> |
---|
3 | <html> |
---|
4 | <head> |
---|
5 | <title>doh.robot mouse events tests</title> |
---|
6 | |
---|
7 | <style> |
---|
8 | @import "../../../util/doh/robot/robot.css"; |
---|
9 | </style> |
---|
10 | |
---|
11 | <!-- required: dojo.js --> |
---|
12 | <script type="text/javascript" src="../../../dojo/dojo.js" |
---|
13 | djConfig="isDebug: true"></script> |
---|
14 | |
---|
15 | <script type="text/javascript"> |
---|
16 | dojo.require("dojo.robotx"); |
---|
17 | |
---|
18 | dojo.addOnLoad(function(){ |
---|
19 | doh.robot.initRobot('eventMouse.html'); |
---|
20 | |
---|
21 | var moveEvents, clickEvents; |
---|
22 | var outer = dojo.byId("outer"), |
---|
23 | middle = dojo.byId("middle"); |
---|
24 | |
---|
25 | doh.register("mouseenter/mouseleave", [ |
---|
26 | { |
---|
27 | name: "setup", |
---|
28 | timeout: 5000, |
---|
29 | runTest: function(){ |
---|
30 | var d = new doh.Deferred(); |
---|
31 | |
---|
32 | doh.robot.mouseMoveAt("header", 500, 500); |
---|
33 | doh.robot.mouseClick({left: true}, 500); |
---|
34 | |
---|
35 | doh.robot.sequence(d.getTestCallback(function(){ |
---|
36 | }), 250); |
---|
37 | |
---|
38 | return d; |
---|
39 | } |
---|
40 | }, |
---|
41 | { |
---|
42 | name: "enter middle", |
---|
43 | timeout: 5000, |
---|
44 | runTest: function(){ |
---|
45 | var d = new doh.Deferred(); |
---|
46 | |
---|
47 | moveEvents = dojo.global.moveEvents = []; |
---|
48 | |
---|
49 | doh.robot.mouseMoveAt("middleLabel", 500, 500); |
---|
50 | |
---|
51 | doh.robot.sequence(d.getTestCallback(function(){ |
---|
52 | doh.is(1, moveEvents.length, "one event"); |
---|
53 | doh.is("mouseenter", moveEvents[0].event); |
---|
54 | doh.is("outer", moveEvents[0].target); |
---|
55 | }), 500); |
---|
56 | |
---|
57 | return d; |
---|
58 | } |
---|
59 | }, |
---|
60 | { |
---|
61 | name: "enter inner1", |
---|
62 | timeout: 5000, |
---|
63 | runTest: function(){ |
---|
64 | var d = new doh.Deferred(); |
---|
65 | |
---|
66 | moveEvents = dojo.global.moveEvents = []; |
---|
67 | |
---|
68 | doh.robot.mouseMoveAt("inner1", 500, 500); |
---|
69 | |
---|
70 | doh.robot.sequence(d.getTestCallback(function(){ |
---|
71 | doh.is(0, moveEvents.length, "no events"); |
---|
72 | }), 500); |
---|
73 | |
---|
74 | return d; |
---|
75 | } |
---|
76 | }, |
---|
77 | { |
---|
78 | name: "after outer", |
---|
79 | timeout: 5000, |
---|
80 | runTest: function(){ |
---|
81 | var d = new doh.Deferred(); |
---|
82 | |
---|
83 | moveEvents = dojo.global.moveEvents = []; |
---|
84 | |
---|
85 | doh.robot.mouseMoveAt("afterOuter", 500, 500); |
---|
86 | |
---|
87 | doh.robot.sequence(d.getTestCallback(function(){ |
---|
88 | doh.is(1, moveEvents.length, "one event"); |
---|
89 | doh.is("mouseleave", moveEvents[0].event); |
---|
90 | doh.is("outer", moveEvents[0].target); |
---|
91 | }), 500); |
---|
92 | |
---|
93 | return d; |
---|
94 | } |
---|
95 | } |
---|
96 | ]); |
---|
97 | |
---|
98 | doh.register("mousedown, stopEvent", [ |
---|
99 | { |
---|
100 | name: "mousedown inner1 div", |
---|
101 | timeout: 5000, |
---|
102 | runTest: function(){ |
---|
103 | var d = new doh.Deferred(); |
---|
104 | |
---|
105 | downEvents = dojo.global.downEvents = []; |
---|
106 | |
---|
107 | doh.robot.mouseMoveAt("inner1", 500, 500); |
---|
108 | doh.robot.mouseClick({left: true}, 500); |
---|
109 | |
---|
110 | doh.robot.sequence(d.getTestCallback(function(){ |
---|
111 | doh.is(2, downEvents.length, "two mousedown events"); |
---|
112 | doh.is("mousedown", downEvents[0].event, "downEvents[0].event"); |
---|
113 | doh.is("inner1", downEvents[0].target, "downEvents[0].target"); |
---|
114 | doh.t(downEvents[0].isLeft, "downEvents[0].isLeft"); |
---|
115 | doh.f(downEvents[0].isRight, "downEvents[0].isRight"); |
---|
116 | |
---|
117 | doh.is("mousedown", downEvents[1].event, "downEvents[1].event"); |
---|
118 | doh.is("middle", downEvents[1].currentTarget, "downEvents[1].currentTarget"); |
---|
119 | doh.is("inner1", downEvents[1].target, "downEvents[1].target"); |
---|
120 | doh.t(downEvents[1].isLeft, "downEvents[1].isLeft"); |
---|
121 | doh.f(downEvents[1].isRight, "downEvents[1].isRight"); |
---|
122 | |
---|
123 | // mousedown event shouldn't reach outer because of middle's stopEvent() |
---|
124 | }), 500); |
---|
125 | |
---|
126 | return d; |
---|
127 | } |
---|
128 | }, |
---|
129 | { |
---|
130 | name: "mousedown outer div", |
---|
131 | timeout: 5000, |
---|
132 | runTest: function(){ |
---|
133 | var d = new doh.Deferred(); |
---|
134 | |
---|
135 | downEvents = dojo.global.downEvents = []; |
---|
136 | |
---|
137 | doh.robot.mouseMoveAt("outerLabel", 500, 500); |
---|
138 | doh.robot.mouseClick({middle: true}, 500); |
---|
139 | |
---|
140 | doh.robot.sequence(d.getTestCallback(function(){ |
---|
141 | doh.is(1, downEvents.length, "one event"); |
---|
142 | doh.is("mousedown", downEvents[0].event); |
---|
143 | doh.is("outerLabel", downEvents[0].target); |
---|
144 | doh.is("outer", downEvents[0].currentTarget); |
---|
145 | doh.f(downEvents[0].isLeft, "downEvents[0].isLeft"); |
---|
146 | doh.t(downEvents[0].isMiddle, "downEvents[0].isMiddle"); |
---|
147 | }), 500); |
---|
148 | |
---|
149 | return d; |
---|
150 | } |
---|
151 | } |
---|
152 | ]); |
---|
153 | |
---|
154 | // TODO: evt.relatedTarget |
---|
155 | // TODO: evt.pageX, evt.pageY |
---|
156 | doh.run(); |
---|
157 | }); |
---|
158 | </script> |
---|
159 | </head> |
---|
160 | </html> |
---|