Tests the HTMLInputElement type attribute

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


input = document.createElement('input')
PASS input.type is "text"
PASS input.hasAttribute('type') is false
PASS input.getAttribute('type') is null
input.type = 'button'
PASS input.type is "button"
PASS input.hasAttribute('type') is true
PASS input.getAttribute('type') is "button"
input.type = ''
PASS input.type is "text"
PASS input.hasAttribute('type') is true
PASS input.getAttribute('type') is ""
input.type = 'text'
PASS input.type is "text"
PASS input.hasAttribute('type') is true
PASS input.getAttribute('type') is "text"
input.type = 'invalid'
PASS input.type is "text"
PASS input.hasAttribute('type') is true
PASS input.getAttribute('type') is "invalid"
input.type = null
PASS input.type is "text"
PASS input.hasAttribute('type') is true
PASS input.getAttribute('type') is "null"
input.removeAttribute('type')
PASS input.type is "text"
PASS input.hasAttribute('type') is false
PASS input.getAttribute('type') is null
PASS successfullyParsed is true

TEST COMPLETE

