| <!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> |