Various tests about radio button group.

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

Changing the name attribute of a radio button:
PASS $("radio1-1").checked is true
PASS $("radio1-2").checked is true
PASS $("radio1-1").checked is false
PASS $("radio1-2").checked is true
PASS $("radio1-1").checked = true; $("radio1-1").checked is true
PASS $("radio1-2").checked is false

Detach the from from the document tree:
PASS radioButtons[0].checked is true
PASS radioButtons[1].checked is false
PASS radioButtons[1].checked = true; radioButtons[0].checked is false
PASS radioButtons[1].checked is true


Changing the type of an input element to radio:
PASS $("radio1-1").checked is true
PASS $("radio1-1").checked is false
PASS $("text1-2").checked is true


Moving a checked radio button to another form:
PASS $("outside").checked is true
PASS $("inside").checked is true
PASS $("inside2").checked is true
PASS $("outside").checked is true
PASS $("inside").checked is false
PASS $("inside2").checked is true
When a radio in a form is removed, it should not affect Document-level groups:
PASS $("outside").checked is true


Removing an ancestor owner form:
PASS $("radio0-1").checked is true


Changing form attribute
PASS $("radio1-1").checked is true
PASS $("radio1-2").checked is false
PASS $("radio1-3").checked is true
Removing a non-ancestor owner form:
PASS $("radio1-3").checked is true
PASS $("radio1-4").checked is true
(The following test depends on gc(). It might fail on a real browser.)
PASS $("radio1-1").checked is false
PASS $("radio1-3").checked is true


Adding a radio button to an orphan tree:
PASS orphanDiv.getElementsByTagName("input")[0].checked is true
PASS orphanDiv.getElementsByTagName("input")[1].checked is true
Adding the orphan tree to a document:
PASS orphanDiv.getElementsByTagName("input")[0].checked is false
PASS orphanDiv.getElementsByTagName("input")[1].checked is true
Parsing an orphan form:
PASS orphanDiv.getElementsByTagName("input")[0].checked is false
PASS orphanDiv.getElementsByTagName("input")[1].checked is true


Moving a radio button to another Document:
PASS doc.getElementById("radio4-2").checked is false
PASS doc.getElementById("radio4-1").checked is true
PASS doc.getElementById("radio4-1").checked is true


Cloning a radio button:
PASS original.checked is true
PASS clonedRadio.checked is true


PASS successfullyParsed is true

TEST COMPLETE

