This test verifies that collection getters return the same collection when called repeatedly.

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


PASS document.all is document.all
PASS document.all === document.all is true
PASS document.images is document.images
PASS document.images === document.images is true
PASS document.embeds is document.embeds
PASS document.embeds === document.embeds is true
PASS document.applets is document.applets
PASS document.applets === document.applets is true
PASS document.links is document.links
PASS document.links === document.links is true
PASS document.forms is document.forms
PASS document.forms === document.forms is true
PASS document.anchors is document.anchors
PASS document.anchors === document.anchors is true
PASS document.scripts is document.scripts
PASS document.scripts === document.scripts is true
PASS document.getElementsByTagName('table')[0].rows[0].cells is document.getElementsByTagName('table')[0].rows[0].cells
PASS document.getElementsByTagName('table')[0].rows[0].cells === document.getElementsByTagName('table')[0].rows[0].cells is true
PASS document.getElementsByTagName('table')[0].tBodies is document.getElementsByTagName('table')[0].tBodies
PASS document.getElementsByTagName('table')[0].tBodies === document.getElementsByTagName('table')[0].tBodies is true
PASS document.getElementsByTagName('table')[0].tBodies[0].rows is document.getElementsByTagName('table')[0].tBodies[0].rows
PASS document.getElementsByTagName('table')[0].tBodies[0].rows === document.getElementsByTagName('table')[0].tBodies[0].rows is true
PASS document.body.children is document.body.children
PASS document.body.children === document.body.children is true
PASS document.getElementsByTagName('map')[0].areas is document.getElementsByTagName('map')[0].areas
PASS document.getElementsByTagName('map')[0].areas === document.getElementsByTagName('map')[0].areas is true
PASS document.getElementsByTagName('select')[0].options is document.getElementsByTagName('select')[0].options
PASS document.getElementsByTagName('select')[0].options === document.getElementsByTagName('select')[0].options is true
PASS successfullyParsed is true

TEST COMPLETE
 
