| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body onload="run()"> |
| <svg id="svg" xmlns="http://www.w3.org/2000/svg" width="200" height="200"> |
| <path id="p1" d="M-100 -100L100 -100 L100 100 L-100 100 z"/> |
| <path id="p2" d="M-1 0 L 200 0"/> |
| <path id="p3" d="M-1 0 L 200 0" stroke="black"/> |
| <path id="p4" d="M0 0 L 200 0" stroke="black" stroke-width="20" stroke-dashoffset="20" stroke-dasharray="20 20"/> |
| <path id="p5" d="M20 0 L 200 0" stroke="black" stroke-width="20" stroke-linecap="round"/> |
| <path id="p6" d="M20 0 L 200 0" stroke="black" stroke-width="20" stroke-linecap="square"/> |
| <path id="p7" d="M20 0 L 200 0" stroke="black" stroke-width="20" stroke-linecap="butt"/> |
| <path id="p8" d="M0 0 L20 60 L40 0" stroke="black" stroke-width="20" stroke-linejoin="miter" stroke-miterlimit="30"/> |
| <path id="p9" d="M0 0 L20 60 L40 0" stroke="black" stroke-width="20" stroke-linejoin="round" stroke-miterlimit="30"/> |
| <path id="p10" d="M0 0 L20 60 L40 0" stroke="black" stroke-width="20" stroke-linejoin="bevel" stroke-miterlimit="30"/> |
| <path id="p11" d="M-1 0 L 200 0" stroke="black" stroke-width="20" transform="translate(-200, -200)"/> |
| <path id="p12" d="M-1 0 L 200 0" stroke="black" stroke-width="20" display="none"/> |
| <path id="p13" d="M-1 0 L 200 0" stroke="black" stroke-width="20" visibility="hidden"/> |
| <path id="p14" d="M-1 0 L 200 0" stroke="black" stroke-width="20" opacity="0"/> |
| <g transform="scale(20)"> |
| <path id="p15" d="M0 0 L 200 0" stroke="black" stroke-width="20" vector-effect="non-scaling-stroke"/> |
| </g> |
| </svg> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script type="text/javascript"> |
| <![CDATA[ |
| window.enablePixelTesting = false; |
| window.jsTestIsAsync = true; |
| var svg = document.getElementById("svg"); |
| var p1 = document.getElementById("p1"), |
| p2 = document.getElementById("p2"), |
| p3 = document.getElementById("p3"), |
| p4 = document.getElementById("p4"), |
| p5 = document.getElementById("p5"), |
| p6 = document.getElementById("p6"), |
| p7 = document.getElementById("p7"), |
| p8 = document.getElementById("p8"), |
| p9 = document.getElementById("p9"), |
| p10 = document.getElementById("p10"), |
| p11 = document.getElementById("p11"), |
| p12 = document.getElementById("p12"), |
| p13 = document.getElementById("p13"), |
| p14 = document.getElementById("p14"), |
| p15 = document.getElementById("p15"); |
| var svgPoint = svg.createSVGPoint(); |
| |
| function run() { |
| description("Test isPointInStroke() on path."); |
| |
| debug(""); |
| debug("Test that fill area does not contribute to stroke area"); |
| shouldBe("p1.isPointInStroke()", "false"); |
| shouldBe("p1.isPointInStroke({})", "false"); |
| |
| debug(""); |
| debug("Test disabled stroke"); |
| shouldBe("p2.isPointInStroke({x: 1, y: 0})", "false"); |
| |
| debug(""); |
| debug("Test general functionality"); |
| shouldBe("p3.isPointInStroke()", "true"); |
| shouldBe("p3.isPointInStroke({})", "true"); |
| shouldBe("p3.isPointInStroke(new DOMPoint())", "true"); |
| shouldBe("p3.isPointInStroke(new DOMPoint(1, 0))", "true"); |
| shouldBe("p3.isPointInStroke(new DOMPoint(-200, -200))", "false"); |
| shouldBe("p3.isPointInStroke(new DOMPointReadOnly())", "true"); |
| shouldBe("p3.isPointInStroke(new DOMPointReadOnly(-200, -200))", "false"); |
| shouldBe("p3.isPointInStroke(svgPoint)", "true"); |
| svgPoint.x = -200; |
| svgPoint.y = -200; |
| shouldBe("p3.isPointInStroke(svgPoint)", "false"); |
| shouldBe("p3.isPointInStroke(new DOMPoint(NaN))", "false"); |
| shouldBe("p3.isPointInStroke(new DOMPoint(Infinity))", "false"); |
| shouldThrow("p3.isPointInStroke('string')"); |
| |
| debug(""); |
| debug("Test CSS properties that shall not affect isPointInStroke"); |
| shouldBe("p11.isPointInStroke()", "true"); |
| shouldBe("p12.isPointInStroke()", "true"); |
| shouldBe("p13.isPointInStroke()", "true"); |
| shouldBe("p14.isPointInStroke()", "true"); |
| |
| debug(""); |
| debug("Test different stroke properties"); |
| shouldBe("p4.isPointInStroke()", "false"); |
| shouldBe("p4.isPointInStroke({x: 19})", "false"); |
| shouldBe("p4.isPointInStroke({x: 20})", "true"); |
| shouldBe("p4.isPointInStroke({x: 30})", "true"); |
| shouldBe("p4.isPointInStroke({x: 40})", "true"); |
| shouldBe("p4.isPointInStroke({x: 41})", "false"); |
| shouldBe("p4.isPointInStroke({x: 50})", "false"); |
| shouldBe("p4.isPointInStroke({x: 59})", "false"); |
| shouldBe("p4.isPointInStroke({x: 60})", "true"); |
| shouldBe("p4.isPointInStroke({x: 20, y: 10})", "true"); |
| shouldBe("p4.isPointInStroke({x: 20, y: 11})", "false"); |
| shouldBe("p4.isPointInStroke({x: 20, y: -10})", "true"); |
| shouldBe("p4.isPointInStroke({x: 20, y: -11})", "false"); |
| |
| debug(""); |
| debug("Test different linecaps"); |
| shouldBe("p5.isPointInStroke({x: 18})", "true"); |
| shouldBe("p6.isPointInStroke({x: 18})", "true"); |
| shouldBe("p7.isPointInStroke({x: 18})", "false"); |
| |
| debug(""); |
| debug("Test different linejoins"); |
| shouldBe("p8.isPointInStroke({x: 20, y: 60})", "true"); |
| shouldBe("p8.isPointInStroke({x: 20, y: 75})", "true"); |
| shouldBe("p8.isPointInStroke({x: 20, y: 90})", "true"); |
| shouldBe("p9.isPointInStroke({x: 20, y: 60})", "true"); |
| shouldBe("p9.isPointInStroke({x: 20, y: 70})", "true"); |
| shouldBe("p9.isPointInStroke({x: 20, y: 90})", "false"); |
| shouldBe("p10.isPointInStroke({x: 20, y: 60})", "true"); |
| shouldBe("p10.isPointInStroke({x: 20, y: 70})", "false"); |
| shouldBe("p10.isPointInStroke({x: 20, y: 90})", "false"); |
| |
| debug(""); |
| debug("Test non-scaling-stroke"); |
| shouldBe("p15.isPointInStroke({})", "true"); |
| shouldBe("p15.isPointInStroke({y: 1})", "true"); |
| shouldBe("p15.isPointInStroke({y: 11})", "false"); |
| finishJSTest(); |
| } |
| ]]> |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |