<!doctype html>
<html>
<meta charset="utf-8">
<title>This tests by-animations adding to previous underlying values</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/SVGAnimationTestCase-testharness.js"></script>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="800">

<!-- an1: Change width from 10 to 50 in 4s -->
<!-- an2: Change width from 10 to 100 in 4s starting at 5s -->
<rect width="10" height="100" fill="green">
    <animate id="an1" attributeType="XML" attributeName="width" fill="remove" by="calc(5%)" begin="0s" dur="4s"/>
        <animate id="an2" attributeType="XML" attributeName="width" additive="replace" fill="freeze" by="calc(11.25%)" begin="5s" dur="4s"/>
</rect>

</svg>

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

// Setup animation test
function sample1() {
    assert_approx_equals(rect.width.animVal.value, 10, epsilon);
    assert_equals(rect.width.baseVal.value, 10);
}

function sample2() {
    assert_approx_equals(rect.width.animVal.value, 30, epsilon);
    assert_equals(rect.width.baseVal.value, 10);
}

function sample3() {
    assert_approx_equals(rect.width.animVal.value, 50, epsilon);
    assert_equals(rect.width.baseVal.value, 10);
}

function sample4() {
    assert_approx_equals(rect.width.animVal.value, 10, epsilon);
    assert_equals(rect.width.baseVal.value, 10);
}

function sample5() {
    assert_approx_equals(rect.width.animVal.value, 55, epsilon);
    assert_equals(rect.width.baseVal.value, 10);
}

function sample6() {
    assert_approx_equals(rect.width.animVal.value, 100, epsilon);
    assert_equals(rect.width.baseVal.value, 10);
}

smil_async_test((t) => {
    rect = rootSVGElement.ownerDocument.getElementsByTagName("rect")[0];

    const expectedValues = [
        // [animationId, time, sampleCallback]
        ["an1", 0.0,   sample1],
        ["an1", 2.0,   sample2],
        ["an1", 3.999, sample3],
        ["an1", 4.001, sample4],
        ["an1", 7.0,   sample5],
        ["an1", 9.0,   sample6],
        ["an1", 60.0,  sample6]
    ];

    runAnimationTest(t, expectedValues);
});

window.animationStartsImmediately = true;

</script>