<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>window.enablePixelTesting = true;</script>
<script src="../../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]");
    shouldBeEqualToString("path2.pathSegList.removeItem(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]");
    shouldBeEqualToString("path2.pathSegList.removeItem(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="../../resources/js-test-post.js"></script>
</body>
</html>
