Test the parsing of the image-set function.

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



Single value for background-image with gradient : linear-gradient(green, white) 1x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 2
PASS subRule.cssText is 'linear-gradient(green, white)'
PASS subRule.cssText is '1x'

Single value for content with gradient : linear-gradient(green, white) 1x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 2
PASS subRule.cssText is 'linear-gradient(green, white)'
PASS subRule.cssText is '1x'

Single value for background-image with gradients : linear-gradient(green, white) 1x, radial-gradient(blue, white) 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule.cssText is 'linear-gradient(green, white)'
PASS subRule.cssText is '1x'
PASS subRule.cssText is 'radial-gradient(blue, white)'
PASS subRule.cssText is '2x'

Combined gradient and URL : url('#a') 1x, linear-gradient(green, white) 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
PASS subRule.cssText is '1x'
PASS subRule.cssText is 'linear-gradient(green, white)'
PASS subRule.cssText is '2x'

Combined gradient and URL in content : url('#a') 1x, linear-gradient(green, white) 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
PASS subRule.cssText is '1x'
PASS subRule.cssText is 'linear-gradient(green, white)'
PASS subRule.cssText is '2x'

Combined gradient and cross-fade : -webkit-cross-fade(url('#a'), url('#b'), 70%) 1x, linear-gradient(green, white) 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
PASS subRule.cssText is '1x'
PASS subRule.cssText is 'linear-gradient(green, white)'
PASS subRule.cssText is '2x'

Single value for background-image with gradient and dpi : linear-gradient(green, white) 192dpi
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.__proto__) is 'CSSValueList'
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 2
PASS subRule.cssText is 'linear-gradient(green, white)'
PASS subRule.cssText is '192dpi'
PASS successfullyParsed is true

TEST COMPLETE

