1 <!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML//EN">
4 <script src=
"../../resources/js-test.js"></script>
7 <p id=
"description"></p>
8 <div id=
"console"></div>
10 description('<select> selection test for mouse events and keyevents.');
12 function mouseDownOnSelect(selId
, index
, modifier
) {
13 var sl
= document
.getElementById(selId
);
14 var itemHeight
= Math
.floor(sl
.offsetHeight
/ sl
.size
);
16 var y
= border
+ index
* itemHeight
;
19 if (window
.eventSender
) {
20 eventSender
.mouseMoveTo(sl
.offsetLeft
+ border
, sl
.offsetTop
+ y
- window
.pageYOffset
);
21 eventSender
.mouseDown(0, [modifier
]);
22 eventSender
.mouseUp(0, [modifier
]);
26 function keyDownOnSelect(selId
, identifier
, modifier
) {
27 document
.getElementById(selId
).focus();
28 if (window
.eventSender
)
29 eventSender
.keyDown(identifier
, [modifier
]);
32 function createSelect(idName
, sz
, mlt
, selIndex
) {
33 var sl
= document
.createElement("select");
37 var opt
= document
.createElement("option");
40 opt
.textContent
= "item " + i
;
46 var parent
= document
.getElementById("parent");
47 parent
.appendChild(sl
);
50 function selectionPattern(selId
) {
51 var sl
= document
.getElementById(selId
);
53 for (var i
= 0; i
< sl
.options
.length
; i
++)
54 result
+= sl
.options
[i
].selected
? '1' : '0';
58 var parent
= document
.createElement('div');
60 document
.body
.appendChild(parent
);
62 createSelect("sl1", 5, false, -1);
63 createSelect("sl2", 5, false, 1);
64 createSelect("sl3", 5, false, -1);
65 createSelect("sl4", 5, false, 1);
66 createSelect("sl5", 5, false, 2);
67 createSelect("sl6", 5, false, 3);
68 createSelect("sl7", 5, false, 1);
70 createSelect("sl8", 5, true, -1);
71 createSelect("sl9", 5, true, 1);
72 createSelect("sl10", 5, true, -1);
73 createSelect("sl11", 5, true, 1);
74 createSelect("sl12", 5, true, 2);
75 createSelect("sl13", 5, true, 0);
76 createSelect("sl14", 5, true, 1);
78 debug("1) Select one item with mouse (no previous selection)");
79 mouseDownOnSelect("sl1", 0);
80 shouldBe('selectionPattern("sl1")', '"10000"');
82 debug("2) Select one item with mouse (with previous selection)");
83 mouseDownOnSelect("sl2", 0);
84 shouldBe('selectionPattern("sl2")', '"10000"');
86 debug("3) Select one item with the keyboard (no previous selection)");
87 keyDownOnSelect("sl3", "upArrow");
88 shouldBe('selectionPattern("sl3")', '"00001"');
90 debug("4) Select one item with the keyboard (with previous selection)");
91 keyDownOnSelect("sl4", "downArrow");
92 shouldBe('selectionPattern("sl4")', '"00100"');
94 debug("5) Attempt to select an item cmd-clicking");
95 mouseDownOnSelect("sl5", 1, "addSelectionKey");
96 shouldBe('selectionPattern("sl5")', '"01000"');
98 debug("6) Attempt to select a range shift-clicking");
99 mouseDownOnSelect("sl6", 1, "rangeSelectionKey");
100 shouldBe('selectionPattern("sl6")', '"01000"');
102 debug("7) Attempt to select a range with the keyboard");
103 keyDownOnSelect("sl7", "downArrow", "rangeSelectionKey");
104 shouldBe('selectionPattern("sl7")', '"00100"');
106 // Multiple selection tests
108 debug("8) Select one item with mouse (no previous selection)");
109 mouseDownOnSelect("sl8", 0);
110 shouldBe('selectionPattern("sl8")', '"10000"');
112 debug("9) Select one item with mouse (with previous selection)");
113 mouseDownOnSelect("sl9", 0);
114 shouldBe('selectionPattern("sl9")', '"10000"');
116 debug("10) Select one item with the keyboard (no previous selection)");
117 keyDownOnSelect("sl10", "upArrow");
118 shouldBe('selectionPattern("sl10")', '"00001"');
120 debug("11) Select one item with the keyboard (with previous selection)");
121 keyDownOnSelect("sl11", "downArrow");
122 shouldBe('selectionPattern("sl11")', '"00100"');
124 debug("12) Select an item cmd-clicking");
125 mouseDownOnSelect("sl12", 1, "addSelectionKey");
126 shouldBe('selectionPattern("sl12")', '"01100"');
128 debug("13) Select a range shift-clicking");
129 mouseDownOnSelect("sl13", 3, "rangeSelectionKey");
130 shouldBe('selectionPattern("sl13")', '"11110"');
132 debug("14) Select a range with the keyboard");
133 keyDownOnSelect("sl14", "downArrow", "rangeSelectionKey");
134 shouldBe('selectionPattern("sl14")', '"01100"');