<svg xmlns="http://www.w3.org/2000/svg">
    <g id='log' />
    <script>
    <![CDATA[
        if (window.testRunner)
            testRunner.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>
