<svg id="svg-root" width="100%" height="100%" 
  viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg" 
  xmlns:xlink="http://www.w3.org/1999/xlink">
  <!--======================================================================-->
  <!--=  Copyright 2008 World Wide Web Consortium, (Massachusetts          =-->
  <!--=  Institute of Technology, European Research Consortium for         =-->
  <!--=  Informatics and Mathematics (ERCIM), Keio University).            =-->
  <!--=  All Rights Reserved.                                              =-->
  <!--=  See http://www.w3.org/Consortium/Legal/.                          =-->
  <!--======================================================================-->
  <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
    template-version="1.4" reviewer="CM" author="ED" status="accepted"
    version="$Revision: 1.9 $" testname="$RCSfile: coords-dom-02-f.svg,v $">
    <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/coords.html#InterfaceSVGTransform">
        <p>
          Tests the liveness of SVGTransform.matrix, that the SVGTransform object is updated when the SVGTransform.matrix object is changed.
        </p>
    </d:testDescription>
    <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
      <p>
        Run the test. No interaction required.
      </p>
    </d:operatorScript>
    <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
      <p>
        The test has passed if:
      </p>
      <ul>
        <li>There is no red visible</li>
        <li>There is a green ellipse visible</li>
      </ul>
    </d:passCriteria>
  </d:SVGTestCase>
  <title id="test-title">$RCSfile: coords-dom-02-f.svg,v $</title>
  <defs>
    <font-face
      font-family="SVGFreeSansASCII"
      unicode-range="U+0-7F">
      <font-face-src>
        <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
      </font-face-src>
    </font-face>
  </defs>
  <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
    
    
    <g transform="translate(220 160)">
      <g id="reference">
        <circle r="41" fill="red" transform="translate(20 20) scale(2 1)"/>
      </g>
    
      <g id="g" transform="translate(20 20)">
        <circle id="c" r="41" fill="blue"/>
      </g>
    </g>   
    
    <script type="text/ecmascript"><![CDATA[
      var passed = false;
      
      try
      {
        var g = document.getElementById("g");
        var c = document.getElementById("c");
        var tfm = g.transform.baseVal.getItem(0);
        var mtx = tfm.matrix;
        mtx.a = 2;
        if(tfm.type == SVGTransform.SVG_TRANSFORM_MATRIX)
        {
          passed = true;
        }
      }
      catch(e) {}
      
      if(passed)
      {
        c.setAttribute("fill", "lime");
      }
      else
      {
        c.setAttribute("fill", "red");
      }
    ]]></script>
        
  </g>
  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
  <text id="revision" x="10" y="340" stroke="none" 
    fill="black">$Revision: 1.9 $</text>
  </g>
  <rect xml:id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
  <!-- comment out this watermark once the test is approved --><!--
  <g id="draft-watermark">
    <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
    <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240" 
      text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
  </g>-->
</svg>
