<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">
    <polygon id="p1" points="0,0 150,0 150,100 0,100" fill="none" stroke="black" stroke-width="20" stroke-dashoffset="20" stroke-dasharray="20 20"/>
</svg>
<p id="description"></p>
<div id="console"></div>
<script type="text/javascript">
<![CDATA[
window.enablePixelTesting = false;
window.jsTestIsAsync = true;
var p1 = document.getElementById("p1");

function run() {
    description("Test SVGGeometryElement APIs for polygon.");

    debug("");
    debug("Test isPointInFill()");
    shouldBe("p1.isPointInFill({})", "true");
    shouldBe("p1.isPointInFill({x: 100, y: 0})", "true");
    shouldBe("p1.isPointInFill({x: 152, y: 0})", "false");
    shouldBe("p1.isPointInFill({x: 150, y: 50})", "true");
    shouldBe("p1.isPointInFill({x: 150, y: 100})", "true");
    shouldBe("p1.isPointInFill({x: 150, y: 101})", "false");
    shouldBe("p1.isPointInFill({x: 100, y: 100})", "true");
    shouldBe("p1.isPointInFill({x: 75, y: 50})", "true");

    debug("");
    debug("Test isPointInStroke()");
    shouldBe("p1.isPointInStroke({x: 0, y: 0})", "false");
    shouldBe("p1.isPointInStroke({x: 20, y: 0})", "true");
    shouldBe("p1.isPointInStroke({x: 150, y: 0})", "true");
    shouldBe("p1.isPointInStroke({x: 150, y: 35})", "true");
    shouldBe("p1.isPointInStroke({x: 75, y: 50})", "false");

    debug("");
    debug("Test getTotalLength()");
    shouldBeCloseTo("p1.getTotalLength()", 500, 1);

    debug("");
    debug("Test getPointAtLength()");
    shouldBeCloseTo("p1.getPointAtLength(0).x", 0, 0.1);
    shouldBeCloseTo("p1.getPointAtLength(0).y", 0, 0.1);
    shouldBeCloseTo("p1.getPointAtLength(150).x", 150, 0.1);
    shouldBeCloseTo("p1.getPointAtLength(150).y", 0, 0.1);
    shouldBeCloseTo("p1.getPointAtLength(200).x", 150, 0.1);
    shouldBeCloseTo("p1.getPointAtLength(200).y", 50, 0.1);
    shouldBeCloseTo("p1.getPointAtLength(300).x", 100, 0.1);
    shouldBeCloseTo("p1.getPointAtLength(300).y", 100, 0.1);
    shouldBeCloseTo("p1.getPointAtLength(450).x", 0, 0.1);
    shouldBeCloseTo("p1.getPointAtLength(450).y", 50, 0.1);

    finishJSTest();
}
]]>
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
