tor-browser

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

animateTransform-pattern-transform.html (3328B)


      1 <!doctype html>
      2 <html>
      3 <meta charset="utf-8">
      4 <title>Tests animation of 'patternTransform'. Should result in a 100x100 rect and only PASS messages.</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 
     18 var defs = createSVGElement("defs");
     19 rootSVGElement.appendChild(defs);
     20 
     21 var pattern = createSVGElement("pattern");
     22 pattern.setAttribute("id", "pattern");
     23 pattern.setAttribute("width", "200");
     24 pattern.setAttribute("height", "200");
     25 
     26 var rect = createSVGElement("rect");
     27 rect.setAttribute("id", "rect");
     28 rect.setAttribute("width", "200");
     29 rect.setAttribute("height", "200");
     30 rect.setAttribute("fill", "url(#pattern)");
     31 rect.setAttribute("onclick", "executeTest()");
     32 
     33 var patternRect = createSVGElement("rect");
     34 patternRect.setAttribute("id", "patternRect");
     35 patternRect.setAttribute("width", "100");
     36 patternRect.setAttribute("height", "100");
     37 patternRect.setAttribute("fill", "green");
     38 pattern.appendChild(patternRect);
     39 
     40 var animate = createSVGElement("animateTransform");
     41 animate.setAttribute("id", "animation");
     42 animate.setAttribute("attributeName", "patternTransform");
     43 animate.setAttribute("type", "scale");
     44 animate.setAttribute("from", "1");
     45 animate.setAttribute("to", "2");
     46 animate.setAttribute("begin", "0s");
     47 animate.setAttribute("dur", "4s");
     48 pattern.appendChild(animate);
     49 defs.appendChild(pattern);
     50 
     51 rootSVGElement.appendChild(rect);
     52 
     53 // Setup animation test
     54 function sample1() {
     55    // Check initial/end conditions
     56    assert_equals(pattern.patternTransform.animVal.numberOfItems, 0);
     57    assert_equals(pattern.patternTransform.baseVal.numberOfItems, 0);
     58 }
     59 
     60 function sample2() {
     61    assert_equals(pattern.patternTransform.animVal.numberOfItems, 1);
     62    assert_equals(pattern.patternTransform.animVal.getItem(0).type, SVGTransform.SVG_TRANSFORM_SCALE);
     63    assert_approx_equals(pattern.patternTransform.animVal.getItem(0).matrix.a, 1, epsilon);
     64 
     65    assert_equals(pattern.patternTransform.baseVal.numberOfItems, 0);
     66 }
     67 
     68 function sample3() {
     69    // Check half-time conditions
     70    assert_equals(pattern.patternTransform.animVal.numberOfItems, 1);
     71    assert_equals(pattern.patternTransform.animVal.getItem(0).type, SVGTransform.SVG_TRANSFORM_SCALE);
     72    assert_approx_equals(pattern.patternTransform.animVal.getItem(0).matrix.a, 1.5, epsilon);
     73 
     74    assert_equals(pattern.patternTransform.baseVal.numberOfItems, 0);
     75 }
     76 
     77 function sample4() {
     78    // Check half-time conditions
     79    assert_equals(pattern.patternTransform.animVal.numberOfItems, 1);
     80    assert_equals(pattern.patternTransform.animVal.getItem(0).type, SVGTransform.SVG_TRANSFORM_SCALE);
     81    assert_approx_equals(pattern.patternTransform.animVal.getItem(0).matrix.a, 2, epsilon);
     82 
     83    assert_equals(pattern.patternTransform.baseVal.numberOfItems, 0);
     84 }
     85 
     86 smil_async_test((t) => {
     87    const expectedValues = [
     88        // [animationId, time, sampleCallback]
     89        ["animation", 0.0,   sample1],
     90        ["animation", 0.001, sample2],
     91        ["animation", 2.0,   sample3],
     92        ["animation", 3.999, sample4],
     93        ["animation", 4.001, sample1]
     94    ];
     95 
     96    runAnimationTest(t, expectedValues);
     97 });
     98 
     99 </script>