This tests Symbol property names with a number of named items collections.

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


[object HTMLCollection]
PASS getElementsByTagNameList.length === 4 is true
PASS getElementsByTagNameList[Symbol()] === undefined is true
PASS getElementsByTagNameList[Symbol('div')] === undefined is true
PASS getElementsByTagNameList['Symbol(div)'] instanceof HTMLDivElement is true

[object Window]
PASS window[Symbol()] === undefined is true
PASS window[Symbol('div')] === undefined is true
PASS window['Symbol(div)'] instanceof HTMLDivElement is true

[object HTMLCollection]
PASS document.images.length === 3 is true
PASS document.images[Symbol()] === undefined is true
PASS document.images[Symbol('img')] === undefined is true
PASS document.images['Symbol(img)'] instanceof HTMLImageElement is true

[object HTMLAllCollection]
PASS document.all.length > 10 is true
PASS document.all[Symbol()] === undefined is true
PASS document.all[Symbol('div')] === undefined is true
PASS document.all['Symbol(div)'] instanceof HTMLDivElement is true

[object HTMLCollection]
PASS document.forms[Symbol()] === undefined is true

[object HTMLFormElement]
PASS document.forms[0][Symbol()] === undefined is true
PASS document.forms[0][Symbol('input')] === undefined is true
PASS document.forms[0]['Symbol(input)'] instanceof HTMLInputElement is true

