imported the whole jquery-ui package, refreshed with 1.10.2
[myslice.git] / third-party / jquery-ui-1.10.2 / tests / unit / spinner / spinner_events.js
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 );