<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>window.enablePixelTesting = true;</script>
<script src="../../fast/js/resources/js-test-pre.js"></script>
</head>
<body>
<svg id="svg" xmlns="http://www.w3.org/2000/svg" width="250" height="250">
    <g transform="translate(10, 10)">
        <path id="path1" d="M 0 0 L 100 0 L 100 100" fill="green"/>
        <path transform="translate(110, 0)" id="path2" d="M 0 0 L 50 100 h 100 h 100 v 100" fill="green"/>
    </g>
</svg>

<p id="description"></p>
<div id="console"></div>
<script type="text/javascript">
<![CDATA[
    description("This is a test of the SVGPathSegList::appendItem() API.");

    var svg = document.getElementById("svg");
    var path1 = document.getElementById("path1");
    var path2 = document.getElementById("path2");

    debug("");
    debug("Check initial 'pathSegList' value of path1");
    shouldBe("path1.pathSegList.numberOfItems", "3");
    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
    shouldBe("path1.pathSegList.getItem(0).x", "0");
    shouldBe("path1.pathSegList.getItem(0).y", "0");
    shouldBeEqualToString("path1.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
    shouldBe("path1.pathSegList.getItem(1).x", "100");
    shouldBe("path1.pathSegList.getItem(1).y", "0");
    shouldBeEqualToString("path1.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
    shouldBe("path1.pathSegList.getItem(2).x", "100");
    shouldBe("path1.pathSegList.getItem(2).y", "100");
 
    debug("");
    debug("Check initial 'pathSegList' value of path2");
    shouldBe("path2.pathSegList.numberOfItems", "5");
    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
    shouldBe("path2.pathSegList.getItem(0).x", "0");
    shouldBe("path2.pathSegList.getItem(0).y", "0");
    shouldBeEqualToString("path2.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
    shouldBe("path2.pathSegList.getItem(1).x", "50");
    shouldBe("path2.pathSegList.getItem(1).y", "100");
    shouldBeEqualToString("path2.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoHorizontalRel]");
    shouldBe("path2.pathSegList.getItem(2).x", "100");
    shouldBeEqualToString("path2.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoHorizontalRel]");
    shouldBe("path2.pathSegList.getItem(3).x", "100");
    shouldBeEqualToString("path2.pathSegList.getItem(4).toString()", "[object SVGPathSegLinetoVerticalRel]");
    shouldBe("path2.pathSegList.getItem(4).y", "100");

    debug("");
    debug("Negate x value of fourth segment in path2");
    shouldBe("path2.pathSegList.getItem(3).x = -path2.pathSegList.getItem(3).x", "-100");

    debug("")
    debug("Swap segment four and five of path2 - now should look like a rectangle");
    shouldBeEqualToString("path2.pathSegList.appendItem(path2.pathSegList.getItem(3)).toString()", "[object SVGPathSegLinetoHorizontalRel]");

    debug("");
    debug("Append second item from path2 to path1 list");
    shouldBeEqualToString("path1.pathSegList.appendItem(path2.pathSegList.getItem(1)).toString()", "[object SVGPathSegLinetoAbs]");

    debug("");
    debug("Change last item of path1 list, that came from path2 list, assure it's updating path1");
    shouldBe("path1.pathSegList.getItem(3).x -= 50", "0");

    debug("");
    debug("Check final 'pathSegList' value of path1");
    shouldBe("path1.pathSegList.numberOfItems", "4");
    shouldBeEqualToString("path1.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
    shouldBe("path1.pathSegList.getItem(0).x", "0");
    shouldBe("path1.pathSegList.getItem(0).y", "0");
    shouldBeEqualToString("path1.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoAbs]");
    shouldBe("path1.pathSegList.getItem(1).x", "100");
    shouldBe("path1.pathSegList.getItem(1).y", "0");
    shouldBeEqualToString("path1.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoAbs]");
    shouldBe("path1.pathSegList.getItem(2).x", "100");
    shouldBe("path1.pathSegList.getItem(2).y", "100");
    shouldBeEqualToString("path1.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoAbs]");
    shouldBe("path1.pathSegList.getItem(3).x", "0");
    shouldBe("path1.pathSegList.getItem(3).y", "100");

    debug("");
    debug("Check final 'pathSegList' value of path2");
    shouldBe("path2.pathSegList.numberOfItems", "4");
    shouldBeEqualToString("path2.pathSegList.getItem(0).toString()", "[object SVGPathSegMovetoAbs]");
    shouldBe("path2.pathSegList.getItem(0).x", "0");
    shouldBe("path2.pathSegList.getItem(0).y", "0");
    shouldBeEqualToString("path2.pathSegList.getItem(1).toString()", "[object SVGPathSegLinetoHorizontalRel]");
    shouldBe("path2.pathSegList.getItem(1).x", "100");
    shouldBeEqualToString("path2.pathSegList.getItem(2).toString()", "[object SVGPathSegLinetoVerticalRel]");
    shouldBe("path2.pathSegList.getItem(2).y", "100");
    shouldBeEqualToString("path2.pathSegList.getItem(3).toString()", "[object SVGPathSegLinetoHorizontalRel]");
    shouldBe("path2.pathSegList.getItem(3).x", "-100");

]]>
</script>
<script src="../../fast/js/resources/js-test-post.js"></script>
</body>
</html>
