<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"/>
<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="200" height="200">
    <text id="text1" x="500 1000 1500" y="50">  ABC   </text>
    <text id="text2" x="500 100 50 150" y="75"> ABC   </text>
    <text id="text3" x="50 50 100 100 150" y="100">  ABC</text>
    <text id="text4" x="100 50 150 150" y="125">   ABC</text>
    <text id="reference" x="50 100 150" y="150">ABC  </text>
</svg>

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

    var svg = document.getElementById("svg");
    var text1 = document.getElementById("text1");
    var text2 = document.getElementById("text2");
    var text3 = document.getElementById("text3");
    var text4 = document.getElementById("text4");

    debug("");
    debug("Create three SVGLength objects, with values=50,100,150");
    var newLength1 = svg.createSVGLength();
    newLength1.value = 50;
    shouldBe("newLength1.value", "50");

    var newLength2 = svg.createSVGLength();
    newLength2.value = 100;
    shouldBe("newLength2.value", "100");

    var newLength3 = svg.createSVGLength();
    newLength3.value = 150;
    shouldBe("newLength3.value", "150");

    debug("");
    debug("Check initial list state of text1");
    shouldBe("text1.x.baseVal.numberOfItems", "3");
    shouldBe("text1.x.baseVal.getItem(0).value", "500");
    shouldBe("text1.x.baseVal.getItem(1).value", "1000");
    shouldBe("text1.x.baseVal.getItem(2).value", "1500");
    shouldThrow("text1.x.baseVal.getItem(3)");

    debug("");
    debug("Replace the first three values in text1 x list with 'newLength1/2/3'");
    shouldBe("text1.x.baseVal.replaceItem(newLength1, 0)", "newLength1");
    shouldBe("text1.x.baseVal.replaceItem(newLength2, 1)", "newLength2");
    shouldBe("text1.x.baseVal.replaceItem(newLength3, 2)", "newLength3");
    shouldThrow("text1.x.baseVal.replaceItem(newLength3, -100)");
    shouldThrow("text1.x.baseVal.replaceItem(newLength3, -1)");
    shouldThrow("text1.x.baseVal.replaceItem(newLength3, 3)");
    shouldThrow("text1.x.baseVal.replaceItem(newLength3, 100)");

    debug("");
    debug("Verify that the text1 x value list is correct");
    shouldBe("text1.x.baseVal.numberOfItems", "3");
    shouldBe("text1.x.baseVal.getItem(0).value", "50");
    shouldBe("text1.x.baseVal.getItem(1).value", "100");
    shouldBe("text1.x.baseVal.getItem(2).value", "150");

    debug("");
    debug("Check initial list state of text2");
    shouldBe("text2.x.baseVal.numberOfItems", "4");
    shouldBe("text2.x.baseVal.getItem(0).value", "500");
    shouldBe("text2.x.baseVal.getItem(1).value", "100");
    shouldBe("text2.x.baseVal.getItem(2).value", "50");
    shouldBe("text2.x.baseVal.getItem(3).value", "150");
    shouldThrow("text2.x.baseVal.getItem(4)");

    debug("");
    debug("Replace the first item in text2 x list with the third item in the list");
    shouldBe("text2.x.baseVal.replaceItem(text2.x.baseVal.getItem(2), 0).value", "50");
    shouldBe("text2.x.baseVal.numberOfItems", "3");
    shouldBe("text2.x.baseVal.getItem(0).value", "50");
    shouldBe("text2.x.baseVal.getItem(1).value", "100");
    shouldBe("text2.x.baseVal.getItem(2).value", "150");

    debug("");
    debug("Check initial list state of text3");
    shouldBe("text3.x.baseVal.numberOfItems", "5");
    shouldBe("text3.x.baseVal.getItem(0).value", "50");
    shouldBe("text3.x.baseVal.getItem(1).value", "50");
    shouldBe("text3.x.baseVal.getItem(2).value", "100");
    shouldBe("text3.x.baseVal.getItem(3).value", "100");
    shouldBe("text3.x.baseVal.getItem(4).value", "150");
    shouldThrow("text3.x.baseVal.getItem(5)");

    debug("");
    debug("Check initial list state of text4");
    shouldBe("text4.x.baseVal.numberOfItems", "4");
    shouldBe("text4.x.baseVal.getItem(0).value", "100");
    shouldBe("text4.x.baseVal.getItem(1).value", "50");
    shouldBe("text4.x.baseVal.getItem(2).value", "150");
    shouldBe("text4.x.baseVal.getItem(3).value", "150");
    shouldThrow("text4.x.baseVal.getItem(4)");

    debug("");
    debug("Replace the first item in text4 x list with the second item in the text3 x list");
    shouldBe("text4.x.baseVal.replaceItem(text3.x.baseVal.getItem(1), 0).value", "50");
    shouldBe("text3.x.baseVal.numberOfItems", "4");
    shouldBe("text3.x.baseVal.getItem(0).value", "50");
    shouldBe("text3.x.baseVal.getItem(1).value", "100");
    shouldBe("text3.x.baseVal.getItem(2).value", "100");
    shouldBe("text3.x.baseVal.getItem(3).value", "150");
    shouldThrow("text3.x.baseVal.getItem(4)");
    shouldBe("text4.x.baseVal.numberOfItems", "4");
    shouldBe("text4.x.baseVal.getItem(0).value", "50");
    shouldBe("text4.x.baseVal.getItem(1).value", "50");
    shouldBe("text4.x.baseVal.getItem(2).value", "150");
    shouldBe("text4.x.baseVal.getItem(3).value", "150");
    shouldThrow("text4.x.baseVal.getItem(4)");

    debug("");
    debug("Replace the second item in text4 x list with the second item in the text4 x list");
    shouldBe("text4.x.baseVal.replaceItem(text3.x.baseVal.getItem(2), 1).value", "100");
    shouldBe("text4.x.baseVal.numberOfItems", "4");
    shouldBe("text4.x.baseVal.getItem(0).value", "50");
    shouldBe("text4.x.baseVal.getItem(1).value", "100");
    shouldBe("text4.x.baseVal.getItem(2).value", "150");
    shouldBe("text4.x.baseVal.getItem(3).value", "150");
    shouldThrow("text4.x.baseVal.getItem(4)");

    debug("");
    debug("Check final list state of text1");
    shouldBe("text1.x.baseVal.numberOfItems", "3");
    shouldBe("text1.x.baseVal.getItem(0).value", "50");
    shouldBe("text1.x.baseVal.getItem(1).value", "100");
    shouldBe("text1.x.baseVal.getItem(2).value", "150");
    shouldThrow("text1.x.baseVal.getItem(3)");

    debug("");
    debug("Check final list state of text2");
    shouldBe("text2.x.baseVal.numberOfItems", "3");
    shouldBe("text2.x.baseVal.getItem(0).value", "50");
    shouldBe("text2.x.baseVal.getItem(1).value", "100");
    shouldBe("text2.x.baseVal.getItem(2).value", "150");
    shouldThrow("text2.x.baseVal.getItem(3)");

    debug("");
    debug("Check final list state of text3");
    shouldBe("text3.x.baseVal.numberOfItems", "3");
    shouldBe("text3.x.baseVal.getItem(0).value", "50");
    shouldBe("text3.x.baseVal.getItem(1).value", "100");
    shouldBe("text3.x.baseVal.getItem(2).value", "150");
    shouldThrow("text3.x.baseVal.getItem(3)");

    debug("");
    debug("Check final list state of text4");
    shouldBe("text4.x.baseVal.numberOfItems", "4");
    shouldBe("text4.x.baseVal.getItem(0).value", "50");
    shouldBe("text4.x.baseVal.getItem(1).value", "100");
    shouldBe("text4.x.baseVal.getItem(2).value", "150");
    shouldBe("text4.x.baseVal.getItem(3).value", "150");
    shouldThrow("text4.x.baseVal.getItem(4)");

    debug("");
    debug("The test passes if you only see 'PASS' messages, and all five text elements on top look the same");
    debug("");

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