Permalink
Please
sign in to comment.
Showing
with
142 additions
and 156 deletions.
@@ -1,171 +1,151 @@ | ||
/* | ||
* spinner_core.js | ||
*/ | ||
(function( $ ) { | ||
|
||
var simulateKeyDownUp = function(el, kCode, shift) { | ||
el.simulate("keydown",{keyCode:kCode, shiftKey: shift || false }) | ||
.simulate("keyup",{keyCode:kCode, shiftKey: shift || false }); | ||
}; | ||
module( "spinner: core" ); | ||
|
||
(function($) { | ||
|
||
// Spinner Tests | ||
module("spinner: core"); | ||
|
||
test("destroy", function() { | ||
// TODO: move to spinner_methods | ||
test( "destroy", function() { | ||
expect( 1 ); | ||
// TODO: is this cheat still needed? | ||
// cheat a bit to get IE6 to pass | ||
$("#spin").val(0); | ||
var beforeHtml = $("#spin").parent().html(); | ||
var afterHtml = $("#spin").spinner().spinner("destroy").parent().html(); | ||
equal( afterHtml, beforeHtml, "before/after html should be the same" ); | ||
$( "#spin" ).val( 0 ); | ||
domEqual( "#spin", function() { | ||
$( "#spin" ).spinner().spinner( "destroy" ); | ||
}); | ||
}); | ||
|
||
test("keydown UP on input, increases value not greater than max", function() { | ||
var el = $("#spin").spinner({ | ||
max:100, | ||
value:50, | ||
step:10 | ||
test( "keydown UP on input, increases value not greater than max", function() { | ||
expect( 5 ); | ||
var element = $( "#spin" ).spinner({ | ||
max: 100, | ||
value: 70, | ||
step: 10 | ||
}); | ||
|
||
simulateKeyDownUp(el, $.ui.keyCode.UP); | ||
equals(el.val(), 60); | ||
|
||
for (i = 0; i<11; i++) { | ||
simulateKeyDownUp(el, $.ui.keyCode.UP); | ||
} | ||
equals(el.val(), 100); | ||
|
||
el.spinner("value", 50); | ||
simulateKeyDownUp(el, $.ui.keyCode.UP); | ||
equals(el.val(), 60); | ||
|
||
spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); | ||
equals( element.val(), 80 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); | ||
equals( element.val(), 90 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); | ||
equals( element.val(), 100 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); | ||
equals( element.val(), 100 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.UP ); | ||
equals( element.val(), 100 ); | ||
}); | ||
|
||
test("keydown DOWN on input, decreases value not less than min", function() { | ||
var el = $("#spin").spinner({ | ||
min:-100, | ||
value:50, | ||
step:10 | ||
test( "keydown DOWN on input, decreases value not less than min", function() { | ||
expect( 5 ); | ||
var element = $( "#spin" ).spinner({ | ||
min: 20, | ||
value: 50, | ||
step: 10 | ||
}); | ||
|
||
simulateKeyDownUp(el, $.ui.keyCode.DOWN); | ||
equals(el.val(), 40); | ||
|
||
for (i = 0; i<21; i++) { | ||
simulateKeyDownUp(el, $.ui.keyCode.DOWN); | ||
} | ||
equals(el.val(), -100); | ||
|
||
el.spinner("value", 50); | ||
simulateKeyDownUp(el, $.ui.keyCode.DOWN); | ||
equals(el.val(), 40); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); | ||
equals( element.val(), 40 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); | ||
equals( element.val(), 30 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); | ||
equals( element.val(), 20 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); | ||
equals( element.val(), 20 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.DOWN ); | ||
equals( element.val(), 20 ); | ||
}); | ||
|
||
test("keydown PGUP on input, increases value not greater than max", function() { | ||
var el = $("#spin").spinner({ | ||
max: 500, | ||
value: 0, | ||
step: 10 | ||
test( "keydown PGUP on input, increases value not greater than max", function() { | ||
expect( 5 ); | ||
var element = $( "#spin" ).spinner({ | ||
max: 100, | ||
value: 70, | ||
page: 10 | ||
}); | ||
|
||
simulateKeyDownUp(el, $.ui.keyCode.PAGE_UP); | ||
equal(el.val(), 100); | ||
|
||
for (i = 0; i<5; i++) { | ||
simulateKeyDownUp(el, $.ui.keyCode.PAGE_UP); | ||
} | ||
equal(el.val(), 500); | ||
|
||
el.spinner("value", 0); | ||
simulateKeyDownUp(el, $.ui.keyCode.PAGE_UP); | ||
equals(el.val(), 100); | ||
|
||
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); | ||
equals( element.val(), 80 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); | ||
equals( element.val(), 90 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); | ||
equals( element.val(), 100 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); | ||
equals( element.val(), 100 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_UP ); | ||
equals( element.val(), 100 ); | ||
}); | ||
|
||
test("keydown PGDN on input, decreases value not less than min", function() { | ||
var el = $("#spin").spinner({ | ||
min:-500, | ||
value:0, | ||
step:10 | ||
test( "keydown PGDN on input, decreases value not less than min", function() { | ||
expect( 5 ); | ||
var element = $( "#spin" ).spinner({ | ||
min: 20, | ||
value: 50, | ||
page: 10 | ||
}); | ||
|
||
simulateKeyDownUp(el, $.ui.keyCode.PAGE_DOWN); | ||
equals(el.val(), -100); | ||
|
||
for (i = 0; i<5; i++) { | ||
simulateKeyDownUp(el, $.ui.keyCode.PAGE_DOWN); | ||
} | ||
equals(el.val(), -500); | ||
|
||
el.spinner("value", 0); | ||
simulateKeyDownUp(el, $.ui.keyCode.PAGE_DOWN); | ||
equals(el.val(), -100); | ||
|
||
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); | ||
equals( element.val(), 40 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); | ||
equals( element.val(), 30 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); | ||
equals( element.val(), 20 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); | ||
equals( element.val(), 20 ); | ||
spinner_simulateKeyDownUp( element, $.ui.keyCode.PAGE_DOWN ); | ||
equals( element.val(), 20 ); | ||
}); | ||
|
||
test("mouse click on buttons", function() { | ||
var el = $("#spin").spinner(), | ||
test( "mouse click on buttons", function() { | ||
expect( 2 ); | ||
var element = $( "#spin" ).spinner(), | ||
val = 0; | ||
|
||
$(".ui-spinner-up").trigger("mousedown").trigger("mouseup"); | ||
equals(el.val(), ++val, "mouse click to up"); | ||
|
||
$(".ui-spinner-down").trigger("mousedown").trigger("mouseup"); | ||
equals(el.val(), --val, "mouse click to down"); | ||
|
||
el.spinner("value", 50); | ||
$(".ui-spinner-up").trigger("mousedown").trigger("mouseup"); | ||
equals(el.val(), 51); | ||
|
||
el.spinner("value", 50); | ||
$(".ui-spinner-down").trigger("mousedown").trigger("mouseup"); | ||
equals(el.val(), 49); | ||
|
||
$( ".ui-spinner-up" ).trigger( "mousedown" ).trigger( "mouseup" ); | ||
equals( element.val(), ++val, "mouse click on up" ); | ||
|
||
$( ".ui-spinner-down" ).trigger( "mousedown" ).trigger( "mouseup" ); | ||
equals( element.val(), --val, "mouse click on down"); | ||
}); | ||
|
||
test("mouse wheel on input", function() { | ||
expect(4); | ||
stop(); | ||
|
||
var el = $("#spin").spinner(); | ||
equal(el.val(), 0); | ||
el.trigger("mousewheel", 1); | ||
equal(el.val(), 1); | ||
|
||
// mousewheel handler uses a timeout, need to accomodate that | ||
setTimeout(function() { | ||
el.trigger("mousewheel", -1); | ||
equal(el.val(), 0); | ||
|
||
setTimeout(function() { | ||
el.trigger("mousewheel", -1); | ||
equal(el.val(), -1); | ||
start(); | ||
}, 100); | ||
}, 100); | ||
|
||
test( "mouse wheel on input", function() { | ||
expect( 4 ); | ||
|
||
var element = $( "#spin" ).spinner(); | ||
equal( element.val(), 0 ); | ||
element.trigger( "mousewheel", 1 ); | ||
equal( element.val(), 1 ); | ||
|
||
element.trigger( "mousewheel", -1 ); | ||
equal( element.val(), 0 ); | ||
|
||
element.trigger( "mousewheel", -1 ); | ||
equal(element.val(), -1 ); | ||
}); | ||
|
||
test("reading HTML5 attributes", function() { | ||
var el = $('<input id="spinner" type="number" min="-100" max="100" value="5" step="2">').spinner(); | ||
equals(el.spinner('option', 'value'), 5, 'value'); | ||
equals(el.spinner('option', 'max'), 100, 'max'); | ||
equals(el.spinner('option', 'min'), -100, 'min'); | ||
equals(el.spinner('option', 'step'), 2, 'step'); | ||
test( "reading HTML5 attributes", function() { | ||
expect( 4 ); | ||
var element = $( "<input id='spinner' type='number' min='-100' max='100' value='5' step='2'>" ).spinner(); | ||
equals( element.spinner( "option", "value" ), 5, "value" ); | ||
equals( element.spinner( "option", "max" ), 100, "max" ); | ||
equals( element.spinner( "option", "min" ), -100, "min" ); | ||
equals( element.spinner( "option", "step" ), 2, "step" ); | ||
}); | ||
|
||
test("ARIA attributes", function() { | ||
var el = $('#spin').spinner({ min: -5, max: 5, value: 2 });; | ||
|
||
equals(el.attr('role'), 'spinbutton', 'role'); | ||
equals(el.attr('aria-valuemin'), -5, 'aria-valuemin'); | ||
equals(el.attr('aria-valuemax'), 5, 'aria-valuemax'); | ||
equals(el.attr('aria-valuenow'), 2, 'aria-valuenow'); | ||
|
||
el.spinner('stepUp'); | ||
|
||
equals(el.attr('aria-valuenow'), 3, 'stepUp 1 step changes aria-valuenow'); | ||
|
||
el.spinner('option', { min: -10, max: 10 }); | ||
|
||
equals(el.attr('aria-valuemin'), -10, 'min option changed aria-valuemin changes'); | ||
equals(el.attr('aria-valuemax'), 10, 'max option changed aria-valuemax changes'); | ||
test( "ARIA attributes", function() { | ||
expect( 7 ); | ||
var element = $( "#spin" ).spinner({ min: -5, max: 5, value: 2 }); | ||
|
||
equals( element.attr( "role" ), "spinbutton", "role" ); | ||
equals( element.attr( "aria-valuemin" ), -5, "aria-valuemin" ); | ||
equals( element.attr( "aria-valuemax" ), 5, "aria-valuemax" ); | ||
equals( element.attr( "aria-valuenow" ), 2, "aria-valuenow" ); | ||
|
||
element.spinner( "stepUp" ); | ||
|
||
equals( element.attr( "aria-valuenow" ), 3, "stepUp 1 step changes aria-valuenow" ); | ||
|
||
element.spinner( "option", { min: -10, max: 10 } ); | ||
|
||
equals( element.attr( "aria-valuemin" ), -10, "min option changed aria-valuemin changes" ); | ||
equals( element.attr( "aria-valuemax" ), 10, "max option changed aria-valuemax changes" ); | ||
}); | ||
|
||
})(jQuery); | ||
})( jQuery ); |
@@ -0,0 +1,5 @@ | ||
var spinner_simulateKeyDownUp = function( element, keyCode, shift ) { | ||
element | ||
.simulate( "keydown", { keyCode: keyCode, shiftKey: shift || false } ) | ||
.simulate( "keyup", { keyCode: keyCode, shiftKey: shift || false } ); | ||
}; |
0 comments on commit
160a301