tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

svgnumberlist-animation-2.html (3228B)


      1 <!doctype html>
      2 <html>
      3 <meta charset="utf-8">
      4 <title>Test 'by' animation of SVGNumberList on 'rotate' attribute of text.</title>
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <script src="/resources/SVGAnimationTestCase-testharness.js"></script>
      8 
      9 <svg>
     10 </svg>
     11 
     12 <script>
     13 var rootSVGElement = document.querySelector("svg");
     14 var epsilon = 1.0;
     15 
     16 // Setup test document
     17 var text = createSVGElement("text");
     18 text.textContent = "ABCD";
     19 text.setAttribute("x", "40 60 80 100");
     20 text.setAttribute("y", "60");
     21 text.setAttribute("rotate", "15");
     22 text.setAttribute("fill", "green");
     23 text.setAttribute("onclick", "executeTest()");
     24 
     25 var animate = createSVGElement("animate");
     26 animate.setAttribute("id", "animation");
     27 animate.setAttribute("attributeName", "rotate");
     28 animate.setAttribute("begin", "0s");
     29 animate.setAttribute("dur", "4s");
     30 animate.setAttribute("from", "0 45 90 135");
     31 animate.setAttribute("by", "45 45 45 45");
     32 text.appendChild(animate);
     33 rootSVGElement.appendChild(text);
     34 
     35 // Setup animation test
     36 function sample1() {
     37    assert_equals(text.rotate.animVal.numberOfItems, 1);
     38    assert_approx_equals(text.rotate.animVal.getItem(0).value, 15, epsilon);
     39 
     40    assert_equals(text.rotate.baseVal.numberOfItems, 1);
     41    assert_equals(text.rotate.baseVal.getItem(0).value, 15);
     42 }
     43 
     44 function sample2() {
     45    assert_equals(text.rotate.animVal.numberOfItems, 4);
     46    assert_approx_equals(text.rotate.animVal.getItem(0).value, 0, epsilon);
     47    assert_approx_equals(text.rotate.animVal.getItem(1).value, 45, epsilon);
     48    assert_approx_equals(text.rotate.animVal.getItem(2).value, 90, epsilon);
     49    assert_approx_equals(text.rotate.animVal.getItem(3).value, 135, epsilon);
     50 
     51    assert_equals(text.rotate.baseVal.numberOfItems, 1);
     52    assert_equals(text.rotate.baseVal.getItem(0).value, 15);
     53 }
     54 
     55 function sample3() {
     56    assert_equals(text.rotate.animVal.numberOfItems, 4);
     57    assert_approx_equals(text.rotate.animVal.getItem(0).value, 22.5, epsilon);
     58    assert_approx_equals(text.rotate.animVal.getItem(1).value, 67.5, epsilon);
     59    assert_approx_equals(text.rotate.animVal.getItem(2).value, 112.5, epsilon);
     60    assert_approx_equals(text.rotate.animVal.getItem(3).value, 157.5, epsilon);
     61 
     62    assert_equals(text.rotate.baseVal.numberOfItems, 1);
     63    assert_equals(text.rotate.baseVal.getItem(0).value, 15);
     64 }
     65 
     66 function sample4() {
     67    assert_equals(text.rotate.animVal.numberOfItems, 4);
     68    assert_approx_equals(text.rotate.animVal.getItem(0).value, 45, epsilon);
     69    assert_approx_equals(text.rotate.animVal.getItem(1).value, 90, epsilon);
     70    assert_approx_equals(text.rotate.animVal.getItem(2).value, 135, epsilon);
     71    assert_approx_equals(text.rotate.animVal.getItem(3).value, 180, epsilon);
     72 
     73    assert_equals(text.rotate.baseVal.numberOfItems, 1);
     74    assert_equals(text.rotate.baseVal.getItem(0).value, 15);
     75 }
     76 
     77 smil_async_test((t) => {
     78    const expectedValues = [
     79        // [animationId, time, sampleCallback]
     80        ["animation", 0.0,   sample1],
     81        ["animation", 0.001, sample2],
     82        ["animation", 2.0,   sample3],
     83        ["animation", 3.999, sample4],
     84        ["animation", 4.001, sample1]
     85    ];
     86 
     87    runAnimationTest(t, expectedValues);
     88 });
     89 
     90 </script>