bea5f91222c0d0ba93d54b83c670c588aa3d4760
[myslice.git] / third-party / jquery-ui-1.10.2 / tests / unit / spinner / spinner_core.js
1 (function( $ ) {
2
3 var simulateKeyDownUp = TestHelpers.spinner.simulateKeyDownUp;
4
5 module( "spinner: core" );
6
7 test( "keydown UP on input, increases value not greater than max", function() {
8         expect( 5 );
9         var element = $( "#spin" ).val( 70 ).spinner({
10                 max: 100,
11                 step: 10
12         });
13
14         simulateKeyDownUp( element, $.ui.keyCode.UP );
15         equal( element.val(), 80 );
16         simulateKeyDownUp( element, $.ui.keyCode.UP );
17         equal( element.val(), 90 );
18         simulateKeyDownUp( element, $.ui.keyCode.UP );
19         equal( element.val(), 100 );
20         simulateKeyDownUp( element, $.ui.keyCode.UP );
21         equal( element.val(), 100 );
22         simulateKeyDownUp( element, $.ui.keyCode.UP );
23         equal( element.val(), 100 );
24 });
25
26 test( "keydown DOWN on input, decreases value not less than min", function() {
27         expect( 5 );
28         var element = $( "#spin" ).val( 50 ).spinner({
29                 min: 20,
30                 step: 10
31         });
32
33         simulateKeyDownUp( element, $.ui.keyCode.DOWN );
34         equal( element.val(), 40 );
35         simulateKeyDownUp( element, $.ui.keyCode.DOWN );
36         equal( element.val(), 30 );
37         simulateKeyDownUp( element, $.ui.keyCode.DOWN );
38         equal( element.val(), 20 );
39         simulateKeyDownUp( element, $.ui.keyCode.DOWN );
40         equal( element.val(), 20 );
41         simulateKeyDownUp( element, $.ui.keyCode.DOWN );
42         equal( element.val(), 20 );
43 });
44
45 test( "keydown PAGE_UP on input, increases value not greater than max", function() {
46         expect( 5 );
47         var element = $( "#spin" ).val( 70 ).spinner({
48                 max: 100,
49                 page: 10
50         });
51
52         simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
53         equal( element.val(), 80 );
54         simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
55         equal( element.val(), 90 );
56         simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
57         equal( element.val(), 100 );
58         simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
59         equal( element.val(), 100 );
60         simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP );
61         equal( element.val(), 100 );
62 });
63
64 test( "keydown PAGE_DOWN on input, decreases value not less than min", function() {
65         expect( 5 );
66         var element = $( "#spin" ).val( 50 ).spinner({
67                 min: 20,
68                 page: 10
69         });
70
71         simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
72         equal( element.val(), 40 );
73         simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
74         equal( element.val(), 30 );
75         simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
76         equal( element.val(), 20 );
77         simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
78         equal( element.val(), 20 );
79         simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN );
80         equal( element.val(), 20 );
81 });
82
83 asyncTest( "blur input while spinning with UP", function() {
84         expect( 3 );
85         var value,
86                 element = $( "#spin" ).val( 10 ).spinner();
87
88         function step1() {
89                 element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
90                 equal( element.val(), 11 );
91                 setTimeout( step2, 750 );
92         }
93
94         function step2() {
95                 value = element.val();
96                 ok( value > 11, "repeating while key is down" );
97                 element[0].blur();
98                 setTimeout( step3, 250 );
99         }
100
101         function step3() {
102                 equal( element.val(), value, "stopped repeating on blur" );
103                 start();
104         }
105
106         element[ 0 ].focus();
107         setTimeout( step1 );
108 });
109
110 test( "mouse click on up button, increases value not greater than max", function() {
111         expect( 3 );
112         var element = $( "#spin" ).val( 18 ).spinner({
113                         max: 20
114                 }),
115                 button = element.spinner( "widget" ).find( ".ui-spinner-up" );
116
117         button.trigger( "mousedown" ).trigger( "mouseup" );
118         equal( element.val(), 19 );
119         button.trigger( "mousedown" ).trigger( "mouseup" );
120         equal( element.val(), 20 );
121         button.trigger( "mousedown" ).trigger( "mouseup" );
122         equal( element.val(), 20 );
123 });
124
125 test( "mouse click on up button, increases value not greater than max", function() {
126         expect( 3 );
127         var element = $( "#spin" ).val( 2 ).spinner({
128                 min: 0
129         }),
130         button = element.spinner( "widget" ).find( ".ui-spinner-down" );
131
132         button.trigger( "mousedown" ).trigger( "mouseup" );
133         equal( element.val(), 1 );
134         button.trigger( "mousedown" ).trigger( "mouseup" );
135         equal( element.val(), 0 );
136         button.trigger( "mousedown" ).trigger( "mouseup" );
137         equal( element.val(), 0 );
138 });
139
140 test( "mousewheel on input", function() {
141         expect( 4 );
142
143         var element = $( "#spin" ).val( 0 ).spinner({
144                 step: 2
145         });
146
147         element.trigger( "mousewheel" );
148         equal( element.val(), 0, "mousewheel event without delta does not change value" );
149
150         element.trigger( "mousewheel", 1 );
151         equal( element.val(), 2 );
152
153         element.trigger( "mousewheel", -0.2 );
154         equal( element.val(), 0 );
155
156         element.trigger( "mousewheel", -15 );
157         equal(element.val(), -2 );
158 });
159
160 test( "reading HTML5 attributes", function() {
161         expect( 6 );
162         var markup = "<input type='number' min='-100' max='100' value='5' step='2'>",
163                 element = $( markup ).spinner();
164         equal( element.spinner( "option", "min" ), -100, "min from markup" );
165         equal( element.spinner( "option", "max" ), 100, "max from markup" );
166         equal( element.spinner( "option", "step" ), 2, "step from markup" );
167
168         element = $( markup ).spinner({
169                 min: -200,
170                 max: 200,
171                 step: 5
172         });
173         equal( element.spinner( "option", "min" ), -200, "min from options" );
174         equal( element.spinner( "option", "max" ), 200, "max from options" );
175         equal( element.spinner( "option", "step" ), 5, "stop from options" );
176 });
177
178 test( "ARIA attributes", function() {
179         expect( 9 );
180         var element = $( "#spin" ).val( 2 ).spinner({ min: -5, max: 5 });
181
182         equal( element.attr( "role" ), "spinbutton", "role" );
183         equal( element.attr( "aria-valuemin" ), "-5", "aria-valuemin" );
184         equal( element.attr( "aria-valuemax" ), "5", "aria-valuemax" );
185         equal( element.attr( "aria-valuenow" ), "2", "aria-valuenow" );
186
187         element.spinner( "stepUp" );
188
189         equal( element.attr( "aria-valuenow" ), "3", "stepUp 1 step changes aria-valuenow" );
190
191         element.spinner( "option", { min: -10, max: 10 } );
192
193         equal( element.attr( "aria-valuemin" ), "-10", "min option changed aria-valuemin changes" );
194         equal( element.attr( "aria-valuemax" ), "10", "max option changed aria-valuemax changes" );
195
196         element.spinner( "option", "min", null );
197         equal( element.attr( "aria-valuemin" ), undefined, "aria-valuemin not set when no min" );
198
199         element.spinner( "option", "max", null );
200         equal( element.attr( "aria-valuemax" ), undefined, "aria-valuemax not set when no max" );
201 });
202
203 test( "focus text field when pressing button", function() {
204         expect( 2 );
205         var element = $( "#spin" ).spinner();
206         $( "body" ).focus();
207         ok( element[ 0 ] !== document.activeElement, "not focused before" );
208         element.spinner( "widget" ).find( ".ui-spinner-up" ).mousedown();
209         ok( element[ 0 ] === document.activeElement, "focused after" );
210 });
211
212 test( "don't clear invalid value on blur", function() {
213         expect( 1 );
214         var element = $( "#spin" ).spinner();
215         element.focus().val( "a" ).blur();
216         equal( element.val(), "a" );
217 });
218
219 test( "precision", function() {
220         expect( 2 );
221         var element = $( "#spin" ).val( 0.05 ).spinner({
222                 step: 0.0001
223         });
224         element.spinner( "stepUp" );
225         equal( element.val(), "0.0501", "precision from step" );
226
227         element.val( 1.05 ).spinner( "option", {
228                 step: 1,
229                 min: -9.95
230         });
231         element.spinner( "stepDown" );
232         equal( element.val(), "0.05", "precision from min" );
233 });
234
235 })( jQuery );