Test to make sure list-style shorthand property returns CSSValueList properly.

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


PASS computedStyle.getPropertyValue('list-style') is 'circle outside url("dummy://test.png")'
PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
PASS computedStyle.getPropertyCSSValue('list-style').length is 3
PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside url("dummy://test.png")'
PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'circle'
PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'dummy://test.png'
PASS computedStyle.getPropertyValue('list-style') is 'disc outside none'
PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
PASS computedStyle.getPropertyCSSValue('list-style').length is 3
PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'disc outside none'
PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'disc'
PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'none'
PASS computedStyle.getPropertyValue('list-style') is 'circle outside none'
PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
PASS computedStyle.getPropertyCSSValue('list-style').length is 3
PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside none'
PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'circle'
PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'none'
PASS computedStyle.getPropertyValue('list-style') is 'none outside none'
PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
PASS computedStyle.getPropertyCSSValue('list-style').length is 3
PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'none outside none'
PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'none'
PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'none'
PASS computedStyle.getPropertyValue('list-style') is 'circle outside url("dummy://test.png")'
PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
PASS computedStyle.getPropertyCSSValue('list-style').length is 3
PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside url("dummy://test.png")'
PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'circle'
PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'dummy://test.png'
PASS successfullyParsed is true

TEST COMPLETE

