Tests the htmlFor attribute and its properties.

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


- Tests from http://simon.html5.org/test/html/dom/reflecting/DOMTokenList/
PASS element.htmlFor.__proto__ is DOMTokenList.prototype
PASS String(element.htmlFor) is "y  z"
PASS element.htmlFor.value is "y  z"
PASS element.getAttribute("for") is "y  z"
PASS String(element.htmlFor) is "r s t"
PASS element.htmlFor.length is 0
PASS element.htmlFor.length is 1
PASS element.htmlFor.length is 1
PASS element.htmlFor.length is 2
PASS element.htmlFor.toString() is "x"
PASS element.htmlFor.toString() is "x"
PASS element.htmlFor.toString() is "x"
PASS element.htmlFor.toString() is "y x"
PASS element.htmlFor.toString() is ""
PASS element.htmlFor.toString() is ""
PASS element.htmlFor.toString() is "y"
PASS element.htmlFor.toString() is "y"
- Ensure that we can handle empty form attribute correctly
PASS list.value is "x"
PASS list.value is ""
PASS element.htmlFor.contains('x') is false
PASS element.htmlFor[1] is undefined.
PASS element.htmlFor.contains('x') is true
PASS element.htmlFor[1] is undefined.
- Testing add in presence of trailing white spaces.
PASS element.htmlFor.toString() is "x y"
PASS element.htmlFor.toString() is "x y"
PASS element.htmlFor.toString() is "y"
- Test invalid tokens
PASS element.htmlFor.contains('') is false
PASS element.htmlFor.contains('x y') is false
PASS element.htmlFor.add('') threw expected DOMException with code 12
PASS element.htmlFor.add('x y') threw expected DOMException with code 5
PASS element.htmlFor.remove('') threw expected DOMException with code 12
PASS element.htmlFor.remove('x y') threw expected DOMException with code 5
PASS element.htmlFor.toggle('') threw expected DOMException with code 12
PASS element.htmlFor.toggle('x y') threw expected DOMException with code 5
- Indexing
PASS element.htmlFor[0] is "x"
PASS element.htmlFor.item(0) is "x"
PASS element.htmlFor[1] is undefined.
PASS element.htmlFor.item(1) is null
PASS element.htmlFor[1] is "y"
PASS element.htmlFor.item(1) is "y"
PASS element.htmlFor[0] is undefined.
PASS element.htmlFor.item(0) is null
PASS element.htmlFor[4] is undefined.
PASS element.htmlFor.item(4) is null
PASS element.htmlFor[-1] is undefined.
PASS element.htmlFor.item(-1) is null
- Test case since DOMTokenList is case sensitive
PASS element.htmlFor.contains('x') is true
PASS element.htmlFor.contains('X') is false
PASS element.htmlFor[0] is "x"
PASS element.htmlFor.contains('X') is true
PASS element.htmlFor.contains('x') is false
PASS element.htmlFor[0] is "X"
- Testing whitespace
PASS element.htmlFor.length is 2
PASS element.htmlFor.length is 2
PASS element.htmlFor.length is 2
PASS element.htmlFor.length is 2
PASS element.htmlFor.length is 2
- DOMTokenList presence and type
PASS 'undefined' != typeof DOMTokenList is true
PASS typeof DOMTokenList.prototype is "object"
PASS typeof element.htmlFor is "object"
PASS element.htmlFor.constructor is DOMTokenList
PASS element.htmlFor === element.htmlFor is true
PASS successfullyParsed is true

TEST COMPLETE

