Test computed style for the border-image property and sub-properties

PASS computedBorderImageStyle('12 11 12 11', 'border-image-slice') is '12 11'
PASS computedBorderImageStyle('12 11 12 11', 'border-image') is 'none'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 12 11 repeat stretch', 'border-image-slice') is '12 11'
PASS computedBorderImageStyle('url(dummy://test.png) 12 11 repeat stretch', 'border-image') is 'url("dummy://test.png") 12 11 / 1 / 0px repeat stretch'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 1 2 3 4 repeat stretch', 'border-image-slice') is '1 2 3 4'
PASS computedBorderImageStyle('url(dummy://test.png) 1 2 3 4 repeat stretch', 'border-image') is 'url("dummy://test.png") 1 2 3 4 / 1 / 0px repeat stretch'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 12 repeat stretch', 'border-image-slice') is '12'
PASS computedBorderImageStyle('url(test.png) 10 10 5 5 repeat stretch', 'border-image-slice') is '10 10 5 5'
PASS computedBorderImageStyle('url(test.png) 10 a b c repeat stretch', 'border-image-slice') is '100%'
PASS computedBorderImageStyle('url(dummy://test.png) 10 a b c repeat stretch', 'border-image') is 'none'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10 20 fill', 'border-image-slice') is '10 20 fill'
PASS computedBorderImageStyle('url(dummy://test.png) 10 20 fill', 'border-image') is 'url("dummy://test.png") 10 20 fill / 1 / 0px stretch'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image-source') is 'url("dummy://test.png")'
PASS computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image') is 'url("dummy://test.png") 10 / 1 / 0px repeat stretch'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10', 'border-image-repeat') is 'stretch'
PASS computedBorderImageStyle('url(dummy://test.png) 10', 'border-image') is 'url("dummy://test.png") 10 / 1 / 0px stretch'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10 stretch', 'border-image-repeat') is 'stretch'
PASS computedBorderImageStyle('url(dummy://test.png) 10 stretch', 'border-image') is 'url("dummy://test.png") 10 / 1 / 0px stretch'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10 kittens', 'border-image-repeat') is 'stretch'
PASS computedBorderImageStyle('url(dummy://test.png) 10 kittens', 'border-image') is 'none'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10 stretch stretch fill', 'border-image-repeat') is 'stretch'
PASS computedBorderImageStyle('url(dummy://test.png) 10 stretch stretch fill', 'border-image') is 'none'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10 repeat stretch', 'border-image-repeat') is 'repeat stretch'
PASS computedBorderImageStyle('url(dummy://test.png) 10 repeat stretch', 'border-image') is 'url("dummy://test.png") 10 / 1 / 0px repeat stretch'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10 round space', 'border-image-repeat') is 'round space'
PASS computedBorderImageStyle('url(dummy://test.png) 10 round space', 'border-image') is 'url("dummy://test.png") 10 / 1 / 0px round space'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10 / 13px 1.5em 1em 10px', 'border-image-width') is '13px 24px 16px 10px'
PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px 1.5em 1em 10px', 'border-image') is 'url("dummy://test.png") 10 / 13px 24px 16px 10px / 0px stretch'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10 / 14px 10%', 'border-image-width') is '14px 10%'
PASS computedBorderImageStyle('url(dummy://test.png) 10 / 14px 10%', 'border-image') is 'url("dummy://test.png") 10 / 14px 10% / 0px stretch'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10 / 13px / 11px', 'border-image-outset') is '11px'
PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px', 'border-image') is 'url("dummy://test.png") 10 / 13px / 11px stretch'
PASS checkComputedStyleValue() is true
PASS computedBorderImageStyle('url(test.png) 10 / 13px / 11px repeat stretch', 'border-image-outset') is '11px'
PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px repeat stretch', 'border-image') is 'url("dummy://test.png") 10 / 13px / 11px repeat stretch'
PASS checkComputedStyleValue() is true
PASS successfullyParsed is true

TEST COMPLETE

