3 module( "spinner: options" );
5 // culture is tested after numberFormat, since it depends on numberFormat
7 test( "icons: default ", function() {
9 var element = $( "#spin" ).val( 0 ).spinner();
10 equal( element.spinner( "widget" ).find( ".ui-icon:first" ).attr( "class" ), "ui-icon ui-icon-triangle-1-n" );
11 equal( element.spinner( "widget" ).find( ".ui-icon:last" ).attr( "class" ), "ui-icon ui-icon-triangle-1-s" );
13 element.spinner( "option", "icons", {
14 up: "ui-icon-carat-1-n",
15 down: "ui-icon-carat-1-s"
17 equal( element.spinner( "widget" ).find( ".ui-icon:first" ).attr( "class" ), "ui-icon ui-icon-carat-1-n" );
18 equal( element.spinner( "widget" ).find( ".ui-icon:last" ).attr( "class" ), "ui-icon ui-icon-carat-1-s" );
21 test( "icons: custom ", function() {
23 var element = $( "#spin" ).val( 0 ).spinner({
28 }).spinner( "widget" );
29 equal( element.find( ".ui-icon:first" ).attr( "class" ), "ui-icon custom-up" );
30 equal( element.find( ".ui-icon:last" ).attr( "class" ), "ui-icon custom-down" );
33 test( "incremental, false", function() {
38 element = $( "#spin" ).val( prev ).spinner({
40 spin: function( event, ui ) {
41 equal( ui.value - prev, 1 );
46 for ( i = 0; i < 100; i++ ) {
47 element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
49 element.simulate( "keyup", { keyCode: $.ui.keyCode.UP } );
52 test( "incremental, true", function() {
55 function fill( num, val ) {
56 return $.map( new Array( num ), function() {
63 expected = [].concat( fill( 18, 1 ), fill( 37, 2 ), fill( 14, 3 ),
64 fill( 9, 4 ), fill( 6, 5 ), fill( 5, 6 ), fill ( 5, 7 ),
65 fill( 4, 8 ), fill( 2, 9 ) ),
66 element = $( "#spin" ).val( prev ).spinner({
68 spin: function( event, ui ) {
69 equal( ui.value - prev, expected[ i ] );
74 for ( i = 0; i < 100; i++ ) {
75 element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
77 element.simulate( "keyup", { keyCode: $.ui.keyCode.UP } );
80 test( "incremental, function", function() {
85 element = $( "#spin" ).val( prev ).spinner({
86 incremental: function( i ) {
89 spin: function( event, ui ) {
90 equal( ui.value - prev, i + 1 );
95 for ( i = 0; i < 100; i++ ) {
96 element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
98 element.simulate( "keyup", { keyCode: $.ui.keyCode.UP } );
101 test( "numberFormat, number", function() {
103 var element = $( "#spin" ).val( 0 ).spinner({ numberFormat: "n" });
104 equal( element.val(), "0.00", "formatted on init" );
105 element.spinner( "stepUp" );
106 equal( element.val(), "1.00", "formatted after step" );
109 test( "numberFormat, number, simple", function() {
111 var element = $( "#spin" ).val( 0 ).spinner({ numberFormat: "n0" });
112 equal( element.val(), "0", "formatted on init" );
113 element.spinner( "stepUp" );
114 equal( element.val(), "1", "formatted after step" );
117 test( "numberFormat, currency", function() {
119 var element = $( "#spin" ).val( 0 ).spinner({ numberFormat: "C" });
120 equal( element.val(), "$0.00", "formatted on init" );
121 element.spinner( "stepUp" );
122 equal( element.val(), "$1.00", "formatted after step" );
125 test( "numberFormat, change", function() {
127 var element = $( "#spin" ).val( 5 ).spinner({ numberFormat: "n1" });
128 equal( element.val(), "5.0", "formatted on init" );
129 element.spinner( "option", "numberFormat", "c" );
130 equal( element.val(), "$5.00", "formatted after change" );
133 test( "culture, null", function() {
135 Globalize.culture( "ja-JP" );
136 var element = $( "#spin" ).val( 0 ).spinner({ numberFormat: "C" });
137 equal( element.val(), "¥0", "formatted on init" );
138 element.spinner( "stepUp" );
139 equal( element.val(), "¥1", "formatted after step" );
142 Globalize.culture( "default" );
145 test( "currency, ja-JP", function() {
147 var element = $( "#spin" ).val( 0 ).spinner({
151 equal( element.val(), "¥0", "formatted on init" );
152 element.spinner( "stepUp" );
153 equal( element.val(), "¥1", "formatted after step" );
156 test( "currency, change", function() {
158 var element = $( "#spin" ).val( 5 ).spinner({
162 equal( element.val(), "¥5", "formatted on init" );
163 element.spinner( "option", "culture", "en" );
164 equal( element.val(), "$5.00", "formatted after change" );
167 test( "max", function() {
169 var element = $( "#spin" ).val( 1000 ).spinner({ max: 100 });
170 equal( element.val(), 1000, "value not constrained on init" );
172 element.spinner( "value", 1000 );
173 equal( element.val(), 100, "max constrained in value method" );
175 element.val( 1000 ).blur();
176 equal( element.val(), 1000, "max not constrained if manual entry" );
179 test( "max, string", function() {
181 var element = $( "#spin" )
188 equal( element.val(), "$1,000.00", "value not constrained on init" );
189 equal( element.spinner( "option", "max" ), 100, "option converted to number" );
191 element.spinner( "value", 1000 );
192 equal( element.val(), "$100.00", "max constrained in value method" );
195 test( "min", function() {
197 var element = $( "#spin" ).val( -1000 ).spinner({ min: -100 });
198 equal( element.val(), -1000, "value not constrained on init" );
200 element.spinner( "value", -1000 );
201 equal( element.val(), -100, "min constrained in value method" );
203 element.val( -1000 ).blur();
204 equal( element.val(), -1000, "min not constrained if manual entry" );
207 test( "min, string", function() {
209 var element = $( "#spin" )
216 equal( element.val(), "($1,000.00)", "value not constrained on init" );
217 equal( element.spinner( "option", "min" ), -100, "option converted to number" );
219 element.spinner( "value", -1000 );
220 equal( element.val(), "($100.00)", "min constrained in value method" );
223 test( "step, 2", function() {
225 var element = $( "#spin" ).val( 0 ).spinner({ step: 2 });
227 element.spinner( "stepUp" );
228 equal( element.val(), "2", "stepUp" );
230 element.spinner( "value", "10.5" );
231 equal( element.val(), "10", "value reset to 10" );
233 element.val( "4.5" );
234 element.spinner( "stepUp" );
235 equal( element.val(), "6", "stepUp" );
238 test( "step, 0.7", function() {
240 var element = $("#spin").val( 0 ).spinner({
244 element.spinner( "stepUp" );
245 equal( element.val(), "0.7", "stepUp" );
248 test( "step, string", function() {
250 var element = $("#spin").val( 0 ).spinner({
256 equal( element.spinner( "option", "step" ), 0.7, "option converted to number" );
258 element.spinner( "stepUp" );
259 equal( element.val(), "$0.70", "stepUp" );