diff options
Diffstat (limited to 'testing/web-platform/tests/svg/interact/scripted/rect-hittest-001.html')
-rw-r--r-- | testing/web-platform/tests/svg/interact/scripted/rect-hittest-001.html | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/testing/web-platform/tests/svg/interact/scripted/rect-hittest-001.html b/testing/web-platform/tests/svg/interact/scripted/rect-hittest-001.html new file mode 100644 index 0000000000..4256628bc6 --- /dev/null +++ b/testing/web-platform/tests/svg/interact/scripted/rect-hittest-001.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<title>elementFromPoint(...) on <rect>s</title> +<link rel="help" href="https://svgwg.org/svg2-draft/interact.html#hit-testing"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<svg id="svg" width="420" height="300"> + <rect id="border" x="0.5" y="0.5" width="419" height="299" stroke="#000" stroke-width="1" fill="none"/> + + <rect id="rect1" x="40" y="30" width="20" height="20"/> +</svg> +<script> +// Points are relative to the client rect of the <svg> root. +const tests = [ + // Points on the edge. + { x: 50, y: 30, expectedElemId: "rect1" }, + { x: 60, y: 40, expectedElemId: "rect1" }, + { x: 50, y: 50, expectedElemId: "rect1" }, + { x: 40, y: 40, expectedElemId: "rect1" }, +]; + +setup(() => { + const svg = document.getElementById("svg"); + const svgBounds = svg.getBoundingClientRect(); + window.svgOrigin = { + x: svgBounds.left << 0, + y: svgBounds.top << 0, + }; +}); + +tests.forEach(testcase => { + test(t => { + const expectedElem = document.getElementById(testcase.expectedElemId); + const hitElem = document.elementFromPoint(svgOrigin.x + testcase.x, svgOrigin.y + testcase.y); + assert_equals(hitElem, expectedElem); + }, `${document.title}, element at (${testcase.x}, ${testcase.y})`); +}); +</script> |