From ff98b9b9af7b5dba26ecb4b89460d3c98eb2f829 Mon Sep 17 00:00:00 2001 From: kkapsner Date: Wed, 29 Jul 2020 14:17:05 +0200 Subject: [PATCH] domRectTest: added svg tests --- test/domRectSVG.svg | 10 ++++++++++ test/domRectTest.css | 2 +- test/domRectTest.js | 29 ++++++++++++++++++++++++----- test/domRectTest.php | 3 ++- 4 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 test/domRectSVG.svg diff --git a/test/domRectSVG.svg b/test/domRectSVG.svg new file mode 100644 index 0000000..17be7bf --- /dev/null +++ b/test/domRectSVG.svg @@ -0,0 +1,10 @@ + + + + Text with Unicode 𝞐 + \ No newline at end of file diff --git a/test/domRectTest.css b/test/domRectTest.css index 63b9efa..0518a89 100644 --- a/test/domRectTest.css +++ b/test/domRectTest.css @@ -1,5 +1,5 @@ -#iframe { +#iframe, #svg { position: fixed; top: -2000%; } diff --git a/test/domRectTest.js b/test/domRectTest.js index f433866..ee7ebed 100644 --- a/test/domRectTest.js +++ b/test/domRectTest.js @@ -12,12 +12,13 @@ const container = document.getElementById("tests"); const iframe = document.getElementById("iframe"); + const svg = document.getElementById("svg"); const noIframe = document.getElementById("noIframe"); const template = document.querySelector(".test"); template.parentElement.removeChild(template); function getElements(useIframe = true){ - const doc = useIframe? iframe.contentDocument: noIframe; + const doc = useIframe? (useIframe === "svg"? svg.contentDocument: iframe.contentDocument): noIframe; return Array.from(doc.querySelectorAll(".testRect")); } @@ -58,9 +59,15 @@ "" + properties.map(function(property){ return "" + property + "" + rects.map(function(rect){ - return "" + - formatNumber(rect.data[property]) + - ""; + const value = rect.data[property]; + if ((typeof value) === "number"){ + return "" + + formatNumber(rect.data[property]) + + ""; + } + else { + return "not available"; + } }).join("") + ""; }).join("") + ""; @@ -79,7 +86,8 @@ function createTest(title, callback, useIframe){ const output = template.cloneNode(true); - output.querySelector(".title").textContent = title + (useIframe? " (iframe)": ""); + output.querySelector(".title").textContent = title + + (useIframe? " (" + (useIframe === "svg"? "svg": "iframe") + ")": ""); output.querySelector(".refresh").addEventListener("click", function(){ performTest(output, callback, useIframe); }); @@ -145,6 +153,17 @@ return range.getBoundingClientRect(); }, useIframe); }); + createTest("SVGGraphicsElement.getBBox", function(element){ + return element.getBBox(); + }, "svg"); + createTest("SVGTextContentElement.getExtentOfChar", function(element){ + return element.getExtentOfChar(element.textContent.length - 1); + }, "svg"); + createTest("SVGTextContentElement.get(Start|End)OfChar", function(element){ + const start = element.getStartPositionOfChar(element.textContent.length - 1); + const end = element.getEndPositionOfChar(element.textContent.length - 1); + return new DOMRect(start.x, start.y, end.x - start.x, end.y - start.y); + }, "svg"); document.querySelectorAll(".content-hidable").forEach(function(parentNode){ parentNode.querySelector(".toggle").addEventListener("click", function(){ diff --git a/test/domRectTest.php b/test/domRectTest.php index 15898d4..4d30b24 100644 --- a/test/domRectTest.php +++ b/test/domRectTest.php @@ -11,12 +11,13 @@

DOMRect test

Expected result

Tests

+