Test the parsing of the image-rendering property.

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


PASS div.style.getPropertyCSSValue('image-rendering').cssValueType is CSSValue.CSS_PRIMITIVE_VALUE
PASS div.style.getPropertyValue('image-rendering') is "auto"
PASS getComputedStyle(div).getPropertyValue('image-rendering') is "auto"
PASS div.style.getPropertyCSSValue('image-rendering').cssValueType is CSSValue.CSS_PRIMITIVE_VALUE
PASS div.style.getPropertyValue('image-rendering') is "crisp-edges"
PASS getComputedStyle(div).getPropertyValue('image-rendering') is "crisp-edges"
PASS div.style.getPropertyCSSValue('image-rendering').cssValueType is CSSValue.CSS_PRIMITIVE_VALUE
PASS div.style.getPropertyValue('image-rendering') is "pixelated"
PASS getComputedStyle(div).getPropertyValue('image-rendering') is "pixelated"
PASS div.style.getPropertyCSSValue('image-rendering').cssValueType is CSSValue.CSS_PRIMITIVE_VALUE
PASS div.style.getPropertyValue('image-rendering') is "-webkit-crisp-edges"
PASS getComputedStyle(div).getPropertyValue('image-rendering') is "crisp-edges"
PASS div.style.getPropertyCSSValue('image-rendering').cssValueType is CSSValue.CSS_PRIMITIVE_VALUE
PASS div.style.getPropertyValue('image-rendering') is "-webkit-optimize-contrast"
PASS getComputedStyle(div).getPropertyValue('image-rendering') is "crisp-edges"
PASS div.style.getPropertyCSSValue('image-rendering').cssValueType is CSSValue.CSS_PRIMITIVE_VALUE
PASS div.style.getPropertyValue('image-rendering') is "optimizeSpeed"
PASS getComputedStyle(div).getPropertyValue('image-rendering') is "optimizeSpeed"
PASS div.style.getPropertyCSSValue('image-rendering').cssValueType is CSSValue.CSS_PRIMITIVE_VALUE
PASS div.style.getPropertyValue('image-rendering') is "optimizeQuality"
PASS getComputedStyle(div).getPropertyValue('image-rendering') is "optimizeQuality"
PASS successfullyParsed is true

TEST COMPLETE

