388 lines
13 KiB
HTML
388 lines
13 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|
<html>
|
|
<head>
|
|
<title>doh.robot Spinner Test</title>
|
|
|
|
<style>
|
|
@import "../../../../util/doh/robot/robot.css";
|
|
</style>
|
|
|
|
<!-- required: dojo.js -->
|
|
<script type="text/javascript" src="../../../../dojo/dojo.js"></script>
|
|
|
|
<script type="text/javascript">
|
|
dojo.require("dijit.robotx");
|
|
|
|
dojo.ready(function(){
|
|
var spin1;
|
|
var spin2;
|
|
var spin3;
|
|
var delta=1; // redefine with doh.robot.mouseWheelSize when it is available
|
|
doh.robot.initRobot('../test_Spinner.html');
|
|
|
|
doh.register("setUp",{
|
|
name: "setUp",
|
|
timeout: 15000,
|
|
setUp:function(){
|
|
spin1=dijit.byId('integerspinner1');
|
|
spin2=dijit.byId('integerspinner2');
|
|
spin3=dijit.byId('realspinner1');
|
|
},
|
|
runTest: function(){
|
|
// assert onChange not fired
|
|
doh.is("not fired yet!", dojo.byId('oc1').value);
|
|
|
|
// make sure initial values are what we expect
|
|
doh.is(1, spin1.smallDelta);
|
|
doh.is(900, spin1.get('value'), "integerspinner1");
|
|
doh.is(1000, spin2.get('value'), "integerspinner2");
|
|
doh.is(1.0, spin3.get('value'), "realspinner1");
|
|
}
|
|
});
|
|
|
|
doh.register("setvaluetest", [
|
|
{
|
|
name: "valid",
|
|
runTest:function(){
|
|
spin1.set('value', 400);
|
|
doh.is(400, spin1.focusNode.value);
|
|
doh.is(true, spin1.isValid());
|
|
|
|
}
|
|
},
|
|
|
|
{
|
|
name: "null_notrequired",
|
|
runTest:function(){
|
|
spin1.set('value', null);
|
|
spin1.set('required',false);
|
|
doh.is('', spin1.focusNode.value);
|
|
doh.is(true, spin1.isValid());
|
|
doh.is(true, isNaN(spin1.get('value')));
|
|
},
|
|
tearDown:function(){
|
|
spin1.set('required',true);
|
|
spin1.set('value', 900);
|
|
}
|
|
},
|
|
|
|
{
|
|
name: "null_required",
|
|
runTest:function(){
|
|
spin1.set('value', null);
|
|
doh.is('', spin1.focusNode.value);
|
|
doh.is(false, spin1.isValid());
|
|
doh.is(true, isNaN(spin1.get('value')));
|
|
}
|
|
},
|
|
|
|
{
|
|
name: "spinner1_invalid",
|
|
timeout: 15000,
|
|
runTest: function(){
|
|
// assert invalid works
|
|
var d=new doh.Deferred();
|
|
doh.robot.mouseMoveAt(spin1.focusNode, 1, 0);
|
|
doh.robot.mouseClick({left:true}, 500);
|
|
doh.robot.sequence(function(){
|
|
spin1.focusNode.value="";
|
|
}, 500);
|
|
doh.robot.typeKeys("0.5", 500, 600);
|
|
doh.robot.sequence(function(){
|
|
try{
|
|
// test before user clicks away
|
|
doh.f(spin1.isValid(), "spin1 is marked as error");
|
|
doh.robot.keyPress(dojo.keys.TAB, 500);
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
// also test after user clicks away
|
|
doh.f(spin1.isValid(), "spin1 is marked as error");
|
|
}), 500);
|
|
}catch(e){d.callback(e);}
|
|
}, 500);
|
|
return d;
|
|
},
|
|
tearDown:function(){
|
|
spin1.set('value', 1);
|
|
}
|
|
},
|
|
|
|
{
|
|
name: "spinner3_invalid",
|
|
timeout: 15000,
|
|
runTest: function(){
|
|
// assert invalid works
|
|
var d=new doh.Deferred();
|
|
doh.robot.mouseMoveAt(spin3.focusNode, 1, 0);
|
|
doh.robot.mouseClick({left:true}, 500);
|
|
doh.robot.sequence(function(){
|
|
spin3.focusNode.value="";
|
|
}, 500);
|
|
doh.robot.typeKeys("0.a", 500, 600); // vs 0.5 in spinner1_invalid, spin3 would accept that
|
|
doh.robot.sequence(function(){
|
|
try{
|
|
// test before user clicks away
|
|
doh.f(spin3.isValid(), "spin3 is marked as error");
|
|
doh.robot.keyPress(dojo.keys.TAB, 500);
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
// also test after user clicks away
|
|
doh.f(spin3.isValid(), "spin3 is marked as error");
|
|
}), 500);
|
|
}catch(e){d.callback(e);}
|
|
}, 500);
|
|
return d;
|
|
},
|
|
tearDown:function(){
|
|
spin3.set('value', 1);
|
|
}
|
|
}
|
|
]);
|
|
|
|
doh.register("arrowButton", [
|
|
{
|
|
name: "spinner1_typematic",
|
|
timeout: 20000,
|
|
setUp:function(){
|
|
spin1.set('value', 900);
|
|
},
|
|
runTest: function(){
|
|
// test typematic
|
|
var d=new doh.Deferred();
|
|
doh.robot.mouseMoveAt(spin1.focusNode, 1, 0); // scroll both buttons into view
|
|
doh.robot.mouseMoveAt(spin1.downArrowNode, 1, 0);
|
|
doh.robot.mousePress({left:true, middle:false, right:false}, 1000);
|
|
doh.robot.mouseRelease({left:true, middle:false, right:false}, 5000); // going too fast overwhelms the CPU and starves the robot thread
|
|
doh.robot.mousePress({left:true, middle:false, right:false}, 500);
|
|
doh.robot.mouseRelease({left:true, middle:false, right:false}, 5000);
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
var v = spin1.get('value');
|
|
// also test after user clicks away
|
|
doh.t(v <= 875, "Error in typematic test. Expected <= 875, got " + v);
|
|
}), 500);
|
|
return d;
|
|
}
|
|
},
|
|
|
|
{
|
|
name: "spinner1_max",
|
|
timeout: 15000,
|
|
setUp:function(){
|
|
spin1.set('value', 1549);
|
|
},
|
|
runTest: function(){
|
|
// test max with arrow button
|
|
var d=new doh.Deferred();
|
|
// press once: should move up
|
|
doh.robot.mouseMoveAt(spin1.focusNode, 1, 0); // scroll both buttons into view
|
|
doh.robot.mouseMoveAt(spin1.upArrowNode, 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
doh.robot.mouseMoveAt('sv1_4', 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
doh.robot.sequence(d.getTestErrback(function(){
|
|
doh.is(1550, spin1.get('value'));
|
|
doh.is("1,550", spin1.focusNode.value);
|
|
doh.is("1550", dojo.byId('oc1').value);
|
|
doh.is(true, spin1.isValid());
|
|
// press again: shouldn't move
|
|
doh.robot.mouseMoveAt(spin1.upArrowNode, 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
doh.robot.mouseMoveAt('sv1_4', 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
doh.is(1550, spin1.get('value'));
|
|
doh.is("1,550", spin1.focusNode.value);
|
|
doh.is("1550", dojo.byId('oc1').value);
|
|
doh.is(true, spin1.isValid());
|
|
}), 500);
|
|
}), 500);
|
|
|
|
return d;
|
|
}
|
|
},
|
|
|
|
{
|
|
name: "spinner1_min",
|
|
timeout: 15000,
|
|
setUp:function(){
|
|
spin1.set('value', 1);
|
|
},
|
|
runTest: function(){
|
|
// test min with arrow button
|
|
var d=new doh.Deferred();
|
|
// press once: should move up
|
|
doh.robot.mouseMoveAt(spin1.focusNode, 1, 0); // scroll both buttons into view
|
|
doh.robot.mouseMoveAt(spin1.downArrowNode, 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
doh.robot.mouseMoveAt('sv1_4', 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
doh.robot.sequence(d.getTestErrback(function(){
|
|
doh.is(0, spin1.get('value'));
|
|
doh.is("0", spin1.focusNode.value);
|
|
doh.is("0", dojo.byId('oc1').value);
|
|
doh.is(true, spin1.isValid());
|
|
// press again: can move since no min
|
|
doh.robot.mouseMoveAt(spin1.downArrowNode, 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
doh.robot.mouseMoveAt('sv1_4', 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
doh.is(-1, spin1.get('value'));
|
|
doh.is("-1", spin1.focusNode.value);
|
|
doh.is("-1", dojo.byId('oc1').value);
|
|
doh.is(true, spin1.isValid());
|
|
}), 500);
|
|
}), 500);
|
|
|
|
return d;
|
|
}
|
|
}
|
|
]);
|
|
|
|
doh.register("mouseWheel", [
|
|
{
|
|
name:"spinner1",
|
|
timeout:5500,
|
|
setUp:function(){
|
|
spin1.set('value', 900);
|
|
},
|
|
runTest:function(){
|
|
// get the mouse's delta
|
|
// note that Spinner spins backwards!
|
|
delta=-doh.robot.mouseWheelSize;
|
|
var d=new doh.Deferred();
|
|
doh.robot.mouseMoveAt(spin1.domNode, 1, 0);
|
|
doh.robot.mouseClick({left:true}, 500);
|
|
// wheel up 10 times
|
|
// this should increase the value by 10
|
|
// takes 100ms/click
|
|
doh.robot.mouseWheel(-10, 1000, 1000);
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
var v=spin1.get('value');
|
|
doh.is(v, (900+10*delta), "spinner 1: wrong value, expected "+(900+10*delta)+", got "+v);
|
|
}), 1000);
|
|
return d;
|
|
}
|
|
},
|
|
|
|
{
|
|
name:"spinner2",
|
|
timeout:5500,
|
|
setUp:function(){
|
|
spin2.set('value', 1000);
|
|
},
|
|
runTest:function(){
|
|
// test custom delta with mouse wheel
|
|
// it should increment 10 per mouse wheel
|
|
var d=new doh.Deferred();
|
|
doh.robot.mouseMoveAt(spin2.domNode, 1, 0);
|
|
doh.robot.mouseClick({left:true}, 500);
|
|
// wheel down 9 times
|
|
// this should decrease the value by 90
|
|
// takes 100ms/click
|
|
doh.robot.mouseWheel(9, 1000, 900);
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
var v = spin2.get('value');
|
|
doh.is(v, (1000-90*delta), "spinner 2: wrong value, expected "+(1000-90*delta)+", got "+v);
|
|
}), 1000);
|
|
return d;
|
|
}
|
|
},
|
|
|
|
{
|
|
name:"spinner3",
|
|
timeout:5500,
|
|
setUp:function(){
|
|
spin3.set('value', 1.0);
|
|
},
|
|
runTest:function(){
|
|
// test real number spinner with mouse wheel
|
|
// it should increment 0.1 per mouse wheel
|
|
var d=new doh.Deferred();
|
|
doh.robot.mouseMoveAt(spin3.domNode, 1, 0);
|
|
doh.robot.mouseClick({left:true}, 500);
|
|
// wheel up 10
|
|
// this should increase the value by 1.0
|
|
// takes 100ms/click
|
|
doh.robot.mouseWheel(-10, 1000, 1000);
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
var v = spin3.get('value');
|
|
doh.is(v, (1.0+delta), "spinner 3: wrong value, expected "+(1.0+delta)+", got "+v);
|
|
}), 1000);
|
|
return d;
|
|
}
|
|
},
|
|
|
|
{
|
|
name: "spinner3_max",
|
|
timeout: 15000,
|
|
setUp:function(){
|
|
spin3.set('value', 155-0.1*delta);
|
|
},
|
|
runTest: function(){
|
|
// test max with arrow key
|
|
var d=new doh.Deferred();
|
|
// press once: should move up
|
|
doh.robot.mouseMoveAt(spin3.focusNode, 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
// wheel up 1; this will increase the value by delta
|
|
doh.robot.mouseWheel(-1, 500, 1);
|
|
doh.robot.sequence(d.getTestErrback(function(){
|
|
doh.is(155.0, spin3.get('value'));
|
|
doh.is("155.0", spin3.focusNode.value);
|
|
doh.is(true, spin3.isValid());
|
|
// press again: shouldn't move
|
|
doh.robot.mouseMoveAt(spin3.focusNode, 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
// wheel up 1; this will increase the value by delta
|
|
doh.robot.mouseWheel(-1, 500, 1);
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
doh.is(155.0, spin3.get('value'));
|
|
doh.is("155.0", spin3.focusNode.value);
|
|
doh.is(true, spin3.isValid());
|
|
}), 500);
|
|
}), 500);
|
|
|
|
return d;
|
|
}
|
|
},
|
|
|
|
{
|
|
name: "spinner3_min",
|
|
timeout: 15000,
|
|
setUp:function(){
|
|
spin3.set('value', -10.9+0.1*delta);
|
|
},
|
|
runTest: function(){
|
|
// test min with arrow key
|
|
var d=new doh.Deferred();
|
|
// press once: should move up
|
|
doh.robot.mouseMoveAt(spin3.focusNode, 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
doh.robot.keyPress(dojo.keys.DOWN_ARROW, 500);
|
|
doh.robot.mouseWheel(1, 500, 1);
|
|
doh.robot.sequence(d.getTestErrback(function(){
|
|
doh.is(-10.9, spin3.get('value'));
|
|
doh.is("-10.9", spin3.focusNode.value);
|
|
doh.is(true, spin3.isValid());
|
|
// press again: shouldn't move
|
|
doh.robot.mouseMoveAt(spin3.focusNode, 1, 0);
|
|
doh.robot.mouseClick({left:true, middle:false, right:false}, 500);
|
|
doh.robot.mouseWheel(1, 500, 1);
|
|
doh.robot.sequence(d.getTestCallback(function(){
|
|
doh.is(-10.9, spin3.get('value'));
|
|
doh.is("-10.9", spin3.focusNode.value);
|
|
doh.is(true, spin3.isValid());
|
|
}), 500);
|
|
}), 500);
|
|
|
|
return d;
|
|
}
|
|
}
|
|
]);
|
|
|
|
doh.run();
|
|
});
|
|
</script>
|
|
</head>
|
|
</html>
|