| <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 1000 1500" y="25"> ABC </text> |
| <text id="text2" x="50 500" y="50"> ABC </text> |
| <text id="text3" x="50 500 50" y="75">ABC</text> |
| <text id="text4" x="500" y="100">ABC</text> |
| <text id="reference" x="50" y="125">ABC</text> |
| </svg> |
| |
| <p id="description"></p> |
| <div id="console"></div> |
| <script type="text/javascript"> |
| <![CDATA[ |
| description("This is a test of the SVGLengthList::initialize() 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("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("Check initial list state of text2"); |
| shouldBe("text2.x.baseVal.numberOfItems", "2"); |
| shouldBe("text2.x.baseVal.getItem(0).value", "50"); |
| shouldBe("text2.x.baseVal.getItem(1).value", "500"); |
| shouldThrow("text2.x.baseVal.getItem(2)"); |
| |
| debug(""); |
| debug("Check initial 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", "500"); |
| shouldBe("text3.x.baseVal.getItem(2).value", "50"); |
| shouldThrow("text3.x.baseVal.getItem(3)"); |
| |
| debug(""); |
| debug("Check initial list state of text4"); |
| shouldBe("text4.x.baseVal.numberOfItems", "1"); |
| shouldBe("text4.x.baseVal.getItem(0).value", "500"); |
| shouldThrow("text4.x.baseVal.getItem(1)"); |
| |
| debug(""); |
| debug("Create a new SVGLength object, that will be the only x coordinate in the first text element."); |
| var newLength = svg.createSVGLength(); |
| newLength.value = 50; |
| shouldBe("newLength.value", "50"); |
| |
| // Spec: Clears all existing current items from the list and re-initializes the list to hold the single item specified by the parameter. |
| debug(""); |
| debug("Initialize SVGLengthList with 'newLength'"); |
| shouldBe("text1.x.baseVal.initialize(newLength)", "newLength"); |
| shouldBe("text1.x.baseVal.getItem(0)", "newLength"); |
| |
| debug(""); |
| debug("Take the second x item '500' of the second text element, store it in 'itemInAnotherList' change it to '50'"); |
| shouldBe("text2.x.baseVal.getItem(1).value", "500"); |
| var itemInAnotherList = text2.x.baseVal.getItem(1); |
| itemInAnotherList.value = 50; |
| shouldBe("text2.x.baseVal.getItem(1).value", "50"); |
| |
| // Spec: If the inserted item is already in a list, a copy of the item will be inserted. |
| debug(""); |
| debug("Override the third text elements x list with the item x=50 from the second text element, where it should be removed afterwards"); |
| shouldBe("text3.x.baseVal.initialize(itemInAnotherList)", "text3.x.baseVal.getItem(0)"); |
| shouldBeEqualToString("text2.x.baseVal.removeItem(1).toString()", "[object SVGLength]"); |
| itemInAnotherList = text3.x.baseVal.getItem(0); |
| shouldBe("text3.x.baseVal.getItem(0).value", "50"); |
| shouldBe("text2.x.baseVal.getItem(0).value", "50"); |
| shouldThrow("text2.x.baseVal.getItem(1)"); |
| |
| debug("") |
| debug("Assure that the 'itemInAnotherList' item is still live anymore, set value to 999 then back to 50"); |
| shouldBe("itemInAnotherList.value = 999;", "999"); |
| shouldBe("itemInAnotherList.value", "999"); |
| shouldBe("text3.x.baseVal.getItem(0).value", "999"); |
| shouldBe("itemInAnotherList.value = 50;", "50"); |
| shouldBe("itemInAnotherList.value", "50"); |
| shouldBe("text3.x.baseVal.getItem(0).value", "50"); |
| |
| debug(""); |
| debug("Move item from text3 to text4"); |
| shouldBe("text4.x.baseVal.initialize(text3.x.baseVal.getItem(0))", "text4.x.baseVal.getItem(0)"); |
| shouldBeEqualToString("text3.x.baseVal.removeItem(0).toString()", "[object SVGLength]"); |
| shouldBe("text4.x.baseVal.getItem(0).value", "50"); |
| shouldThrow("text3.x.baseVal.getItem(0)"); |
| |
| debug(""); |
| debug("Initialize text3 using setAttribute('x', '50')"); |
| text3.setAttribute("x", "50"); |
| shouldBe("text3.x.baseVal.getItem(0).value", "50"); |
| |
| debug(""); |
| debug("Final check whether the lists all look like expected"); |
| shouldBe("text1.x.baseVal.getItem(0).value", "50"); |
| shouldBe("text2.x.baseVal.getItem(0).value", "50"); |
| shouldBe("text3.x.baseVal.getItem(0).value", "50"); |
| shouldBe("text4.x.baseVal.getItem(0).value", "50"); |
| shouldBe("text1.x.baseVal.numberOfItems", "1"); |
| shouldBe("text2.x.baseVal.numberOfItems", "1"); |
| shouldBe("text3.x.baseVal.numberOfItems", "1"); |
| shouldBe("text4.x.baseVal.numberOfItems", "1"); |
| shouldThrow("text1.x.baseVal.getItem(1)"); |
| shouldThrow("text2.x.baseVal.getItem(1)"); |
| shouldThrow("text3.x.baseVal.getItem(1)"); |
| shouldThrow("text4.x.baseVal.getItem(1)"); |
| |
| debug(""); |
| debug("The test passes if you only see 'PASS' messages, and all five text elements on top look the same"); |
| debug(""); |
| |
| ]]> |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |