<!doctype html>
<html>
<title>Test 'by' animation on path. You should see a green 100x100 path and only PASS messages</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 path = createSVGElement("path");
path.setAttribute("id", "path");
path.setAttribute("d", "M 40 40 L 60 40 L 60 60 L 40 60 z");
path.setAttribute("fill", "green");
path.setAttribute("onclick", "executeTest()");

var animate = createSVGElement("animate");
animate.setAttribute("id", "animation");
animate.setAttribute("attributeName", "d");
animate.setAttribute("from", "M 40 40 L 60 40 L 60 60 L 40 60 z");
animate.setAttribute("by", "M 0 0 L 100 0 L 100 100 L 0 100 z");
animate.setAttribute("begin", "0s");
animate.setAttribute("fill", "freeze");
animate.setAttribute("dur", "4s");
path.appendChild(animate);
rootSVGElement.appendChild(path);

// Setup animation test
function sample1() {
    assert_equals(path.getAttribute('d'), "M 40 40 L 60 40 L 60 60 L 40 60 z");
}

function sample2() {
    assert_equals(path.getAttribute('d'), "M 40 40 L 109.975 40 L 109.975 109.975 L 40 109.975 Z");
}

function sample3() {
    assert_equals(path.getAttribute('d'), "M 40 40 L 110.025 40 L 110.025 110.025 L 40 110.025 Z");
}

function sample4() {
    assert_equals(path.getAttribute('d'), "M 40 40 L 159.975 40 L 159.975 159.975 L 40 159.975 Z");
}

function sample5() {
    assert_equals(path.getAttribute('d'), "M 40 40 L 160 40 L 160 160 L 40 160 Z");
}

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

    runAnimationTest(t, expectedValues);
});

</script>
