<!doctype html>
<html>
<title>Test animVal support for SVGAnimatedString animations.</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 aElement = createSVGElement("a");
aElement.setAttribute("target", "base");

var textElement = createSVGElement("text");
textElement.setAttribute("id", "text");
textElement.setAttribute("y", "50");
textElement.textContent = "Test";
aElement.appendChild(textElement);
rootSVGElement.appendChild(aElement);

var animate = createSVGElement("animate");
animate.setAttribute("id", "animation");
animate.setAttribute("attributeName", "target");
animate.setAttribute("begin", "0s");
animate.setAttribute("dur", "4s");
animate.setAttribute("values", "a;b");
aElement.appendChild(animate);

// Setup animation test
function sample1() {
    assert_equals(aElement.target.animVal, "base");
    assert_equals(aElement.target.baseVal, "base");
}

function sample2() {
    assert_equals(aElement.target.animVal, "a");
    assert_equals(aElement.target.baseVal, "base");
}

function sample3() {
    assert_equals(aElement.target.animVal, "b");
    assert_equals(aElement.target.baseVal, "base");
}

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

    runAnimationTest(t, expectedValues);
});

window.animationStartsImmediately = true;

</script>
