summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/svg/interact/scripted/rect-hittest-001.html
diff options
context:
space:
mode:
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.html37
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 &lt;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>