<html xmlns="http://www.w3.org/1999/xhtml">
<body style="margin: 0px; ">
  <div style="width: 400px; height: 100px;">
    <svg xmlns="http://www.w3.org/2000/svg"> 
        <text x="20" y="30"><tspan>Sheriff Woody</tspan></text>
        <text x="20" y="50"><tspan>שדגש</tspan></text>
    </svg>
  </div>
  <div id="log"></div>
  <script>
  function log(message) {
    document.getElementById("log").innerText = document.getElementById("log").innerText + "\n" + message;
  }
  function assert(found, expected) {
      if (found == expected)
        log("Success");
      else
        log("Failure. Was: " + found + ", expected: " + expected);
  }
  if (window.testRunner) {
    window.testRunner.dumpAsText();
    // First offset, left edge, LTR text
    assert(textInputController.firstRectForCharacterRange(0, 0), "20,566,0,18");
    // Last offset, right edge, RTL text
    assert(textInputController.firstRectForCharacterRange(13, 0), "114,566,0,18");

    // FIXME: These edges are incorrect (although carets in the middle of RTL runs are correct).
    // First offset, right edge, RTL text
    assert(textInputController.firstRectForCharacterRange(14, 0), "58,546,0,18");
    // Last offset, left edge, RTL text
    assert(textInputController.firstRectForCharacterRange(18, 0), "20,546,0,18");
  }
  </script>
</body>
</html>
