Tests the classList 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 String(element.classList) is "y"
PASS element.classList.length is 0
PASS element.classList.length is 1
PASS element.classList.length is 1
PASS element.classList.length is 2
PASS element.className is "x"
PASS element.className is "x"
PASS element.className is "x"
PASS element.className is "y x"
PASS element.className is ""
PASS element.className is ""
PASS element.className is "y"
PASS element.className is "y"
Ensure that we can handle empty class name correctly
PASS element.classList.toggle('x') is true
PASS element.className is "x"
PASS element.classList.toggle('x') is false
PASS element.className is ""
PASS element.classList.contains('x') is false
PASS element.classList[1] is undefined.
Test toggle with force argument
PASS element.classList.toggle('x', true) is true
PASS element.className is "x"
PASS element.classList.toggle('x', true) is true
PASS element.className is "x"
PASS element.classList.toggle('x', false) is false
PASS element.className is ""
PASS element.classList.toggle('x', false) is false
PASS element.className is ""
PASS element.classList.toggle('', true) threw expected DOMException with code 12
PASS element.classList.toggle('x y', false) threw expected DOMException with code 5
Testing add in presence of trailing white spaces.
PASS element.className is "x y"
PASS element.className is "x y"
PASS element.className is "y"
Test invalid tokens
PASS element.classList.contains('') is false
PASS element.classList.contains('x y') is false
PASS element.classList.add('') threw expected DOMException with code 12
PASS element.classList.add('x y') threw expected DOMException with code 5
PASS element.classList.remove('') threw expected DOMException with code 12
PASS element.classList.remove('x y') threw expected DOMException with code 5
PASS element.classList.toggle('') threw expected DOMException with code 12
PASS element.classList.toggle('x y') threw expected DOMException with code 5
PASS element.classList.toggle() threw exception TypeError: Not enough arguments.
Indexing
PASS element.classList[0] is "x"
PASS element.classList.item(0) is "x"
PASS element.classList[1] is undefined.
PASS element.classList.item(1) is null
PASS element.classList[1] is "y"
PASS element.classList.item(1) is "y"
PASS element.classList[0] is undefined.
PASS element.classList.item(0) is null
PASS element.classList[4] is undefined.
PASS element.classList.item(4) is null
PASS element.classList[-1] is undefined.
PASS element.classList.item(-1) is null
PASS element.classList.item() threw exception TypeError: Not enough arguments.
Test case since DOMTokenList is case sensitive
PASS element.classList.contains('x') is true
PASS element.classList.contains('X') is false
PASS element.classList[0] is "x"
PASS element.classList.contains() threw exception TypeError: Not enough arguments.
PASS element.classList.contains('X') is true
PASS element.classList.contains('x') is false
PASS element.classList[0] is "X"
Testing whitespace
PASS element.classList.length is 2
PASS element.classList.length is 2
PASS element.classList.length is 2
PASS element.classList.length is 2
PASS element.classList.length is 2
DOMTokenList presence and type
PASS 'undefined' != typeof DOMTokenList is true
PASS typeof DOMTokenList.prototype is "object"
PASS typeof element.classList is "object"
PASS element.classList.constructor is DOMTokenList
PASS element.classList === element.classList is true
PASS document.body.classList.contains("FAIL") is true
PASS document.body.className is ""
Variadic calls
PASS element.className is "a b"
PASS element.className is "a b c"
PASS element.className is "a b c null d undefined 0 false"
PASS element.className is "a b"
PASS element.classList.add('a', 'b', '') threw expected DOMException with code 12
PASS element.className is ""
PASS element.classList.add('a', 'b', 'c d') threw expected DOMException with code 5
PASS element.className is ""
PASS element.classList.add("a", {toString: function() { throw new Error("user error"); }}, "b") threw exception Error: user error.
PASS element.className is ""
PASS element.classList.add() did not throw exception.
PASS observer.takeRecords().length is 1
PASS element.className is "b d"
PASS element.className is "d"
PASS element.className is "a b c"
PASS element.classList.remove('a', 'b', '') threw expected DOMException with code 12
PASS element.className is "a b"
PASS element.classList.remove("a", {toString: function() { throw new Error("user error"); }}, "b") threw exception Error: user error.
PASS element.className is "a b"
PASS element.classList.remove('a', 'b', 'c d') threw expected DOMException with code 5
PASS element.className is "a b"
PASS element.classList.remove() did not throw exception.
PASS observer.takeRecords().length is 1
PASS successfullyParsed is true

TEST COMPLETE

