Files
openlayers/master/examples/MultiSelect.html
Éric Lemoine 5d14b9e2d4 Updated
2013-02-20 10:38:25 +01:00

267 lines
7.8 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>doh.robot MultiSelect 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" src="../../helpers.js"></script>
<script type="text/javascript">
dojo.require("dijit.robotx");
function testInverted(allOptions, selected, newSelected){
doh.is(allOptions.length, selected.length+newSelected.length); //newSelected + the no longer selected list size should be the same as the length of the whole list
dojo.forEach(allOptions, function(option){ //verify the selections were inverted
var found;
if(option.selected){
//it must be in the newSelectedList
found=false;
dojo.forEach(newSelected, function(ns){
if(option.value===ns){
found=true;
}
});
doh.t(found);
}else{
//it better be in the origional selected list
found=false;
dojo.forEach(selected, function(s){
if(option.value===s){
found=true;
}
});
doh.t(found);
}
});
}
dojo.ready(function(){
doh.robot.initRobot('../test_MultiSelect.html');
doh.register("dijit.form.MultiSelect", [
{
name: "tabInSelect",
timeout: 6000,
runTest: function(){
var d = new doh.Deferred();
var changed = false;
dijit.byId("select").set("onChange", function(e){changed = true; });
dojo.global.scrollTo(0,0);
doh.robot.mouseMove(30,30);
doh.robot.mouseClick({left:true}, 1000); //tabbing in doesn't work in FF unless we first click on the page first
doh.robot.keyPress(dojo.keys.TAB, 1000, {});
doh.robot.keyPress(dojo.keys.DOWN_ARROW, 1000, {}); //Arrowing down will select the element for IE, FF, Safari, & chrome
doh.robot.keyPress(dojo.keys.SPACE, 1000, {}); //Space is needed to select the element in opera
doh.robot.sequence(d.getTestCallback(function(){
doh.t(changed);
}), 1000);
return d;
}
},
{
name: "switchRight",
timeout: 5000,
runTest: function(){
var d = new doh.Deferred();
doh.robot.sequence(function(){
dijit.byId('select').set('value', ['16']);
}, 500);
doh.robot.mouseMoveAt("right", 1000);
doh.robot.mouseClick({left:true}, 500);
var selectedValue2 = "";
doh.robot.sequence(function(){ selectedValue2 = dijit.byId('select2').get('value');}, 1000);
doh.robot.sequence(d.getTestCallback(function(){
doh.is("16", dijit.byId('select2').value.toString());
doh.is("16", selectedValue2[0]);
}), 1000);
return d;
}
},
{
name: "switchLeft",
timeout: 5000,
runTest: function(){
var d = new doh.Deferred();
doh.robot.sequence(function(){
dijit.byId('select2').set('value', ['3','7','19','47']);
}, 500);
doh.robot.mouseMoveAt("left", 1000);
doh.robot.mouseClick({left:true}, 500);
var selectedValue = "";
doh.robot.sequence(function(){ selectedValue = dijit.byId('select').get('value');}, 1000);
doh.robot.sequence(d.getTestCallback(function(){
doh.is("3", selectedValue[0]);
doh.is("7", selectedValue[1]);
doh.is("19", selectedValue[2]);
doh.is("47", selectedValue[3]);
doh.is("3 7 19 47", dijit.byId('select').value.join(' '));
}), 1000);
return d;
}
},
{
name: "invertSelected",
timeout: 8000,
runTest: function(){
var d = new doh.Deferred();
//select a block in the first list
doh.robot.sequence(function(){
dijit.byId('select').set('value', ['18','14','12','10']);
}, 500);
//get the selected list
var allOptions = "";
var selected = "";
var newSelected = "";
doh.robot.sequence(function(){
selected = dijit.byId('select').get('value');
allOptions = dijit.byId('select').domNode.options;
}, 1000);
doh.robot.mouseMoveAt("i1", 1000);
doh.robot.mouseClick({left:true}, 500);
doh.robot.sequence(function(){
newSelected = dijit.byId('select').get('value');
}, 1000);
doh.robot.sequence(d.getTestCallback(function(){
testInverted(allOptions, selected, newSelected);
}), 1000);
return d;
}
},
{
name: "invertSelected2",
timeout: 8000,
runTest: function(){
var d = new doh.Deferred();
//select random options
doh.robot.sequence(function(){
dijit.byId('select').set('value', ['2','8','14','20','22','32']);
}, 500);
//get the selected list
var allOptions = "";
var selected = "";
var newSelected = "";
doh.robot.sequence(function(){
selected = dijit.byId('select').get('value');
allOptions = dijit.byId('select').domNode.options;
}, 1000);
doh.robot.mouseMoveAt("i1", 1000);
doh.robot.mouseClick({left:true}, 500);
doh.robot.sequence(function(){
newSelected = dijit.byId('select').get('value');
}, 1000);
doh.robot.sequence(d.getTestCallback(function(){
testInverted(allOptions, selected, newSelected);
}), 1000);
return d;
}
},
{
name: "invertSelected3",
timeout: 8000,
runTest: function(){
var d = new doh.Deferred();
//Select the first thing in the list and then invert it
//select random options
doh.robot.sequence(function(){
dijit.byId('select3').set('value', ['TN']);
}, 500);
//get the selected list
var allOptions = "";
var selected = "";
var newSelected = "";
doh.robot.sequence(function(){
selected = dijit.byId('select3').get('value');
allOptions = dijit.byId('select3').domNode.options;
}, 1000);
doh.robot.mouseMoveAt("i3", 1000);
doh.robot.mouseClick({left:true}, 500);
doh.robot.sequence(function(){
newSelected = dijit.byId('select3').get('value');
}, 1000);
doh.robot.sequence(d.getTestCallback(function(){
testInverted(allOptions, selected, newSelected);
}), 1000);
return d;
}
},
{
name: "setValue",
timeout: 5000,
runTest: function(){
var d = new doh.Deferred();
//Select only one thing in the list to make sure we don't start with the values that we are going to select
doh.robot.sequence(function(){
dijit.byId('select3').set('value', ['CA']);
}, 500);
doh.robot.mouseMoveAt("s1", 1000);
doh.robot.mouseClick({left:true}, 500);
doh.robot.sequence(d.getTestCallback(function(){
var selected = dijit.byId('select3').get('value');
doh.is(2, selected.length);
doh.is(selected[0], 'VA');
doh.is(selected[1], 'WA');
doh.is("VA WA", dijit.byId('select3').value.join(' '));
}), 1000);
return d;
}
},
{
name: "formSubmit",
timeout: 1500,
runTest: function(){
var d=new doh.Deferred();
dijit.byId('select3').set('value', ['TN','FL']);
doh.robot.sequence(d.getTestCallback(function(){
var vals = dojo.fromJson(dojo.formToJson("test"));
doh.is("TN,FL", vals.select3);
}), 500);
return d;
}
}
]);
doh.run();
});
</script>
</head>
</html>