Chromium Code Reviews| Index: LayoutTests/fast/forms/form-radio-node-list.html |
| diff --git a/LayoutTests/fast/forms/form-radio-node-list.html b/LayoutTests/fast/forms/form-radio-node-list.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..faecee11ad341b55f18793b0857b8ece48825ede |
| --- /dev/null |
| +++ b/LayoutTests/fast/forms/form-radio-node-list.html |
| @@ -0,0 +1,91 @@ |
| +<!doctype html> |
| +<html> |
| +<body> |
|
esprehn
2013/12/19 11:02:48
We usually leave out <html> and <body>
sof
2013/12/19 12:15:05
Done.
|
| +<script src="../../resources/js-test.js"></script> |
| +<form id="f1"> |
| + <button id=n1></button> |
| + <fieldset id=n1><legend id=legend1></legend></fieldset> |
| + <input name=n1 type=hidden> |
| + <input name=n1 type=image> |
| + <input name=n1 type=text> |
| + <input name=n1 type=radio> |
| + <keygen id=n1></keygen> |
| + <output id=n1></output> |
| + <object name=n1></object> |
| + <select name=n1><option id=n1></option></select> |
| + <textarea id=n1></textarea> |
| + <div id=n1></div> |
| + <option id=n1></option> |
| +</form> |
| +<form id="f2"> |
| + <button id=n1></button> |
|
esprehn
2013/12/19 11:02:48
You have duplicate ids in here, is that on purpose
sof
2013/12/19 12:15:05
It's key that they are for this test, yes.
|
| + <keygen id=n1></keygen> |
| + <output id=n1></output> |
| + <object name=n1></object> |
| + <select name=n1><option id=n1></option></select> |
| + <input name=n1 type=hidden> |
| + <input name=n1 type=image> |
| + <input name=n1 type=text> |
| + <input name=n2 type=image> |
| + <img name=n2></img> |
| + <img id=n2></img> |
| +</form> |
| +<script> |
| +description("Test RadioNodeLists returned by the HTMLFormElement named-getter."); |
| + |
| +var form1 = document.getElementById("f1"); |
| +shouldBe("form1.elements.length", "10"); |
| + |
| +var radioNodeList; |
| + |
| +function testListedElements() { |
| + debug("Check that only 'listed elements' are included in the list, if any."); |
| + radioNodeList = form1["n1"]; |
| + shouldBe("radioNodeList.length", "10"); |
| + |
| + shouldBeTrue("radioNodeList[0] instanceof HTMLButtonElement"); |
| + shouldBeTrue("radioNodeList[1] instanceof HTMLFieldSetElement"); |
| + shouldBeTrue("radioNodeList[2] instanceof HTMLInputElement"); |
| + shouldBe("radioNodeList[2].type", "'hidden'"); |
| + shouldBeTrue("radioNodeList[3] instanceof HTMLInputElement"); |
| + shouldBe("radioNodeList[3].type", "'text'"); |
| + shouldBeTrue("radioNodeList[4] instanceof HTMLInputElement"); |
| + shouldBe("radioNodeList[4].type", "'radio'"); |
| + shouldBeTrue("radioNodeList[5] instanceof HTMLKeygenElement"); |
| + shouldBeTrue("radioNodeList[6] instanceof HTMLOutputElement"); |
| + shouldBeTrue("radioNodeList[7] instanceof HTMLObjectElement"); |
| + shouldBeTrue("radioNodeList[8] instanceof HTMLSelectElement"); |
| + shouldBeTrue("radioNodeList[9] instanceof HTMLTextAreaElement"); |
| + debug(""); |
|
esprehn
2013/12/19 11:02:48
Remove this empty debug.
sof
2013/12/19 12:15:05
Done.
|
| +} |
| + |
| +function testImageElement2ndPhase() { |
|
esprehn
2013/12/19 11:02:48
Can this just be a separate test?
sof
2013/12/19 12:15:05
ok, done.
|
| + debug("Check that if no 'listed elements' match by name, img elements are picked instead."); |
| + |
| + function verifyLength(n) { |
| + shouldBe("radioNodeList.length", n.toString()); |
| + for (var i = 0; i < n; i++) |
| + shouldBeTrue("radioNodeList[" + i + "] instanceof HTMLImageElement"); |
|
esprehn
2013/12/19 11:02:48
Dynamic tests like this are very hard to follow, I
sof
2013/12/19 12:15:05
ok, abstracted out.
|
| + } |
| + |
| + var form2 = document.getElementById("f2"); |
| + radioNodeList = form2["n2"]; |
| + verifyLength(2); |
| + |
| + var button = document.createElement("button"); |
| + button.name = "n2"; |
| + form2.appendChild(button); |
| + verifyLength(2); |
| + |
| + var img = document.createElement("img"); |
| + img.name = "n2"; |
| + form2.appendChild(img); |
| + verifyLength(3); |
| +} |
| + |
| +testListedElements(); |
| +testImageElement2ndPhase(); |
| +</script> |
| +<p id="description"></p> |
| +</body> |
| +</html> |