<?xml version="1.0" encoding="UTF-8"?>
<svg viewBox="0 0 300 200" xmlns="http://www.w3.org/2000/svg" onload="loaded()">
<title>Test mixed cardinality animations</title>
<g transform="translate(50,20)">
    <text x="0" y="0">
        <!-- Test that an animated list of different cardinality works properly -->
        ABC
        <animate attributeName="x" dur="5s" repeatCount="10" values="1; 2,3,4,5; 3"/>
    </text>
    <text x="0" y="30">
        <!-- Test that an animated list of different cardinality works properly -->
        DEF
        <animate attributeName="x" dur="20s" repeatCount="10" values="1; 2,3,4,5; 3"/>
    </text>
    <text y="60">
        <!-- Test that an sum works properly with mixed cardinality -->
        GHI
        <animate attributeName="x" additive="sum" accumulate="sum" dur="1s" repeatCount="10" values="0; 10; 20 20; 30" calcMode="linear" />
    </text>
    <text y="90">
        <!-- Test that an sum works properly with mixed cardinality -->
        JKL
        <animate attributeName="x" additive="sum" accumulate="sum" dur="1s" repeatCount="10" values="0 0; 10 10; 40" calcMode="linear" />
    </text>
</g>
<script>
if (window.testRunner)
    testRunner.waitUntilDone();

function loaded() {
    document.documentElement.setCurrentTime(3);
    // Pause the timeline to avoid it advancing before the result is sampled.
    document.documentElement.pauseAnimations();
    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</svg>
