Test for custom letterpress text-decoration style.

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


Initial value:
PASS e.style.getPropertyCSSValue('text-decoration') is null
PASS computedStyle.textDecoration is 'none'
PASS computedStyle.getPropertyCSSValue('text-decoration').toString() is '[object CSSPrimitiveValue]'
PASS computedStyle.getPropertyCSSValue('text-decoration').cssText is 'none'

Initial value (explicit):
PASS e.style.textDecoration is 'initial'
PASS e.style.getPropertyCSSValue('text-decoration').toString() is '[object CSSValue]'
PASS e.style.getPropertyCSSValue('text-decoration').cssText is 'initial'
PASS computedStyle.textDecoration is 'none'
PASS computedStyle.getPropertyCSSValue('text-decoration').toString() is '[object CSSPrimitiveValue]'
PASS computedStyle.getPropertyCSSValue('text-decoration').cssText is 'none'

Value 'none':
PASS e.style.textDecoration is 'none'
PASS e.style.getPropertyCSSValue('text-decoration').toString() is '[object CSSPrimitiveValue]'
PASS e.style.getPropertyCSSValue('text-decoration').cssText is 'none'
PASS computedStyle.textDecoration is 'none'
PASS computedStyle.getPropertyCSSValue('text-decoration').toString() is '[object CSSPrimitiveValue]'
PASS computedStyle.getPropertyCSSValue('text-decoration').cssText is 'none'

Value '-webkit-letterpress':
PASS e.style.textDecoration is '-webkit-letterpress'
PASS e.style.getPropertyCSSValue('text-decoration').toString() is '[object CSSValueList]'
PASS e.style.getPropertyCSSValue('text-decoration').cssText is '-webkit-letterpress'
PASS computedStyle.textDecoration is '-webkit-letterpress'
PASS computedStyle.getPropertyCSSValue('text-decoration').toString() is '[object CSSValueList]'
PASS computedStyle.getPropertyCSSValue('text-decoration').cssText is '-webkit-letterpress'

Value 'underline -webkit-letterpress line-through':
PASS e.style.textDecoration is 'underline -webkit-letterpress line-through'
PASS e.style.getPropertyCSSValue('text-decoration').toString() is '[object CSSValueList]'
PASS e.style.getPropertyCSSValue('text-decoration').cssText is 'underline -webkit-letterpress line-through'
PASS computedStyle.textDecoration is 'underline line-through -webkit-letterpress'
PASS computedStyle.getPropertyCSSValue('text-decoration').toString() is '[object CSSValueList]'
PASS computedStyle.getPropertyCSSValue('text-decoration').cssText is 'underline line-through -webkit-letterpress'

PASS successfullyParsed is true

TEST COMPLETE

