blob: 59ceb25cb1f0e6bf620648426170389447291d06 [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../../css-parser/resources/property-parsing-test.js"></script>
<body>
<script>
function assert_computed_style(property, value, expectedValue) {
if (expectedValue === undefined)
expectedValue = value;
test(function() {
var div = document.createElement('div');
div.setAttribute("style", property + ": " + value);
document.head.appendChild(div);
var computedStyleValue = getComputedStyle(div)[property];
div.remove();
assert_equals(computedStyleValue, expectedValue);
}, "Computed style after parsing style='" + property + ": " + value + "'");
}
var tests = [
{ style: "conic-gradient(black)" , computed: "none" },
{ style: "conic-gradient(black 0%)" , computed: "none" },
{ style: "conic-gradient(black 0%, 25%)" , computed: "none" },
{ style: "conic-gradient(black 0px, white)" , computed: "none" },
{ style: "conic-gradient(black, , white)" , computed: "none" },
{ style: "conic-gradient(0%, black, white)" , computed: "none" },
{ style: "conic-gradient(center, black, white)" , computed: "none" },
{ style: "conic-gradient(top left, black, white)" , computed: "none" },
{ style: "conic-gradient(at bottom bottom, black, white)" , computed: "none" },
{ style: "conic-gradient(at left left, black, white)" , computed: "none" },
{ style: "conic-gradient(from 0deg at left 10% top, black, white)" , computed: "none" },
{ style: "conic-gradient(at top left black, white)" , computed: "none" },
{ style: "conic-gradient(black 0%, 10%, 10%, green .5turn, 50%, white)", computed: "none" },
{ style: "conic-gradient(from 0 black, white)" , computed: "none" },
{ style: "conic-gradient(from 0 at top left black, white)" , computed: "none" },
{ style: "conic-gradient(from 0, at top left, black, white)" , computed: "none" },
{ style: "conic-gradient(at top left from 0, black, white)" , computed: "none" },
{ style: "conic-gradient(black 10% 20% 30%, white)" , computed: "none" },
{ style: "conic-gradient(black, 30% 50%, white)" , computed: "none" },
{ style: "conic-gradient(black, white calc(360deg / 10 + 50%)" , computed: "none" },
{ style: "conic-gradient(black, white)" , computed: "conic-gradient(black, white)" },
{ style: "conic-gradient(black 0, white)" , computed: "conic-gradient(black 0deg, white)" },
{ style: "conic-gradient(black 0%, white)" , computed: "conic-gradient(black 0%, white)" },
{ style: "conic-gradient(black 0deg, white)" , computed: "conic-gradient(black 0deg, white)" },
{ style: "conic-gradient(black 0grad, white)" , computed: "conic-gradient(black 0grad, white)" },
{ style: "conic-gradient(black 0rad, white)" , computed: "conic-gradient(black 0rad, white)" },
{ style: "conic-gradient(black 0turn, white)" , computed: "conic-gradient(black 0turn, white)" },
{ style: "conic-gradient(black, white 50%)" , computed: "conic-gradient(black, white 50%)" },
{ style: "conic-gradient(black 10%, white 50%)" , computed: "conic-gradient(black 10%, white 50%)" },
{ style: "conic-gradient(black 10%, white 180deg)", computed: "conic-gradient(black 10%, white 180deg)" },
{ style: "conic-gradient(black 10% 20%, white)" , computed: "conic-gradient(black 10% 20%, white)" },
{ style: "conic-gradient(black, white 270deg 360deg)" , computed: "conic-gradient(black, white 270deg 360deg)" },
{ style: "conic-gradient(black 10% 20%, white 270deg 360deg)" , computed: "conic-gradient(black 10% 20%, white 270deg 360deg)" },
{ style: "conic-gradient(blue 10%, blue 20%, white)" , computed: "conic-gradient(blue 10% 20%, white)" },
{ style: "conic-gradient(blue 10%, blue 20%, blue 30%, white)" , computed: "conic-gradient(blue 10% 20%, blue 30%, white)" },
{ style: "conic-gradient(blue 10%, blue 20%, blue 30%, blue 40%, white)" , computed: "conic-gradient(blue 10% 20%, blue 30% 40%, white)" },
{ style: "conic-gradient(blue 10%, blue 20%, white 270deg, white 360deg)", computed: "conic-gradient(blue 10% 20%, white 270deg 360deg)" },
{ style: "conic-gradient(blue 10%, blue 20% 30%, white)" , computed: "conic-gradient(blue 10% 20%, blue 30%, white)" },
{ style: "conic-gradient(blue, blue, blue, white)" , computed: "conic-gradient(blue, blue, blue, white)" },
{ style: "conic-gradient(at top left, black, white)" , computed: "conic-gradient(at left top, black, white)" },
{ style: "conic-gradient(at bottom right, black, white)" , computed: "conic-gradient(at right bottom, black, white)" },
{ style: "conic-gradient(at center, black, white)" , computed: "conic-gradient(at center center, black, white)" },
{ style: "conic-gradient(at center center, black, white)", computed: "conic-gradient(at center center, black, white)" },
{ style: "conic-gradient(from 0, black, white)" , computed: "conic-gradient(from 0deg, black, white)" },
{ style: "conic-gradient(from 10deg, black, white)" , computed: "conic-gradient(from 10deg, black, white)" },
{ style: "conic-gradient(from 10deg at center, black, white)", computed: "conic-gradient(from 10deg at center center, black, white)" },
{ style: "conic-gradient(black 0%, 10%, green .5turn, 50%, white)", computed: "conic-gradient(black 0%, 10%, green 0.5turn, 50%, white)" },
{ style: "conic-gradient(black 0deg, 0%, green .5turn, 50%, white 1turn)", computed: "conic-gradient(black 0deg, 0%, green 0.5turn, 50%, white 1turn)" },
// Examples from https://drafts.csswg.org/css-images-4/#conic-gradient-examples
{ style: "conic-gradient(#f06, gold)" , computed: "conic-gradient(rgb(255, 0, 102), gold)" },
{ style: "conic-gradient(at 50% 50%, #f06, gold)" , computed: "conic-gradient(at 50% 50%, rgb(255, 0, 102), gold)" },
{ style: "conic-gradient(from 0deg, #f06, gold)" , computed: "conic-gradient(from 0deg, rgb(255, 0, 102), gold)" },
{ style: "conic-gradient(from 0deg at center, #f06, gold)", computed: "conic-gradient(from 0deg at center center, rgb(255, 0, 102), gold)" },
{ style: "conic-gradient(#f06 0%, gold 100%)" , computed: "conic-gradient(rgb(255, 0, 102) 0%, gold 100%)" },
{ style: "conic-gradient(#f06 0deg, gold 1turn)" , computed: "conic-gradient(rgb(255, 0, 102) 0deg, gold 1turn)" },
{ style: "conic-gradient(white -50%, black 150%)" , computed: "conic-gradient(white -50%, black 150%)" },
{ style: "conic-gradient(white -180deg, black 540deg)" , computed: "conic-gradient(white -180deg, black 540deg)" },
{ style: "conic-gradient(hsl(0,0%,75%), hsl(0,0%,25%))", computed: "conic-gradient(rgb(191, 191, 191), rgb(64, 64, 64))" },
{ style: "conic-gradient(from 45deg, white, black, white)" , computed: "conic-gradient(from 45deg, white, black, white)" },
{ style: "conic-gradient(hsl(0,0%,87.5%), white 45deg, black 225deg, hsl(0,0%,87.5%))", computed: "conic-gradient(rgb(223, 223, 223), white 45deg, black 225deg, rgb(223, 223, 223))" },
{ style: "conic-gradient(white 45deg, black 225deg, white 405deg)" , computed: "conic-gradient(white 45deg, black 225deg, white 405deg)" },
{ style: "conic-gradient(red, yellow, lime, aqua, blue, magenta, red", computed: "conic-gradient(red, yellow, lime, aqua, blue, magenta, red)" },
{ style: "conic-gradient(gold, #f06 20deg)" , computed: "conic-gradient(gold, rgb(255, 0, 102) 20deg)" },
{ style: "conic-gradient(gold calc(100% / 2), #f06 calc(360deg * 4 / 5))" , computed: "conic-gradient(gold calc(50%), rgb(255, 0, 102) calc(288deg))" },
];
test(function() {
tests.forEach(function(test) {
assert_computed_style('background-image', test.style, test.computed);
});
}, "conic-gradient parsing");
test(function() {
tests.forEach(function(test) {
assert_computed_style('background-image', 'repeating-' + test.style,
test.computed == 'none' ? test.computed : 'repeating-' + test.computed);
});
}, "repeating-conic-gradient parsing");
</script>
</body>