1 |
(function( $ ) { |
2 |
|
3 |
var simulateKeyDownUp = TestHelpers.spinner.simulateKeyDownUp; |
4 |
|
5 |
module( "spinner: events" ); |
6 |
|
7 |
test( "start", function() { |
8 |
expect( 10 ); |
9 |
var element = $( "#spin" ).spinner(); |
10 |
|
11 |
function shouldStart( expectation, msg ) { |
12 |
element.spinner( "option", "start", function() { |
13 |
ok( expectation, msg ); |
14 |
}); |
15 |
} |
16 |
|
17 |
shouldStart( true, "key UP" ); |
18 |
simulateKeyDownUp( element, $.ui.keyCode.UP ); |
19 |
shouldStart( true, "key DOWN" ); |
20 |
simulateKeyDownUp( element, $.ui.keyCode.DOWN ); |
21 |
|
22 |
shouldStart( true, "key PAGE_UP" ); |
23 |
simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); |
24 |
shouldStart( true, "key PAGE_DOWN" ); |
25 |
simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); |
26 |
|
27 |
shouldStart( true, "button up" ); |
28 |
element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); |
29 |
shouldStart( true, "button down" ); |
30 |
element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); |
31 |
|
32 |
shouldStart( true, "stepUp" ); |
33 |
element.spinner( "stepUp" ); |
34 |
shouldStart( true, "stepDown" ); |
35 |
element.spinner( "stepDown" ); |
36 |
|
37 |
shouldStart( true, "pageUp" ); |
38 |
element.spinner( "pageUp" ); |
39 |
shouldStart( true, "pageDown" ); |
40 |
element.spinner( "pageDown" ); |
41 |
|
42 |
shouldStart( false, "value" ); |
43 |
element.spinner( "value", 999 ); |
44 |
}); |
45 |
|
46 |
test( "spin", function() { |
47 |
expect( 10 ); |
48 |
var element = $( "#spin" ).spinner(); |
49 |
|
50 |
function shouldSpin( expectation, msg ) { |
51 |
element.spinner( "option", "spin", function() { |
52 |
ok( expectation, msg ); |
53 |
}); |
54 |
} |
55 |
|
56 |
shouldSpin( true, "key UP" ); |
57 |
simulateKeyDownUp( element, $.ui.keyCode.UP ); |
58 |
shouldSpin( true, "key DOWN" ); |
59 |
simulateKeyDownUp( element, $.ui.keyCode.DOWN ); |
60 |
|
61 |
shouldSpin( true, "key PAGE_UP" ); |
62 |
simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); |
63 |
shouldSpin( true, "key PAGE_DOWN" ); |
64 |
simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); |
65 |
|
66 |
shouldSpin( true, "button up" ); |
67 |
element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); |
68 |
shouldSpin( true, "button down" ); |
69 |
element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); |
70 |
|
71 |
shouldSpin( true, "stepUp" ); |
72 |
element.spinner( "stepUp" ); |
73 |
shouldSpin( true, "stepDown" ); |
74 |
element.spinner( "stepDown" ); |
75 |
|
76 |
shouldSpin( true, "pageUp" ); |
77 |
element.spinner( "pageUp" ); |
78 |
shouldSpin( true, "pageDown" ); |
79 |
element.spinner( "pageDown" ); |
80 |
|
81 |
shouldSpin( false, "value" ); |
82 |
element.spinner( "value", 999 ); |
83 |
}); |
84 |
|
85 |
test( "stop", function() { |
86 |
expect( 10 ); |
87 |
var element = $( "#spin" ).spinner(); |
88 |
|
89 |
function shouldStop( expectation, msg ) { |
90 |
element.spinner( "option", "stop", function() { |
91 |
ok( expectation, msg ); |
92 |
}); |
93 |
} |
94 |
|
95 |
shouldStop( true, "key UP" ); |
96 |
simulateKeyDownUp( element, $.ui.keyCode.UP ); |
97 |
shouldStop( true, "key DOWN" ); |
98 |
simulateKeyDownUp( element, $.ui.keyCode.DOWN ); |
99 |
|
100 |
shouldStop( true, "key PAGE_UP" ); |
101 |
simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); |
102 |
shouldStop( true, "key PAGE_DOWN" ); |
103 |
simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); |
104 |
|
105 |
shouldStop( true, "button up" ); |
106 |
element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); |
107 |
shouldStop( true, "button down" ); |
108 |
element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); |
109 |
|
110 |
shouldStop( true, "stepUp" ); |
111 |
element.spinner( "stepUp" ); |
112 |
shouldStop( true, "stepDown" ); |
113 |
element.spinner( "stepDown" ); |
114 |
|
115 |
shouldStop( true, "pageUp" ); |
116 |
element.spinner( "pageUp" ); |
117 |
shouldStop( true, "pageDown" ); |
118 |
element.spinner( "pageDown" ); |
119 |
|
120 |
shouldStop( false, "value" ); |
121 |
element.spinner( "value", 999 ); |
122 |
}); |
123 |
|
124 |
asyncTest( "change", function() { |
125 |
expect( 14 ); |
126 |
var element = $( "#spin" ).spinner(); |
127 |
|
128 |
function shouldChange( expectation, msg ) { |
129 |
element.spinner( "option", "change", function() { |
130 |
ok( expectation, msg ); |
131 |
}); |
132 |
} |
133 |
|
134 |
function focusWrap( fn, next ) { |
135 |
element[0].focus(); |
136 |
setTimeout( function() { |
137 |
fn(); |
138 |
setTimeout(function() { |
139 |
element[0].blur(); |
140 |
setTimeout( next ); |
141 |
}); |
142 |
}); |
143 |
} |
144 |
|
145 |
function step1() { |
146 |
focusWrap(function() { |
147 |
shouldChange( false, "key UP, before blur" ); |
148 |
simulateKeyDownUp( element, $.ui.keyCode.UP ); |
149 |
shouldChange( true, "blur after key UP" ); |
150 |
}, step2 ); |
151 |
} |
152 |
|
153 |
function step2() { |
154 |
focusWrap(function() { |
155 |
shouldChange( false, "key DOWN, before blur" ); |
156 |
simulateKeyDownUp( element, $.ui.keyCode.DOWN ); |
157 |
shouldChange( true, "blur after key DOWN" ); |
158 |
}, step3 ); |
159 |
} |
160 |
|
161 |
function step3() { |
162 |
focusWrap(function() { |
163 |
shouldChange( false, "key PAGE_UP, before blur" ); |
164 |
simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); |
165 |
shouldChange( true, "blur after key PAGE_UP" ); |
166 |
}, step4 ); |
167 |
} |
168 |
|
169 |
function step4() { |
170 |
focusWrap(function() { |
171 |
shouldChange( false, "key PAGE_DOWN, before blur" ); |
172 |
simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); |
173 |
shouldChange( true, "blur after key PAGE_DOWN" ); |
174 |
}, step5 ); |
175 |
} |
176 |
|
177 |
function step5() { |
178 |
focusWrap(function() { |
179 |
shouldChange( false, "many keys, before blur" ); |
180 |
simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); |
181 |
simulateKeyDownUp( element, $.ui.keyCode.UP ); |
182 |
simulateKeyDownUp( element, $.ui.keyCode.UP ); |
183 |
simulateKeyDownUp( element, $.ui.keyCode.UP ); |
184 |
simulateKeyDownUp( element, $.ui.keyCode.DOWN ); |
185 |
shouldChange( true, "blur after many keys" ); |
186 |
}, step6 ); |
187 |
} |
188 |
|
189 |
function step6() { |
190 |
focusWrap(function() { |
191 |
shouldChange( false, "many keys, same final value, before blur" ); |
192 |
simulateKeyDownUp( element, $.ui.keyCode.UP ); |
193 |
simulateKeyDownUp( element, $.ui.keyCode.UP ); |
194 |
simulateKeyDownUp( element, $.ui.keyCode.DOWN ); |
195 |
simulateKeyDownUp( element, $.ui.keyCode.DOWN ); |
196 |
shouldChange( false, "blur after many keys, same final value" ); |
197 |
|
198 |
shouldChange( false, "button up, before blur" ); |
199 |
element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); |
200 |
shouldChange( true, "blur after button up" ); |
201 |
}, step7 ); |
202 |
} |
203 |
|
204 |
function step7() { |
205 |
focusWrap(function() { |
206 |
shouldChange( false, "button down, before blur" ); |
207 |
element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); |
208 |
shouldChange( true, "blur after button down" ); |
209 |
}, step8 ); |
210 |
} |
211 |
|
212 |
function step8() { |
213 |
focusWrap(function() { |
214 |
shouldChange( false, "many buttons, same final value, before blur" ); |
215 |
element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); |
216 |
element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup(); |
217 |
element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); |
218 |
element.spinner( "widget" ).find( ".ui-spinner-down" ).mousedown().mouseup(); |
219 |
shouldChange( false, "blur after many buttons, same final value" ); |
220 |
}, step9 ); |
221 |
} |
222 |
|
223 |
function step9() { |
224 |
shouldChange( true, "stepUp" ); |
225 |
element.spinner( "stepUp" ); |
226 |
|
227 |
shouldChange( true, "stepDown" ); |
228 |
element.spinner( "stepDown" ); |
229 |
|
230 |
shouldChange( true, "pageUp" ); |
231 |
element.spinner( "pageUp" ); |
232 |
|
233 |
shouldChange( true, "pageDown" ); |
234 |
element.spinner( "pageDown" ); |
235 |
|
236 |
shouldChange( true, "value" ); |
237 |
element.spinner( "value", 999 ); |
238 |
|
239 |
shouldChange( false, "value, same value" ); |
240 |
element.spinner( "value", 999 ); |
241 |
|
242 |
shouldChange( true, "max, value changed" ); |
243 |
element.spinner( "option", "max", 900 ); |
244 |
|
245 |
shouldChange( false, "max, value not changed" ); |
246 |
element.spinner( "option", "max", 1000 ); |
247 |
|
248 |
shouldChange( true, "min, value changed" ); |
249 |
element.spinner( "option", "min", 950 ); |
250 |
|
251 |
shouldChange( false, "min, value not changed" ); |
252 |
element.spinner( "option", "min", 200 ); |
253 |
start(); |
254 |
} |
255 |
|
256 |
setTimeout( step1 ); |
257 |
}); |
258 |
|
259 |
})( jQuery ); |