<!doctype html>
<html>
<meta charset="utf-8">
<title>Test SVGLength animation on LengthModeOther.</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
rootSVGElement.setAttribute("width", "600");
rootSVGElement.setAttribute("height", "400");

// Setup test document
var circle = createSVGElement("circle");
circle.setAttribute("id", "circle");
circle.setAttribute("cx", "50");
circle.setAttribute("cy", "50");
circle.setAttribute("r", "10");
circle.setAttribute("fill", "green");
circle.setAttribute("onclick", "executeTest()");

var animate = createSVGElement("animate");
animate.setAttribute("id", "animation");
animate.setAttribute("attributeName", "r");
animate.setAttribute("begin", "0s");
animate.setAttribute("dur", "4s");
animate.setAttribute("from", "10");
animate.setAttribute("to", "50%");
circle.appendChild(animate);
rootSVGElement.appendChild(circle);

// Setup animation test
function sample1() {
    // Check initial/end conditions
    assert_approx_equals(circle.r.animVal.value, 10, epsilon);
    assert_equals(circle.r.baseVal.value, 10);
}

function sample2() {
    assert_approx_equals(circle.r.animVal.value, 132.5, epsilon);
    assert_equals(circle.r.baseVal.value, 10);
}

function sample3() {
    assert_approx_equals(circle.r.animVal.value, 254.9, epsilon);
    assert_equals(circle.r.baseVal.value, 10);
}

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>