3 var simulateKeyDownUp = TestHelpers.spinner.simulateKeyDownUp;
5 module( "spinner: events" );
7 test( "start", function() {
9 var element = $( "#spin" ).spinner();
11 function shouldStart( expectation, msg ) {
12 element.spinner( "option", "start", function() {
13 ok( expectation, msg );
17 shouldStart( true, "key UP" );
18 simulateKeyDownUp( element, $.ui.keyCode.UP );
19 shouldStart( true, "key DOWN" );
20 simulateKeyDownUp( element, $.ui.keyCode.DOWN );
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 );
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();
32 shouldStart( true, "stepUp" );
33 element.spinner( "stepUp" );
34 shouldStart( true, "stepDown" );
35 element.spinner( "stepDown" );
37 shouldStart( true, "pageUp" );
38 element.spinner( "pageUp" );
39 shouldStart( true, "pageDown" );
40 element.spinner( "pageDown" );
42 shouldStart( false, "value" );
43 element.spinner( "value", 999 );
46 test( "spin", function() {
48 var element = $( "#spin" ).spinner();
50 function shouldSpin( expectation, msg ) {
51 element.spinner( "option", "spin", function() {
52 ok( expectation, msg );
56 shouldSpin( true, "key UP" );
57 simulateKeyDownUp( element, $.ui.keyCode.UP );
58 shouldSpin( true, "key DOWN" );
59 simulateKeyDownUp( element, $.ui.keyCode.DOWN );
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 );
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();
71 shouldSpin( true, "stepUp" );
72 element.spinner( "stepUp" );
73 shouldSpin( true, "stepDown" );
74 element.spinner( "stepDown" );
76 shouldSpin( true, "pageUp" );
77 element.spinner( "pageUp" );
78 shouldSpin( true, "pageDown" );
79 element.spinner( "pageDown" );
81 shouldSpin( false, "value" );
82 element.spinner( "value", 999 );
85 test( "stop", function() {
87 var element = $( "#spin" ).spinner();
89 function shouldStop( expectation, msg ) {
90 element.spinner( "option", "stop", function() {
91 ok( expectation, msg );
95 shouldStop( true, "key UP" );
96 simulateKeyDownUp( element, $.ui.keyCode.UP );
97 shouldStop( true, "key DOWN" );
98 simulateKeyDownUp( element, $.ui.keyCode.DOWN );
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 );
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();
110 shouldStop( true, "stepUp" );
111 element.spinner( "stepUp" );
112 shouldStop( true, "stepDown" );
113 element.spinner( "stepDown" );
115 shouldStop( true, "pageUp" );
116 element.spinner( "pageUp" );
117 shouldStop( true, "pageDown" );
118 element.spinner( "pageDown" );
120 shouldStop( false, "value" );
121 element.spinner( "value", 999 );
124 asyncTest( "change", function() {
126 var element = $( "#spin" ).spinner();
128 function shouldChange( expectation, msg ) {
129 element.spinner( "option", "change", function() {
130 ok( expectation, msg );
134 function focusWrap( fn, next ) {
136 setTimeout( function() {
138 setTimeout(function() {
146 focusWrap(function() {
147 shouldChange( false, "key UP, before blur" );
148 simulateKeyDownUp( element, $.ui.keyCode.UP );
149 shouldChange( true, "blur after key UP" );
154 focusWrap(function() {
155 shouldChange( false, "key DOWN, before blur" );
156 simulateKeyDownUp( element, $.ui.keyCode.DOWN );
157 shouldChange( true, "blur after key DOWN" );
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" );
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" );
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" );
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" );
198 shouldChange( false, "button up, before blur" );
199 element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown().mouseup();
200 shouldChange( true, "blur after button up" );
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" );
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" );
224 shouldChange( true, "stepUp" );
225 element.spinner( "stepUp" );
227 shouldChange( true, "stepDown" );
228 element.spinner( "stepDown" );
230 shouldChange( true, "pageUp" );
231 element.spinner( "pageUp" );
233 shouldChange( true, "pageDown" );
234 element.spinner( "pageDown" );
236 shouldChange( true, "value" );
237 element.spinner( "value", 999 );
239 shouldChange( false, "value, same value" );
240 element.spinner( "value", 999 );
242 shouldChange( true, "max, value changed" );
243 element.spinner( "option", "max", 900 );
245 shouldChange( false, "max, value not changed" );
246 element.spinner( "option", "max", 1000 );
248 shouldChange( true, "min, value changed" );
249 element.spinner( "option", "min", 950 );
251 shouldChange( false, "min, value not changed" );
252 element.spinner( "option", "min", 200 );