blob: 5392b0df8675b36556ce04bb6db6e909390b9835 [file] [log] [blame]
<!DOCTYPE html>
<meta charset="UTF-8">
<style>
.container {
display: inline-block;
}
.parent {
stroke-dasharray: 30 10;
}
.target {
font-size: 16px;
stroke: black;
stroke-width: 10px;
stroke-dasharray: 10 30;
}
.expected {
stroke: green;
}
</style>
<body>
<template id="target-template">
<svg height="400" width="5">
<path d="M0,0 l0,400" class="target">
</svg>
</template>
<script src="resources/interpolation-test.js"></script>
<script>
assertInterpolation({
property: 'stroke-dasharray',
from: neutralKeyframe,
to: '20 20',
}, [
{at: -0.6, is: '4px, 36px'},
{at: -0.4, is: '6px, 34px'},
{at: -0.2, is: '8px, 32px'},
{at: 0, is: '10px, 30px'},
{at: 0.2, is: '12px, 28px'},
{at: 0.4, is: '14px, 26px'},
{at: 0.6, is: '16px, 24px'},
{at: 0.8, is: '18px, 22px'},
{at: 1, is: '20px, 20px'},
{at: 1.2, is: '22px, 18px'},
]);
assertNoInterpolation({
property: 'stroke-dasharray',
from: 'initial',
to: '20 20',
});
assertInterpolation({
property: 'stroke-dasharray',
from: 'inherit',
to: '20 20',
}, [
{at: -0.6, is: '36px, 4px'},
{at: -0.4, is: '34px, 6px'},
{at: -0.2, is: '32px, 8px'},
{at: 0, is: '30px, 10px'},
{at: 0.2, is: '28px, 12px'},
{at: 0.4, is: '26px, 14px'},
{at: 0.6, is: '24px, 16px'},
{at: 0.8, is: '22px, 18px'},
{at: 1, is: '20px, 20px'},
{at: 1.2, is: '18px, 22px'},
]);
assertInterpolation({
property: 'stroke-dasharray',
from: 'unset',
to: '20 20',
}, [
{at: -0.6, is: '36px, 4px'},
{at: -0.4, is: '34px, 6px'},
{at: -0.2, is: '32px, 8px'},
{at: 0, is: '30px, 10px'},
{at: 0.2, is: '28px, 12px'},
{at: 0.4, is: '26px, 14px'},
{at: 0.6, is: '24px, 16px'},
{at: 0.8, is: '22px, 18px'},
{at: 1, is: '20px, 20px'},
{at: 1.2, is: '18px, 22px'},
]);
// Basic case
assertInterpolation({
property: 'stroke-dasharray',
from: '5 10',
to: '15 20'
}, [
{at: -0.6, is: ' 0 4'}, // Values must be non-negative.
{at: -0.4, is: ' 1 6'},
{at: -0.2, is: ' 3 8'},
{at: 0, is: ' 5 10'},
{at: 0.2, is: ' 7 12'},
{at: 0.4, is: ' 9 14'},
{at: 0.6, is: '11 16'},
{at: 0.8, is: '13 18'},
{at: 1, is: '15 20'},
{at: 1.2, is: '17 22'},
]);
// Zero value
assertInterpolation({
property: 'stroke-dasharray',
from: '0 0',
to: '5 10'
}, [
{at: -0.2, is: ' 0 0'}, // Values must be non-negative.
{at: 0, is: ' 0 0'},
{at: 0.2, is: ' 1 2'},
{at: 0.4, is: ' 2 4'},
{at: 0.6, is: ' 3 6'},
{at: 0.8, is: ' 4 8'},
{at: 1.0, is: ' 5 10'},
{at: 1.2, is: ' 6 12'},
]);
// From none
assertNoInterpolation({
property: 'stroke-dasharray',
from: 'none',
to: '5 10'
});
assertNoInterpolation({
property: 'stroke-dasharray',
from: 'none',
to: '5em 10em'
});
// To none
assertNoInterpolation({
property: 'stroke-dasharray',
from: '5 10',
to: 'none'
});
// Both none
assertNoInterpolation({
property: 'stroke-dasharray',
from: 'none',
to: 'none'
});
</script>
</body>