<!DOCTYPE html>
<meta charset="UTF-8">
<title>border-image-slice composition</title>
<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#border-image-slice">
<meta name="assert" content="border-image-slice supports animation by computed value">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/interpolation-testcommon.js"></script>
<body>
<script>
test_composition({
property: 'border-image-slice',
underlying: '1 2 3 4',
addFrom: '1 2 3 4',
addTo: '101 102 103 104',
}, [
{at: -0.25, expect: '0'}, // Non-negative.
{at: 0, expect: '2 4 6 8'},
{at: 0.25, expect: '27 29 31 33'},
{at: 0.5, expect: '52 54 56 58'},
{at: 0.75, expect: '77 79 81 83'},
{at: 1, expect: '102 104 106 108'},
{at: 1.25, expect: '127 129 131 133'},
]);
test_composition({
property: 'border-image-slice',
underlying: '100 200 300 400 fill',
addFrom: '100 fill',
addTo: '200 300 500 fill',
}, [
{at: -0.25, expect: '175 250 300 450 fill'},
{at: 0, expect: '200 300 400 500 fill'},
{at: 0.25, expect: '225 350 500 550 fill'},
{at: 0.5, expect: '250 400 600 600 fill'},
{at: 0.75, expect: '275 450 700 650 fill'},
{at: 1, expect: '300 500 800 700 fill'},
{at: 1.25, expect: '325 550 900 750 fill'},
]);
test_composition({
property: 'border-image-slice',
underlying: '1 2 3% 4%',
addFrom: '1 2 3% 4%',
addTo: '101 102 103% 104%',
}, [
{at: -0.25, expect: '0 0 0% 0%'}, // Non-negative.
{at: 0, expect: '2 4 6% 8%'},
{at: 0.25, expect: '27 29 31% 33%'},
{at: 0.5, expect: '52 54 56% 58%'},
{at: 0.75, expect: '77 79 81% 83%'},
{at: 1, expect: '102 104 106% 108%'},
{at: 1.25, expect: '127 129 131% 133%'},
]);
test_composition({
property: 'border-image-slice',
underlying: '10% 20%',
addFrom: '190% 180% 290% 280%',
addTo: '90% 80%',
}, [
{at: -0.25, expect: '225% 225% 350% 350%'},
{at: 0, expect: '200% 200% 300% 300%'},
{at: 0.25, expect: '175% 175% 250% 250%'},
{at: 0.5, expect: '150% 150% 200% 200%'},
{at: 0.75, expect: '125% 125% 150% 150%'},
{at: 1, expect: '100%'},
{at: 1.25, expect: '75% 75% 50% 50%'},
]);
test_composition({
property: 'border-image-slice',
underlying: '10 20%',
replaceFrom: '100 100%',
addTo: '190 180%',
}, [
{at: -0.25, expect: '75 75%'},
{at: 0, expect: '100 100%'},
{at: 0.25, expect: '125 125%'},
{at: 0.5, expect: '150 150%'},
{at: 0.75, expect: '175 175%'},
{at: 1, expect: '200 200%'},
{at: 1.25, expect: '225 225%'},
]);
test_composition({
property: 'border-image-slice',
underlying: '10% 20',
addFrom: '90% 80',
replaceTo: '0% 0 0% 0',
}, [
{at: -0.25, expect: '125% 125'},
{at: 0, expect: '100% 100'},
{at: 0.25, expect: '75% 75'},
{at: 0.5, expect: '50% 50'},
{at: 0.75, expect: '25% 25'},
{at: 1, expect: '0% 0'},
{at: 1.25, expect: '0% 0'}, // Non-negative.
]);
test_composition({
property: 'border-image-slice',
underlying: '10 20',
addFrom: '100% 150%',
addTo: '200% 250% fill',
}, [
{at: -0.25, expect: '100% 150%'},
{at: 0, expect: '100% 150%'},
{at: 0.25, expect: '100% 150%'},
{at: 0.5, expect: '200% 250% fill'},
{at: 0.75, expect: '200% 250% fill'},
{at: 1, expect: '200% 250% fill'},
{at: 1.25, expect: '200% 250% fill'},
]);
test_composition({
property: 'border-image-slice',
underlying: '10 20',
addFrom: '100 150%',
addTo: '200% 250',
}, [
{at: -0.25, expect: '100 150%'},
{at: 0, expect: '100 150%'},
{at: 0.25, expect: '100 150%'},
{at: 0.5, expect: '200% 250'},
{at: 0.75, expect: '200% 250'},
{at: 1, expect: '200% 250'},
{at: 1.25, expect: '200% 250'},
]);
</script>
</body>