<svg xmlns="http://www.w3.org/2000/svg">
    <g id='log' />
    <script>
    <![CDATA[
        if (window.layoutTestController)
            layoutTestController.dumpAsText();
        
        var svgNS = "http://www.w3.org/2000/svg";
        var pathElement = document.createElementNS(svgNS, 'path');
        var errorTolerance = .1;
        
        var logOffset = 20;
        function result(didPass, string) {
          var newText = document.createElementNS(svgNS, "text");
          newText.setAttribute("x", 10);
          newText.setAttribute("y", logOffset);
          logOffset += 20;
          newText.textContent = string;
          var newTspan = document.createElementNS(svgNS, "tspan");
          if (didPass) {
            newTspan.textContent = "PASS: ";
            newTspan.style.fill = "green";
          } else {
            newTspan.textContent = "FAIL: ";
            newTspan.style.fill = "red";
          }
          newText.insertBefore(newTspan, newText.firstChild);
          document.getElementById('log').appendChild(newText);
        }
        
        function expectLength(path, expectedLength) {
            pathElement.setAttribute("d", path);
            
            var actualLength;
            try {
                actualLength = pathElement.getTotalLength();
                if (Math.abs(actualLength - expectedLength) < errorTolerance)
                    result(true, path + "\" = " + actualLength);
                else
                    result(false, path + "\" expected: " + expectedLength + " actual: " + actualLength);
            } catch(e) {
                result(false, path + "\" expected: " + expectedLength + " got exception: " + e);
            }
        }
        
        var errorCount = 0;
        
        // Tests go here:
        expectLength('M 0 0 L 100 0 L 100 100 L 0 100 Z', 400);
        expectLength('M 0 0 l 100 0 l 0 100 l -100 0 Z', 400);
        expectLength('M 0 0 t 0 100', 100);
        expectLength('M 0 0 Q 55 50 100 100', 141.4);  // I'm not sure if this is actually right
    ]]>
    </script>
</svg>
