| <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"> |
| <polyline id="poly1" stroke="green" points="0 0 100 0 100 100 0 100"/> |
| </svg> |
| |
| <p id="description"></p> |
| <div id="console"></div> |
| <script type="text/javascript"> |
| <![CDATA[ |
| description("This is a test of the simple SVGPointList API parts."); |
| |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| // Extend String prototype, to offer a function, that formats the points attribute in the same way across browsers |
| String.prototype.formatPointsAttribute = function() { |
| return this.replace(/,/g, " "); // Remove Firefox commas |
| } |
| |
| function dumpPoint(point) { |
| return "x=" + point.x.toFixed(0) + " y=" + point.y.toFixed(0); |
| } |
| |
| var svg = document.getElementById("svg"); |
| var poly1 = document.getElementById("poly1"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=0 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(2))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(3))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "0 0 100 0 100 100 0 100"); |
| |
| var point; |
| debug(""); |
| debug("Creating point x=200 y=100"); |
| shouldBeEqualToString("(point = svg.createSVGPoint()).toString()", "[object SVGPoint]"); |
| shouldBe("point.x = 200", "200"); |
| shouldBe("point.y = 100", "100"); |
| |
| debug(""); |
| debug("Test uncommon arguments for initialize()"); |
| shouldBe("poly1.points.initialize(point)", "point"); |
| shouldBe("poly1.points.numberOfItems", "1"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=200 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "200 100"); |
| shouldThrow("poly1.points.initialize(poly1)"); |
| shouldThrow("poly1.points.initialize(0)"); |
| shouldThrow("poly1.points.initialize('aString')"); |
| |
| debug(""); |
| debug("Reset points attribute to 0 0 100 0 100 100 0 100"); |
| shouldBeUndefined("poly1.setAttribute('points', '0 0 100 0 100 100 0 100')"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=0 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(2))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(3))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "0 0 100 0 100 100 0 100"); |
| |
| debug(""); |
| debug("Test uncommon arguments for getItem()"); |
| shouldThrow("poly1.points.getItem(30)"); |
| shouldBe("poly1.points.getItem('aString')", "poly1.points.getItem(0)"); |
| shouldBe("poly1.points.getItem(poly1)", "poly1.points.getItem(0)"); |
| shouldBe("poly1.points.getItem(null)", "poly1.points.getItem(0)"); |
| |
| debug(""); |
| debug("Test uncommon arguments for insertItemBefore()"); |
| shouldThrow("poly1.points.insertItemBefore(30)"); |
| shouldThrow("poly1.points.insertItemBefore('aString')"); |
| shouldThrow("poly1.points.insertItemBefore(poly1)"); |
| shouldThrow("poly1.points.insertItemBefore(null)"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.insertItemBefore(poly1.points.getItem(1), 'aString'))", "x=100 y=0"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=0 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(2))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(3))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "100 0 0 0 100 100 0 100"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.insertItemBefore(poly1.points.getItem(1), poly1))", "x=0 y=0"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=0 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(2))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(3))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "0 0 100 0 100 100 0 100"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.insertItemBefore(poly1.points.getItem(1), null))", "x=100 y=0"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=0 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(2))", "x=100 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "100 0 0 0 100 100 0 100"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.insertItemBefore(poly1.points.getItem(1), 0))", "x=0 y=0"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=0 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(2))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(3))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "0 0 100 0 100 100 0 100"); |
| |
| shouldThrow("poly1.points.insertItemBefore(30, 0)"); |
| shouldThrow("poly1.points.insertItemBefore('aString', 0)"); |
| shouldThrow("poly1.points.insertItemBefore(poly1, 0)"); |
| shouldThrow("poly1.points.insertItemBefore(null, 0)"); |
| |
| debug(""); |
| debug("Test uncommon arguments for replaceItem()"); |
| shouldThrow("poly1.points.replaceItem(30)"); |
| shouldThrow("poly1.points.replaceItem('aString')"); |
| shouldThrow("poly1.points.replaceItem(poly1)"); |
| shouldThrow("poly1.points.replaceItem(null, 0)"); |
| shouldThrow("poly1.points.replaceItem('aString', 0)"); |
| shouldThrow("poly1.points.replaceItem(poly1, 0)"); |
| shouldThrow("poly1.points.replaceItem(1, 0)"); |
| |
| debug(""); |
| debug("Test uncommon arguments for replaceItem() and xml-dom synchronization"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=0 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(2))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(3))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "0 0 100 0 100 100 0 100"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.replaceItem(poly1.points.getItem(0), 0))", "x=0 y=0"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=0 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(2))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(3))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "0 0 100 0 100 100 0 100"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.replaceItem(poly1.points.getItem(0), 'aString'))", "x=0 y=0"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=0 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(2))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(3))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "0 0 100 0 100 100 0 100"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.replaceItem(poly1.points.getItem(0), poly1))", "x=0 y=0"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=0 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(2))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(3))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "0 0 100 0 100 100 0 100"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.replaceItem(poly1.points.getItem(0), null))", "x=0 y=0"); |
| shouldBe("poly1.points.numberOfItems", "4"); |
| shouldBeEqualToString("poly1.getAttribute('points')", "0 0 100 0 100 100 0 100"); |
| |
| debug(""); |
| debug("Reset points attribute to 0 0 100 0 100 100 0 100"); |
| shouldBeUndefined("poly1.setAttribute('points', '0 0 100 0 100 100 0 100')"); |
| |
| debug(""); |
| debug("Test uncommon arguments for removeItem()"); |
| shouldThrow("poly1.points.removeItem(30)"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.removeItem('aString'))", "x=0 y=0"); |
| shouldBe("poly1.points.numberOfItems", "3"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=100 y=0"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=100 y=0"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "100 0 100 100 0 100"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.removeItem(poly1))", "x=100 y=0"); |
| shouldBe("poly1.points.numberOfItems", "2"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=100 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "100 100 0 100"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.removeItem(null))", "x=100 y=100"); |
| shouldBe("poly1.points.numberOfItems", "1"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=0 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "0 100"); |
| |
| debug(""); |
| debug("Test uncommon arguments for appendItem()"); |
| shouldThrow("poly1.points.appendItem(30)"); |
| shouldThrow("poly1.points.appendItem('aString')"); |
| shouldThrow("poly1.points.appendItem(poly1)"); |
| shouldThrow("poly1.points.appendItem(null)"); |
| |
| shouldBeEqualToString("dumpPoint(poly1.points.appendItem(point))", "x=200 y=100"); |
| shouldBe("poly1.points.numberOfItems", "2"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(0))", "x=0 y=100"); |
| shouldBeEqualToString("dumpPoint(poly1.points.getItem(1))", "x=200 y=100"); |
| shouldBeEqualToString("poly1.getAttribute('points').formatPointsAttribute()", "0 100 200 100"); |
| |
| ]]> |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |