This test is for RadioNodeList specified at http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#radionodelist

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".



PASS owner.elements.length is 23
PASS radioNodeList.length is 4
PASS radioNodeList[0].value is 'searching'
PASS radioNodeList[1].value is '123'
PASS radioNodeList[2].value is 'inputRadioValue'
PASS radioNodeList[3].value is 'buttonValue'

Changing the input value to check RadioNodeList is live view of FormCollection
PASS radioNodeList[1].value is '456'

Checking value IDL attribute on the RadioNodeList
PASS radioNodeList.value is ""
PASS radioNodeList.value = "inputRadioValue"; radioNodeList[2].checked is true
PASS Object.prototype.toString.call(radioNodeList[2]) is '[object HTMLInputElement]'
PASS radioNodeList[2].type is 'radio'
PASS radioNodeList.value is ""
PASS radioNodeList[2].checked = true; radioNodeList.value is 'inputRadioValue'

Check RadioNodeList is updated after adding a new element
PASS owner.appendChild(newElement); radioNodeList.length is 5
PASS radioNodeList[4].value is 'new element'

Check RadioNodeList is updated after remove an element
PASS owner.removeChild(newElement); radioNodeList.length is 4
PASS radioNodeList[3].value is 'buttonValue'

Check RadioNodeList is updated after adding a new element
PASS container.appendChild(nonSubtreeElement); radioNodeList.length is 5
PASS owner.elements.length is 24
PASS radioNodeList[4].value is 'non subtree element'

Check RadioNodeList is updated after change in id, type and checked state of an element
PASS radioNodeList.length is 5
After changing the id
PASS radioNodeList.length is 4
PASS elementsList[13].checked = false; radioNodeList.value is ""
PASS elementsList[13].checked = true; radioNodeList.value is 'inputRadioValue'
PASS elementsList[13].type = "date"; radioNodeList.value is ''

Check second RadioNodeList is also created properly
PASS radioNodeList2.length is 3
PASS radioNodeList2[0].type is 'text'
PASS radioNodeList2[1].type is 'email'
PASS radioNodeList2[2].type is 'reset'
After changing the id
PASS radioNodeList2.length is 2

Check that object element also reflects in RadioNodeList.
PASS radioNodeList.length is 5

Check that object element does not reflect in RadioNodeList if its owner form is not present.
PASS container.appendChild(nonSubtreeObjectElement); radioNodeList.length is 5
PASS successfullyParsed is true

TEST COMPLETE

