<!doctype html>
<html>
<meta charset="utf-8">
<title>Test 'to' animation of SVGNumberOptionalNumber without optional number.</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 defs = createSVGElement("defs");
rootSVGElement.appendChild(defs);

var filter = createSVGElement("filter");
filter.setAttribute("id", "filter");
filter.setAttribute("x", "-30%");
filter.setAttribute("y", "-30%");
filter.setAttribute("width", "160%");
filter.setAttribute("height", "160%");
defs.appendChild(filter);

var feGaussianBlur = createSVGElement("feGaussianBlur");
feGaussianBlur.setAttribute("id", "blur");
feGaussianBlur.setAttribute("stdDeviation", "5");
filter.appendChild(feGaussianBlur);

var rect = createSVGElement("rect");
rect.setAttribute("id", "rect");
rect.setAttribute("x", "50");
rect.setAttribute("y", "50");
rect.setAttribute("width", "200");
rect.setAttribute("height", "200");
rect.setAttribute("fill", "green");
rect.setAttribute("filter", "url(#filter)");
rect.setAttribute("onclick", "executeTest()");
rootSVGElement.appendChild(rect);

var animate = createSVGElement("animate");
animate.setAttribute("id", "animation");
animate.setAttribute("attributeName", "stdDeviation");
animate.setAttribute("begin", "0s");
animate.setAttribute("dur", "4s");
animate.setAttribute("from", "5");
animate.setAttribute("to", "40 10");
feGaussianBlur.appendChild(animate);

// Setup animation test
function sample1() {
    assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 5, epsilon);
    assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 5, epsilon);

    assert_equals(feGaussianBlur.stdDeviationX.baseVal, 5);
    assert_equals(feGaussianBlur.stdDeviationY.baseVal, 5);
}

function sample2() {
    assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 22.5, epsilon);
    assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 7.5, epsilon);

    assert_equals(feGaussianBlur.stdDeviationX.baseVal, 5);
    assert_equals(feGaussianBlur.stdDeviationY.baseVal, 5);
}

function sample3() {
    assert_approx_equals(feGaussianBlur.stdDeviationX.animVal, 40, epsilon);
    assert_approx_equals(feGaussianBlur.stdDeviationY.animVal, 10, epsilon);

    assert_equals(feGaussianBlur.stdDeviationX.baseVal, 5);
    assert_equals(feGaussianBlur.stdDeviationY.baseVal, 5);
}

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);
});

window.clickX = 60;
window.clickY = 60;

</script>