diff options
| -rw-r--r-- | test/data/html/test-document1.html | 158 | ||||
| -rw-r--r-- | test/test-document.js | 50 | 
2 files changed, 205 insertions, 3 deletions
| diff --git a/test/data/html/test-document1.html b/test/data/html/test-document1.html index 00cc8524..0754a314 100644 --- a/test/data/html/test-document1.html +++ b/test/data/html/test-document1.html @@ -13,6 +13,7 @@      <div          class="test" +        data-test-type="scan"          data-element-from-point-selector="span"          data-caret-range-from-point-selector="span"          data-start-node-selector="span" @@ -28,6 +29,7 @@      <div          class="test" +        data-test-type="scan"          data-element-from-point-selector="span"          data-caret-range-from-point-selector="span"          data-start-node-selector="span" @@ -43,6 +45,7 @@      <div          class="test" +        data-test-type="scan"          data-element-from-point-selector="input"          data-caret-range-from-point-selector="input"          data-start-node-selector="input" @@ -59,6 +62,7 @@      <div          class="test" +        data-test-type="scan"          data-element-from-point-selector="textarea"          data-caret-range-from-point-selector="textarea"          data-start-node-selector="textarea" @@ -75,6 +79,7 @@      <div          class="test" +        data-test-type="scan"          data-element-from-point-selector="button"          data-caret-range-from-point-selector="button"          data-start-node-selector="button" @@ -90,6 +95,7 @@      <div          class="test" +        data-test-type="scan"          data-element-from-point-selector="img"          data-caret-range-from-point-selector="img"          data-start-node-selector="img" @@ -102,5 +108,157 @@          <img src="data:image/gif;base64,R0lGODdhBwAHAIABAAAAAP///ywAAAAABwAHAAACDIRvEaC32FpCbEkKCgA7" alt="よみちゃん" title="よみちゃん" style="width: 70px; height: 70px; image-rendering: crisp-edges; image-rendering: pixelated; display: block;" />      </div> +    <div +        class="test" +        data-test-type="text-source-range-seek" +        data-seek-node-selector="span:nth-of-type(1)" +        data-seek-node-is-text="true" +        data-seek-offset="0" +        data-seek-length="149" +        data-seek-direction="forward" +        data-expected-result-node-selector="span:nth-of-type(1)" +        data-expected-result-node-is-text="true" +        data-expected-result-offset="149" +        data-expected-result-content=" +        あいうえお +        かきくけこ +        さしすせそ +        たちつてと +        なにぬねの +        はひふへほ +        まみむめも +        や ゆ よ +        らりるれろ +        わゐ ゑを +        " +    > +        <span> +        あいうえお +        かきくけこ +        さしすせそ +        たちつてと +        なにぬねの +        はひふへほ +        まみむめも +        や ゆ よ +        らりるれろ +        わゐ ゑを +        </span><span>trailing content</span> +    </div> + +    <div +        class="test" +        data-test-type="text-source-range-seek" +        data-seek-node-selector="span:nth-of-type(1)" +        data-seek-node-is-text="true" +        data-seek-offset="149" +        data-seek-length="149" +        data-seek-direction="backward" +        data-expected-result-node-selector="span:nth-of-type(1)" +        data-expected-result-node-is-text="true" +        data-expected-result-offset="0" +        data-expected-result-content=" +        あいうえお +        かきくけこ +        さしすせそ +        たちつてと +        なにぬねの +        はひふへほ +        まみむめも +        や ゆ よ +        らりるれろ +        わゐ ゑを +        " +    > +        <span> +        あいうえお +        かきくけこ +        さしすせそ +        たちつてと +        なにぬねの +        はひふへほ +        まみむめも +        や ゆ よ +        らりるれろ +        わゐ ゑを +        </span><span>trailing content</span> +    </div> + +    <div +        class="test" +        data-test-type="text-source-range-seek" +        data-seek-node-selector="span:nth-of-type(1)" +        data-seek-node-is-text="true" +        data-seek-offset="0" +        data-seek-length="150" +        data-seek-direction="forward" +        data-expected-result-node-selector="span:nth-of-type(2)" +        data-expected-result-node-is-text="true" +        data-expected-result-offset="1" +        data-expected-result-content=" +        あいうえお +        かきくけこ +        さしすせそ +        たちつてと +        なにぬねの +        はひふへほ +        まみむめも +        や ゆ よ +        らりるれろ +        わゐ ゑを +        t" +    > +        <span> +        あいうえお +        かきくけこ +        さしすせそ +        たちつてと +        なにぬねの +        はひふへほ +        まみむめも +        や ゆ よ +        らりるれろ +        わゐ ゑを +        </span><span>trailing content</span> +    </div> + +    <div +        class="test" +        data-test-type="text-source-range-seek" +        data-seek-node-selector="span:nth-of-type(2)" +        data-seek-node-is-text="true" +        data-seek-offset="1" +        data-seek-length="150" +        data-seek-direction="backward" +        data-expected-result-node-selector="span:nth-of-type(1)" +        data-expected-result-node-is-text="true" +        data-expected-result-offset="0" +        data-expected-result-content=" +        あいうえお +        かきくけこ +        さしすせそ +        たちつてと +        なにぬねの +        はひふへほ +        まみむめも +        や ゆ よ +        らりるれろ +        わゐ ゑを +        t" +    > +        <span> +        あいうえお +        かきくけこ +        さしすせそ +        たちつてと +        なにぬねの +        はひふへほ +        まみむめも +        や ゆ よ +        らりるれろ +        わゐ ゑを +        </span><span>trailing content</span> +    </div> +  </body>  </html>
\ No newline at end of file diff --git a/test/test-document.js b/test/test-document.js index 0c3c3d8e..edf6bbea 100644 --- a/test/test-document.js +++ b/test/test-document.js @@ -90,16 +90,17 @@ async function testDocument1() {      );      try { -        await testDocument1Inner(dom, {docRangeFromPoint, docSentenceExtract, TextSourceRange, TextSourceElement}); +        await testDocumentTextScanningFunctions(dom, {docRangeFromPoint, docSentenceExtract, TextSourceRange, TextSourceElement}); +        await testTextSourceRangeSeekFunctions(dom, {TextSourceRange});      } finally {          window.close();      }  } -async function testDocument1Inner(dom, {docRangeFromPoint, docSentenceExtract, TextSourceRange, TextSourceElement}) { +async function testDocumentTextScanningFunctions(dom, {docRangeFromPoint, docSentenceExtract, TextSourceRange, TextSourceElement}) {      const document = dom.window.document; -    for (const testElement of document.querySelectorAll('.test')) { +    for (const testElement of document.querySelectorAll('.test[data-test-type=scan]')) {          // Get test parameters          let {              elementFromPointSelector, @@ -171,6 +172,49 @@ async function testDocument1Inner(dom, {docRangeFromPoint, docSentenceExtract, T      }  } +async function testTextSourceRangeSeekFunctions(dom, {TextSourceRange}) { +    const document = dom.window.document; + +    for (const testElement of document.querySelectorAll('.test[data-test-type=text-source-range-seek]')) { +        // Get test parameters +        let { +            seekNodeSelector, +            seekNodeIsText, +            seekOffset, +            seekLength, +            seekDirection, +            expectedResultNodeSelector, +            expectedResultNodeIsText, +            expectedResultOffset, +            expectedResultContent +        } = testElement.dataset; + +        seekOffset = parseInt(seekOffset, 10); +        seekLength = parseInt(seekLength, 10); +        expectedResultOffset = parseInt(expectedResultOffset, 10); + +        let seekNode = testElement.querySelector(seekNodeSelector); +        if (seekNodeIsText === 'true') { +            seekNode = seekNode.firstChild; +        } + +        let expectedResultNode = testElement.querySelector(expectedResultNodeSelector); +        if (expectedResultNodeIsText === 'true') { +            expectedResultNode = expectedResultNode.firstChild; +        } + +        const {node, offset, content} = ( +            seekDirection === 'forward' ? +            TextSourceRange.seekForward(seekNode, seekOffset, seekLength) : +            TextSourceRange.seekBackward(seekNode, seekOffset, seekLength) +        ); + +        assert.strictEqual(node, expectedResultNode); +        assert.strictEqual(offset, expectedResultOffset); +        assert.strictEqual(content, expectedResultContent); +    } +} +  async function main() {      await testDocument1(); |