<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="50 100" rotate="90 180 270">ABC</text>
</svg>

<p id="description"></p>
<div id="console"></div>
<script type="text/javascript">
<![CDATA[
    description("This is a test of the 'length' attribute and the indexed property access of the SVGLengthList interface.");

    if (window.testRunner)
        testRunner.dumpAsText();

    var svg = document.getElementById("svg");
    var text1 = document.getElementById("text1");

    var length1 = svg.createSVGLength();
    var length2 = svg.createSVGLength();
    var number1 = svg.createSVGNumber();
    var number2 = svg.createSVGNumber();
    var number3 = svg.createSVGNumber();
    length1.value = 40;
    length2.value = 80;
    number1.value = 45;
    number2.value = 90;
    number3.value = 135;
 
    debug("Test list length/numberOfItems");
    shouldBe("text1.x.baseVal.length", "2");
    shouldBe("text1.x.baseVal.numberOfItems", "2");
    shouldBe("text1.rotate.baseVal.length", "3");
    shouldBe("text1.rotate.baseVal.numberOfItems", "3");

    debug("");
    debug("Test item getter");
    shouldBe("text1.x.baseVal.getItem(0).value", "50");
    shouldBe("text1.x.baseVal[0].value", "50");
    shouldBe("text1.x.baseVal.getItem(1).value", "100");
    shouldBe("text1.x.baseVal[1].value", "100");
    shouldThrow("text1.x.baseVal.getItem(2)");
    shouldBeUndefined("text1.x.baseVal[2]");
    debug("");
    shouldBe("text1.rotate.baseVal.getItem(0).value", "90");
    shouldBe("text1.rotate.baseVal[0].value", "90");
    shouldBe("text1.rotate.baseVal.getItem(1).value", "180");
    shouldBe("text1.rotate.baseVal[1].value", "180");
    shouldBe("text1.rotate.baseVal.getItem(2).value", "270");
    shouldBe("text1.rotate.baseVal[2].value", "270");
    shouldThrow("text1.rotate.baseVal.getItem(3)");
    shouldBeUndefined("text1.rotate.baseVal[3]");

    debug("");
    debug("Test item setter");
    shouldBe("text1.x.baseVal[0] = length1", "length1");
    shouldBe("text1.x.baseVal[1] = length2", "length2");
    shouldBe("text1.x.baseVal.getItem(0).value", "40");
    shouldBe("text1.x.baseVal[0].value", "40");
    shouldBe("text1.x.baseVal.getItem(1).value", "80");
    shouldBe("text1.x.baseVal[1].value", "80");
    shouldThrow("text1.x.baseVal[1] = 0");
    shouldThrow("text1.x.baseVal[1] = 'aString'");
    shouldThrow("text1.x.baseVal[1] = null");
    shouldThrow("text1.x.baseVal[2] = length2");
    debug("");
    shouldBe("text1.rotate.baseVal[0] = number1", "number1");
    shouldBe("text1.rotate.baseVal[1] = number2", "number2");
    shouldBe("text1.rotate.baseVal[2] = number3", "number3");
    shouldBe("text1.rotate.baseVal.getItem(0).value", "45");
    shouldBe("text1.rotate.baseVal[0].value", "45");
    shouldBe("text1.rotate.baseVal.getItem(1).value", "90");
    shouldBe("text1.rotate.baseVal[1].value", "90");
    shouldBe("text1.rotate.baseVal.getItem(2).value", "135");
    shouldBe("text1.rotate.baseVal[2].value", "135");
    shouldThrow("text1.rotate.baseVal[2] = 0");
    shouldThrow("text1.rotate.baseVal[2] = 'aString'");
    shouldThrow("text1.rotate.baseVal[2] = null");
    shouldThrow("text1.rotate.baseVal[3] = number3");
]]>
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
