blob: f1edaefa5e39d453d3c7f1b42ff02ddffd664bd7 [file] [log] [blame]
<!DOCTYPE html><!-- webkit-test-runner [ enableKeygenElement=true ] -->
<html>
<body>
<script src="../../resources/js-test-pre.js"></script>
<p id="description"></p>
<div id="divId">
<form id="form1">
<button id=button1></button>
<fieldset id=fieldset1><legend id=legend1></legend></fieldset>
<input id=inputhidden type=hidden>
<input id=commoninput type=text>
<input id=inputcommon type=search value=searching>
<input id=inputCOMMON type=url>
<input id=commoninput type=email>
<input id=inputpassword type=password>
<input id=inputdate type=date>
<input id=numberId name=inputcommon type=number value=123>
<input id=inputrange type=range>
<input id=inputcolor type=color>
<input id=inputcheckbox type=checkbox>
<input id=inputcommon type=radio value="inputRadioValue">
<input id=inputfile type=file>
<input id=inputsubmit type=submit>
<input id=inputcommon type=image>
<input id=commoninput type=reset>
<input id=inputcommon type=button value=buttonValue>
<keygen id=keygen1></keygen>
<label id=label1></label>
<meter id=meter1></meter>
<object id=object1></object>
<output id=output1></output>
<progress id=progress1></progress>
<select id=select1 name=inputCOmmon>
<optgroup id=optgroup1>group1</optgroup>
<option id=option1>option1</option>
</select>
<textarea id=textarea1></textarea>
</form>
</div>
<div id="console"></div>
<script>
description("This test is for RadioNodeList specified at http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#radionodelist ");
debug("");
var owner = document.getElementById('form1');
shouldBe('owner.elements.length', '23');
var elementsList = owner.elements;
var radioNodeList = elementsList.namedItem("inputcommon");
shouldBe('radioNodeList.length', '4');
shouldBe('radioNodeList[0].value', "'searching'");
shouldBe('radioNodeList[1].value', "'123'");
shouldBe('radioNodeList[2].value', "'inputRadioValue'");
shouldBe('radioNodeList[3].value', "'buttonValue'");
debug("");
debug("Changing the input value to check RadioNodeList is live view of FormCollection");
document.getElementById("numberId").value = 456;
shouldBe('radioNodeList[1].value', "'456'");
debug("");
debug("Checking value IDL attribute on the RadioNodeList");
shouldBe('radioNodeList.value', '""');
shouldBe('radioNodeList.value = "inputRadioValue"; radioNodeList[2].checked', 'true');
shouldBe('Object.prototype.toString.call(radioNodeList[2])', "'[object HTMLInputElement]'");
shouldBe('radioNodeList[2].type', "'radio'");
radioNodeList[2].checked = false;
shouldBe('radioNodeList.value', '""');
shouldBe('radioNodeList[2].checked = true; radioNodeList.value', "'inputRadioValue'");
var newElement = document.createElement("input");
newElement.setAttribute("type", "text");
newElement.setAttribute("value", "new element");
newElement.setAttribute("id", "inputcommon");
debug("");
debug("Check RadioNodeList is updated after adding a new element");
shouldBe('owner.appendChild(newElement); radioNodeList.length', '5');
shouldBe('radioNodeList[4].value', "'new element'");
debug("");
debug("Check RadioNodeList is updated after remove an element");
shouldBe('owner.removeChild(newElement); radioNodeList.length', '4');
shouldBe('radioNodeList[3].value', "'buttonValue'");
var nonSubtreeElement = document.createElement("input");
nonSubtreeElement.setAttribute("type", "text");
nonSubtreeElement.setAttribute("value", "non subtree element");
nonSubtreeElement.setAttribute("id", "inputcommon");
nonSubtreeElement.setAttribute("form", "form1");
var container = document.getElementById("divId");
debug("");
debug("Check RadioNodeList is updated after adding a new element");
shouldBe('container.appendChild(nonSubtreeElement); radioNodeList.length', '5');
shouldBe('owner.elements.length', '24');
shouldBe('radioNodeList[4].value', "'non subtree element'");
debug("");
debug("Check RadioNodeList is updated after change in id, type and checked state of an element");
shouldBe('radioNodeList.length', '5');
debug("After changing the id");
radioNodeList[4].id = "changedName";
shouldBe('radioNodeList.length', '4');
shouldBe('elementsList[13].checked = false; radioNodeList.value', '""');
shouldBe('elementsList[13].checked = true; radioNodeList.value', "'inputRadioValue'");
shouldBe('elementsList[13].type = "date"; radioNodeList.value', "''");
debug("");
debug("Check second RadioNodeList is also created properly");
var radioNodeList2 = elementsList.namedItem("commoninput");
shouldBe('radioNodeList2.length', '3');
shouldBe('radioNodeList2[0].type', "'text'");
shouldBe('radioNodeList2[1].type', "'email'");
shouldBe('radioNodeList2[2].type', "'reset'");
radioNodeList2[2].id = "idChanged";
debug("After changing the id");
shouldBe('radioNodeList2.length', '2');
debug("");
debug("Check that object element also reflects in RadioNodeList.");
document.getElementById("object1").id = "inputcommon";
shouldBe('radioNodeList.length', '5');
debug("");
debug("Check that object element does not reflect in RadioNodeList if its owner form is not present.");
var nonSubtreeObjectElement = document.createElement("object");
nonSubtreeObjectElement.setAttribute("id", "inputcommon");
shouldBe('container.appendChild(nonSubtreeObjectElement); radioNodeList.length', '5');
container.parentNode.removeChild(container);
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>