blob: eb54b95125039b47a641a97042554a5cf3b15730 [file] [log] [blame]
<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="200" height="200">
<text id="text1" x="500 50 100 900 1000" y="50">ABC</text>
<text id="text2" x="50 100 1000" y="100">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::appendItem() API.");
var svg = document.getElementById("svg");
var text1 = document.getElementById("text1");
var text2 = document.getElementById("text2");
debug("");
debug("Create a new SVGLength object, with value=150");
var newLength1 = svg.createSVGLength();
newLength1.value = 150;
shouldBe("newLength1.value", "150");
debug("");
debug("Check initial list state of text1");
shouldBe("text1.x.baseVal.numberOfItems", "5");
shouldBe("text1.x.baseVal.getItem(0).value", "500");
shouldBe("text1.x.baseVal.getItem(1).value", "50");
shouldBe("text1.x.baseVal.getItem(2).value", "100");
shouldBe("text1.x.baseVal.getItem(3).value", "900");
shouldBe("text1.x.baseVal.getItem(4).value", "1000");
shouldThrow("text1.x.baseVal.getItem(5)");
debug("");
debug("Check initial 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", "1000");
shouldThrow("text2.x.baseVal.getItem(3)");
debug("");
debug("Append fourth item x=900 to the text1 x list");
shouldBe("text1.x.baseVal.appendItem(text1.x.baseVal.getItem(3))", "text1.x.baseVal.getItem(5)");
shouldBeEqualToString("text1.x.baseVal.removeItem(3).toString()", "[object SVGLength]");
shouldBe("text1.x.baseVal.numberOfItems", "5");
shouldBe("text1.x.baseVal.getItem(0).value", "500");
shouldBe("text1.x.baseVal.getItem(1).value", "50");
shouldBe("text1.x.baseVal.getItem(2).value", "100");
shouldBe("text1.x.baseVal.getItem(3).value", "1000");
shouldBe("text1.x.baseVal.getItem(4).value", "900");
shouldThrow("text1.x.baseVal.getItem(5)");
debug("");
debug("Append first item x=500 to the text1 x list");
shouldBe("text1.x.baseVal.appendItem(text1.x.baseVal.getItem(0))", "text1.x.baseVal.getItem(5)");
shouldBeEqualToString("text1.x.baseVal.removeItem(0).toString()", "[object SVGLength]");
shouldBe("text1.x.baseVal.numberOfItems", "5");
shouldBe("text1.x.baseVal.getItem(0).value", "50");
shouldBe("text1.x.baseVal.getItem(1).value", "100");
shouldBe("text1.x.baseVal.getItem(2).value", "1000");
shouldBe("text1.x.baseVal.getItem(3).value", "900");
shouldBe("text1.x.baseVal.getItem(4).value", "500");
shouldThrow("text1.x.baseVal.getItem(5)");
debug("");
debug("Append 'newLength1' to the text1 x list");
shouldBe("text1.x.baseVal.appendItem(newLength1)", "text1.x.baseVal.getItem(5)");
shouldBe("text1.x.baseVal.numberOfItems", "6");
shouldBe("text1.x.baseVal.getItem(0).value", "50");
shouldBe("text1.x.baseVal.getItem(1).value", "100");
shouldBe("text1.x.baseVal.getItem(2).value", "1000");
shouldBe("text1.x.baseVal.getItem(3).value", "900");
shouldBe("text1.x.baseVal.getItem(4).value", "500");
shouldBe("text1.x.baseVal.getItem(5).value", "150");
shouldThrow("text1.x.baseVal.getItem(6)");
debug("");
debug("Append third and fourth item of the text1 x list to the text2 x list");
shouldBe("text2.x.baseVal.appendItem(text1.x.baseVal.getItem(2)).value", "1000");
shouldBeEqualToString("text1.x.baseVal.removeItem(2).toString()", "[object SVGLength]");
shouldBe("text2.x.baseVal.appendItem(text1.x.baseVal.getItem(2)).value", "900");
shouldBeEqualToString("text1.x.baseVal.removeItem(2).toString()", "[object SVGLength]");
shouldBe("text1.x.baseVal.numberOfItems", "4");
shouldBe("text1.x.baseVal.getItem(0).value", "50");
shouldBe("text1.x.baseVal.getItem(1).value", "100");
shouldBe("text1.x.baseVal.getItem(2).value", "500");
shouldBe("text1.x.baseVal.getItem(3).value", "150");
shouldThrow("text1.x.baseVal.getItem(4)");
shouldBe("text2.x.baseVal.numberOfItems", "5");
shouldBe("text2.x.baseVal.getItem(0).value", "50");
shouldBe("text2.x.baseVal.getItem(1).value", "100");
shouldBe("text2.x.baseVal.getItem(2).value", "1000");
shouldBe("text2.x.baseVal.getItem(3).value", "1000");
shouldBe("text2.x.baseVal.getItem(4).value", "900");
shouldThrow("text2.x.baseVal.getItem(5)");
var newLength2 = svg.createSVGLength();
newLength2.value = 150;
shouldBe("newLength2.value", "150");
debug("");
debug("Shuffle around items in text1 and text2 list using appendItem, to get x=50,100,150,... in both lists");
shouldBe("text1.x.baseVal.appendItem(text1.x.baseVal.getItem(2)).value", "500");
shouldBeEqualToString("text1.x.baseVal.removeItem(2).toString()", "[object SVGLength]");
shouldBe("text2.x.baseVal.appendItem(newLength2).value", "150");
shouldBe("text2.x.baseVal.appendItem(text2.x.baseVal.getItem(2)).value", "1000");
shouldBeEqualToString("text2.x.baseVal.removeItem(2).toString()", "[object SVGLength]");
shouldBe("text2.x.baseVal.appendItem(text2.x.baseVal.getItem(3)).value", "900");
shouldBeEqualToString("text2.x.baseVal.removeItem(3).toString()", "[object SVGLength]");
shouldBe("text2.x.baseVal.appendItem(text2.x.baseVal.getItem(2)).value", "1000");
shouldBeEqualToString("text2.x.baseVal.removeItem(2).toString()", "[object SVGLength]");
shouldBe("text1.x.baseVal.numberOfItems", "4");
shouldBe("text1.x.baseVal.getItem(0).value", "50");
shouldBe("text1.x.baseVal.getItem(1).value", "100");
shouldBe("text1.x.baseVal.getItem(2).value", "150");
shouldBe("text1.x.baseVal.getItem(3).value", "500");
shouldThrow("text1.x.baseVal.getItem(4)");
shouldBe("text2.x.baseVal.numberOfItems", "6");
shouldBe("text2.x.baseVal.getItem(0).value", "50");
shouldBe("text2.x.baseVal.getItem(1).value", "100");
shouldBe("text2.x.baseVal.getItem(2).value", "150");
shouldBe("text2.x.baseVal.getItem(3).value", "1000");
shouldBe("text2.x.baseVal.getItem(4).value", "900");
shouldBe("text2.x.baseVal.getItem(5).value", "1000");
shouldThrow("text2.x.baseVal.getItem(6)");
debug("");
debug("The test passes if you only see 'PASS' messages, and all three text elements on top look the same");
debug("");
]]>
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>