227 lines
15 KiB
HTML
227 lines
15 KiB
HTML
<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">
|
|
<circle id="circle1" cx="40" cy="40" r="40" fill="green" transform="scale(2, 2) translate(10 10)"/>
|
|
</svg>
|
|
|
|
<p id="description"></p>
|
|
<div id="console"></div>
|
|
<script type="text/javascript">
|
|
<![CDATA[
|
|
description("This is a test of the simple SVGTransformList API parts.");
|
|
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
function dumpMatrix(matrix) {
|
|
return "[" + matrix.a.toFixed(1)
|
|
+ " " + matrix.b.toFixed(1)
|
|
+ " " + matrix.c.toFixed(1)
|
|
+ " " + matrix.d.toFixed(1)
|
|
+ " " + matrix.e.toFixed(1)
|
|
+ " " + matrix.f.toFixed(1)
|
|
+ "]";
|
|
}
|
|
|
|
function dumpTransform(transform) {
|
|
var transformTypes = {
|
|
"0": "SVG_TRANSFORM_UNKNOWN",
|
|
"1": "SVG_TRANSFORM_MATRIX",
|
|
"2": "SVG_TRANSFORM_TRANSLATE",
|
|
"3": "SVG_TRANSFORM_SCALE",
|
|
"4": "SVG_TRANSFORM_ROTATE",
|
|
"5": "SVG_TRANSFORM_SKEWX",
|
|
"6": "SVG_TRANSFORM_SKEWY"
|
|
};
|
|
|
|
return "type=" + transformTypes[transform.type] + " matrix=" + dumpMatrix(transform.matrix);
|
|
}
|
|
|
|
var svg = document.getElementById("svg");
|
|
var circle1 = document.getElementById("circle1");
|
|
|
|
// Spec: The object referenced by animVal will always be distinct from the one referenced by baseVal, even when the attribute is not animated.
|
|
shouldBeTrue("circle1.transform.baseVal != circle1.transform.animVal");
|
|
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "2");
|
|
shouldBe("circle1.transform.animVal.numberOfItems", "2");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
|
|
debug("");
|
|
debug("Test uncommon arguments for initialize()");
|
|
shouldThrow("circle1.transform.baseVal.initialize(30)");
|
|
shouldThrow("circle1.transform.baseVal.initialize('aString')");
|
|
shouldThrow("circle1.transform.baseVal.initialize(circle1)");
|
|
shouldThrow("circle1.transform.baseVal.initialize(null)");
|
|
|
|
debug("");
|
|
debug("Test uncommon arguments for getItem()");
|
|
shouldThrow("circle1.transform.baseVal.getItem(30)");
|
|
shouldBe("circle1.transform.baseVal.getItem('aString')", "circle1.transform.baseVal.getItem(0)");
|
|
shouldBe("circle1.transform.baseVal.getItem(circle1)", "circle1.transform.baseVal.getItem(0)");
|
|
shouldBe("circle1.transform.baseVal.getItem(null)", "circle1.transform.baseVal.getItem(0)");
|
|
|
|
debug("");
|
|
debug("Test uncommon arguments for insertItemBefore()");
|
|
shouldThrow("circle1.transform.baseVal.insertItemBefore(30)");
|
|
shouldThrow("circle1.transform.baseVal.insertItemBefore('aString')");
|
|
shouldThrow("circle1.transform.baseVal.insertItemBefore(circle1)");
|
|
shouldThrow("circle1.transform.baseVal.insertItemBefore(null)");
|
|
|
|
shouldBe("circle1.transform.baseVal.insertItemBefore(circle1.transform.baseVal.getItem(1), 'aString')", "circle1.transform.baseVal.getItem(0)");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.removeItem(2))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "2");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "translate(10 10) scale(2 2)");
|
|
|
|
shouldBe("circle1.transform.baseVal.insertItemBefore(circle1.transform.baseVal.getItem(1), circle1)", "circle1.transform.baseVal.getItem(0)");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.removeItem(2))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "2");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "scale(2 2) translate(10 10)");
|
|
|
|
shouldBe("circle1.transform.baseVal.insertItemBefore(circle1.transform.baseVal.getItem(1), null)", "circle1.transform.baseVal.getItem(0)");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.removeItem(2))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "2");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "translate(10 10) scale(2 2)");
|
|
|
|
shouldBe("circle1.transform.baseVal.insertItemBefore(circle1.transform.baseVal.getItem(1), 0)", "circle1.transform.baseVal.getItem(0)");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.removeItem(2))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "2");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "scale(2 2) translate(10 10)");
|
|
|
|
shouldThrow("circle1.transform.baseVal.insertItemBefore(30, 0)");
|
|
shouldThrow("circle1.transform.baseVal.insertItemBefore('aString', 0)");
|
|
shouldThrow("circle1.transform.baseVal.insertItemBefore(circle1, 0)");
|
|
shouldThrow("circle1.transform.baseVal.insertItemBefore(null, 0)");
|
|
|
|
debug("");
|
|
debug("Test overlapping edge cases for removeItem()");
|
|
shouldBeUndefined("circle1.setAttribute('transform', 'scale(2 2) translate(10 10)')");
|
|
var matrix = circle1.transform.baseVal.getItem(1).matrix;
|
|
matrix.e *= 2;
|
|
matrix.f *= 2;
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_MATRIX matrix=[1.0 0.0 0.0 1.0 20.0 20.0]");
|
|
matrix = matrix.translate(20, 20);
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_MATRIX matrix=[1.0 0.0 0.0 1.0 20.0 20.0]");
|
|
circle1.transform.baseVal.getItem(1).setMatrix(matrix);
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_MATRIX matrix=[1.0 0.0 0.0 1.0 40.0 40.0]");
|
|
circle1.transform.baseVal.removeItem(0);
|
|
circle1.transform.baseVal.removeItem(0);
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "0");
|
|
|
|
debug("");
|
|
debug("Set transform='rotate(90) scale(2 2) translate(10 10) skewX(45)' for circle1");
|
|
shouldBeUndefined("circle1.setAttribute('transform', 'rotate(90) scale(2 2) translate(10 10) skewX(45)')");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "4");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(2))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(3))", "type=SVG_TRANSFORM_SKEWX matrix=[1.0 0.0 1.0 1.0 0.0 0.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "rotate(90) scale(2 2) translate(10 10) skewX(45)");
|
|
|
|
debug("");
|
|
debug("Test uncommon arguments for replaceItem()");
|
|
shouldThrow("circle1.transform.baseVal.replaceItem(30)");
|
|
shouldThrow("circle1.transform.baseVal.replaceItem('aString')");
|
|
shouldThrow("circle1.transform.baseVal.replaceItem(circle1)");
|
|
shouldThrow("circle1.transform.baseVal.replaceItem(null)");
|
|
shouldThrow("circle1.transform.baseVal.replaceItem(30, 0)");
|
|
shouldThrow("circle1.transform.baseVal.replaceItem('aString', 0)");
|
|
shouldThrow("circle1.transform.baseVal.replaceItem(circle1, 0)");
|
|
shouldThrow("circle1.transform.baseVal.replaceItem(null, 0)");
|
|
|
|
shouldBe("circle1.transform.baseVal.replaceItem(circle1.transform.baseVal.getItem(0), 0)", "circle1.transform.baseVal.getItem(0)");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "4");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(2))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(3))", "type=SVG_TRANSFORM_SKEWX matrix=[1.0 0.0 1.0 1.0 0.0 0.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "rotate(90) scale(2 2) translate(10 10) skewX(45)");
|
|
|
|
shouldBe("circle1.transform.baseVal.replaceItem(circle1.transform.baseVal.getItem(0), 'aString')", "circle1.transform.baseVal.getItem(0)");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "4");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(2))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(3))", "type=SVG_TRANSFORM_SKEWX matrix=[1.0 0.0 1.0 1.0 0.0 0.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "rotate(90) scale(2 2) translate(10 10) skewX(45)");
|
|
|
|
shouldBe("circle1.transform.baseVal.replaceItem(circle1.transform.baseVal.getItem(0), circle1)", "circle1.transform.baseVal.getItem(0)");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "4");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(2))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(3))", "type=SVG_TRANSFORM_SKEWX matrix=[1.0 0.0 1.0 1.0 0.0 0.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "rotate(90) scale(2 2) translate(10 10) skewX(45)");
|
|
|
|
shouldBe("circle1.transform.baseVal.replaceItem(circle1.transform.baseVal.getItem(0), null)", "circle1.transform.baseVal.getItem(0)");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "4");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "rotate(90) scale(2 2) translate(10 10) skewX(45)");
|
|
|
|
debug("");
|
|
debug("Set transform='rotate(90) scale(2 2) translate(10 10) skewX(45)' for circle1");
|
|
shouldBeUndefined("circle1.setAttribute('transform', 'rotate(90) scale(2 2) translate(10 10) skewX(45)')");
|
|
|
|
debug("");
|
|
debug("Test uncommon arguments for removeItem()");
|
|
shouldThrow("circle1.transform.baseVal.removeItem(30)");
|
|
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.removeItem(0))", "type=SVG_TRANSFORM_ROTATE matrix=[0.0 1.0 -1.0 0.0 0.0 0.0]");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "3");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(2))", "type=SVG_TRANSFORM_SKEWX matrix=[1.0 0.0 1.0 1.0 0.0 0.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "scale(2 2) translate(10 10) skewX(45)");
|
|
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.removeItem('aString'))", "type=SVG_TRANSFORM_SCALE matrix=[2.0 0.0 0.0 2.0 0.0 0.0]");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "2");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(1))", "type=SVG_TRANSFORM_SKEWX matrix=[1.0 0.0 1.0 1.0 0.0 0.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "translate(10 10) skewX(45)");
|
|
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.removeItem(circle1))", "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 10.0 10.0]");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "1");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_SKEWX matrix=[1.0 0.0 1.0 1.0 0.0 0.0]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "skewX(45)");
|
|
|
|
debug("");
|
|
debug("Test uncommon arguments for appendItem()");
|
|
shouldThrow("circle1.transform.baseVal.appendItem(30)");
|
|
shouldThrow("circle1.transform.baseVal.appendItem('aString')");
|
|
shouldThrow("circle1.transform.baseVal.appendItem(circle1)");
|
|
shouldThrow("circle1.transform.baseVal.appendItem(null)");
|
|
|
|
debug("");
|
|
debug("Testing animVal clear throws");
|
|
shouldThrow("circle1.transform.animVal.clear()");
|
|
shouldBeUndefined("circle1.transform.baseVal.clear()");
|
|
|
|
debug("");
|
|
debug("Creating new SVGTransform, with 45 deg rotation about x=50, y=100 and append it to the transform list");
|
|
var transform;
|
|
shouldBeEqualToString("dumpTransform(transform = svg.createSVGTransform())", "type=SVG_TRANSFORM_MATRIX matrix=[1.0 0.0 0.0 1.0 0.0 0.0]");
|
|
shouldBeUndefined("transform.setRotate(45, 50, 100)");
|
|
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.appendItem(transform))", "type=SVG_TRANSFORM_ROTATE matrix=[0.7 0.7 -0.7 0.7 85.4 -6.1]");
|
|
shouldBe("circle1.transform.baseVal.numberOfItems", "1");
|
|
shouldBeEqualToString("dumpTransform(circle1.transform.baseVal.getItem(0))", "type=SVG_TRANSFORM_ROTATE matrix=[0.7 0.7 -0.7 0.7 85.4 -6.1]");
|
|
shouldBeEqualToString("circle1.getAttribute('transform')", "rotate(45 50 100)");
|
|
|
|
]]>
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|