blob: 1ff1f7829f3cf7192d73549f50743c29d617fa8f [file] [log] [blame]
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
<title>checkIntersection()</title>
<h:link rel="help" href="https://svgwg.org/svg2-draft/struct.html#__svg__SVGSVGElement__checkIntersection"/>
<h:script src="/resources/testharness.js"/>
<h:script src="/resources/testharnessreport.js"/>
<g id="g_outer">
<g id="g_inner_top">
<rect id="r_top_left" width="50" height="50"/>
<rect x="50" width="50" height="50"/>
</g>
<g transform="translate(0, 50)">
<rect width="50" height="50"/>
<rect x="50" width="50" height="50"/>
</g>
</g>
<script>
function makeRect(x, y, width, height) {
const svg = document.documentElement;
return Object.assign(svg.createSVGRect(), {x, y, width, height});
}
test(t => {
[
{ element: 'r_top_left', rect: [10, 10, 10, 10], expected: true },
{ element: 'r_top_left', rect: [10, 10, 80, 10], expected: true },
{ element: 'r_top_left', rect: [60, 10, 10, 10], expected: false },
{ element: 'g_inner_top', rect: [10, 10, 80, 10], expected: true },
{ element: 'g_inner_top', rect: [60, 10, 10, 10], expected: false },
{ element: 'g_outer', rect: [10, 10, 80, 10], expected: false },
{ element: 'g_outer', rect: [10, 10, 80, 80], expected: true },
].forEach(testcase => {
const element = document.getElementById(testcase.element);
const rect = makeRect(...testcase.rect);
const svg = document.documentElement;
assert_equals(svg.checkIntersection(element, rect), testcase.expected,
`${document.title}, element ${testcase.element} rect ${testcase.rect}`);
});
});
</script>
</svg>