<!doctype html>
<html>
<meta charset="utf-8">
<meta name="timeout" content="long">
<title>Test 'to' animation of SVGLengthList with different count of items.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/SVGAnimationTestCase-testharness.js"></script>

<svg>
</svg>

<script>
var rootSVGElement = document.querySelector("svg");
var epsilon = 1.0;

// Setup test document
var text = createSVGElement("text");
text.setAttribute("id", "text");
text.textContent = "ABCD";
text.setAttribute("x", "50");
text.setAttribute("y", "50");
text.setAttribute("onclick", "executeTest()");
rootSVGElement.appendChild(text);

var animate = createSVGElement("animate");
animate.setAttribute("id", "animation");
animate.setAttribute("attributeName", "x");
animate.setAttribute("begin", "0s");
animate.setAttribute("dur", "4s");
animate.setAttribute("from", "50");
animate.setAttribute("to", "70 80 90 110");
text.appendChild(animate);

// Setup animation test
function sample1() {
    assert_equals(text.x.animVal.numberOfItems, 1);
    assert_approx_equals(text.x.animVal.getItem(0).value, 50, epsilon);

    assert_equals(text.x.baseVal.numberOfItems, 1);
    assert_equals(text.x.baseVal.getItem(0).value, 50);
}

function sample2() {
    assert_equals(text.x.animVal.numberOfItems, 4);
    assert_approx_equals(text.x.animVal.getItem(0).value, 70, epsilon);
    assert_approx_equals(text.x.animVal.getItem(1).value, 80, epsilon);
    assert_approx_equals(text.x.animVal.getItem(2).value, 90, epsilon);
    assert_approx_equals(text.x.animVal.getItem(3).value, 110, epsilon);

    assert_equals(text.x.baseVal.numberOfItems, 1);
    assert_equals(text.x.baseVal.getItem(0).value, 50);
}

function sample3() {
    assert_equals(text.x.animVal.numberOfItems, 4);
    assert_approx_equals(text.x.animVal.getItem(0).value, 70, epsilon);
    assert_approx_equals(text.x.animVal.getItem(1).value, 80, epsilon);
    assert_approx_equals(text.x.animVal.getItem(2).value, 90, epsilon);
    assert_approx_equals(text.x.animVal.getItem(3).value, 110, epsilon);

    assert_equals(text.x.baseVal.numberOfItems, 1);
    assert_equals(text.x.baseVal.getItem(0).value, 50);
}

smil_async_test((t) => {
    const expectedValues = [
        // [animationId, time, sampleCallback]
        ["animation", 0.0,   sample1],
        ["animation", 2.0,   sample2],
        ["animation", 3.999, sample3],
        ["animation", 4.001, sample1]
    ];

    runAnimationTest(t, expectedValues);
});

</script>
