From 934c3239f25f9063882c82fdaf3cfa88706f908b Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Thu, 20 Feb 2020 21:18:31 -0500 Subject: Add some basic document tests --- test/data/html/test-document1.html | 106 +++++++++++++++++++++++++++++++++++++ test/data/html/test-stylesheet.css | 32 +++++++++++ 2 files changed, 138 insertions(+) create mode 100644 test/data/html/test-document1.html create mode 100644 test/data/html/test-stylesheet.css (limited to 'test/data/html') diff --git a/test/data/html/test-document1.html b/test/data/html/test-document1.html new file mode 100644 index 00000000..00cc8524 --- /dev/null +++ b/test/data/html/test-document1.html @@ -0,0 +1,106 @@ + + + + + + Yomichan Tests + + + + + +

Yomichan Tests

+ +
+ 真白「心配してくださって、ありがとございます」 +
+ +
+ 真白「心配してくださって、ありがとございます」 +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ よみちゃん +
+ + + \ No newline at end of file diff --git a/test/data/html/test-stylesheet.css b/test/data/html/test-stylesheet.css new file mode 100644 index 00000000..ab25732e --- /dev/null +++ b/test/data/html/test-stylesheet.css @@ -0,0 +1,32 @@ +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + max-width: 680px; + padding: 0 1em; + box-sizing: border-box; + margin: 0 auto; + background-color: #f8f8f8; + counter-reset: test-id; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +.test { + background-color: #ffffff; + margin: 1em 0; + padding: 0.5em; + box-shadow: rgba(64, 64, 64, 0.3) 0px 1px 2px 0px, rgba(64, 64, 64, 0.15) 0px 1px 3px 1px; + border-radius: 4px; +} + +.test:before { + content: "Test " counter(test-id); + display: block; + counter-increment: test-id; + margin-bottom: 0.5em; + border-bottom: 1px solid #d8d8d8; + font-weight: bold; +} -- cgit v1.2.3 From bdb86e1713a196c9539306166d8dc4238adefc0d Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Sat, 22 Feb 2020 16:32:38 -0500 Subject: Test seeking functions --- test/data/html/test-document1.html | 158 +++++++++++++++++++++++++++++++++++++ test/test-document.js | 50 +++++++++++- 2 files changed, 205 insertions(+), 3 deletions(-) (limited to 'test/data/html') 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 @@
+
+ + あいうえお + かきくけこ + さしすせそ + たちつてと + なにぬねの + はひふへほ + まみむめも + や ゆ よ + らりるれろ + わゐ ゑを + trailing content +
+ +
+ + あいうえお + かきくけこ + さしすせそ + たちつてと + なにぬねの + はひふへほ + まみむめも + や ゆ よ + らりるれろ + わゐ ゑを + trailing content +
+ +
+ + あいうえお + かきくけこ + さしすせそ + たちつてと + なにぬねの + はひふへほ + まみむめも + や ゆ よ + らりるれろ + わゐ ゑを + trailing content +
+ +
+ + あいうえお + かきくけこ + さしすせそ + たちつてと + なにぬねの + はひふへほ + まみむめも + や ゆ よ + らりるれろ + わゐ ゑを + trailing content +
+ \ 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(); -- cgit v1.2.3