This tests that the methods on CSSPrimitiveValue throw exceptions

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


PASS div.style.getPropertyCSSValue('width').getFloatValue(CSSPrimitiveValue.CSS_UNKNOWN) threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('width').getFloatValue(CSSPrimitiveValue.CSS_STRING) threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('width').getFloatValue(CSSPrimitiveValue.CSS_HZ) threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('width').getFloatValue(CSSPrimitiveValue.CSS_S) threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('width').getFloatValue(CSSPrimitiveValue.CSS_RAD) threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('width').getFloatValue(CSSPrimitiveValue.CSS_PERCENTAGE) threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('height').getFloatValue(CSSPrimitiveValue.CSS_PX) threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('height').getFloatValue(CSSPrimitiveValue.CSS_DEG) threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('clip').primitiveType is CSSPrimitiveValue.CSS_RECT
PASS div.style.getPropertyCSSValue('clip').getFloatValue(CSSPrimitiveValue.CSS_PX) threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('clip').getStringValue() threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('clip').getCounterValue() threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('clip').getRGBColorValue() threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('color').primitiveType is CSSPrimitiveValue.CSS_RGBCOLOR
PASS div.style.getPropertyCSSValue('color').getFloatValue(CSSPrimitiveValue.CSS_PX) threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('color').getStringValue() threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('color').getCounterValue() threw exception InvalidAccessError: The object does not support the operation or argument..
PASS div.style.getPropertyCSSValue('color').getRectValue() threw exception InvalidAccessError: The object does not support the operation or argument..
PASS successfullyParsed is true

TEST COMPLETE

