blob: 87220c46da91c05c69f04496aefc47016be1389d [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script>
description("This test checks the SVGMatrix API");
var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
var matrix = svgElement.createSVGMatrix();
debug("");
debug("Check initial matrix values");
shouldBe("matrix.a", "1");
shouldBe("matrix.b", "0");
shouldBe("matrix.c", "0");
shouldBe("matrix.d", "1");
shouldBe("matrix.e", "0");
shouldBe("matrix.f", "0");
debug("");
debug("Check assigning matrices");
shouldBe("matrix.a = 2", "2");
shouldBe("matrix.f = 200", "200");
debug("");
debug("Check assigning invalid matrices");
shouldBe("matrix.a = matrix", "matrix");
shouldBe("matrix.a", "NaN");
shouldBe("matrix.a = 0", "0");
shouldBe("matrix.a = svgElement", "svgElement");
shouldBe("matrix.a", "NaN");
shouldBe("matrix.a = 0", "0");
shouldBe("matrix.a = 'aString'", "'aString'");
shouldBe("matrix.a", "NaN");
// Reset to previous value.
shouldBe("matrix.a = 2", "2");
shouldBe("matrix.b = matrix", "matrix");
shouldBe("matrix.b", "NaN");
shouldBe("matrix.b = 0", "0");
shouldBe("matrix.b = svgElement", "svgElement");
shouldBe("matrix.b", "NaN");
shouldBe("matrix.b = 0", "0");
shouldBe("matrix.b = 'aString'", "'aString'");
shouldBe("matrix.b", "NaN");
// Reset to previous value.
shouldBe("matrix.b = 0", "0");
shouldBe("matrix.c = matrix", "matrix");
shouldBe("matrix.c", "NaN");
shouldBe("matrix.c = 0", "0");
shouldBe("matrix.c = svgElement", "svgElement");
shouldBe("matrix.c", "NaN");
shouldBe("matrix.c = 0", "0");
shouldBe("matrix.c = 'aString'", "'aString'");
shouldBe("matrix.c", "NaN");
// Reset to previous value.
shouldBe("matrix.c = 0", "0");
shouldBe("matrix.d = matrix", "matrix");
shouldBe("matrix.d", "NaN");
shouldBe("matrix.d = 0", "0");
shouldBe("matrix.d = svgElement", "svgElement");
shouldBe("matrix.d", "NaN");
shouldBe("matrix.d = 0", "0");
shouldBe("matrix.d = 'aString'", "'aString'");
shouldBe("matrix.d", "NaN");
// Reset to previous value.
shouldBe("matrix.d = 1", "1");
shouldBe("matrix.e = matrix", "matrix");
shouldBe("matrix.e", "NaN");
shouldBe("matrix.e = 0", "0");
shouldBe("matrix.e = svgElement", "svgElement");
shouldBe("matrix.e", "NaN");
shouldBe("matrix.e = 0", "0");
shouldBe("matrix.e = 'aString'", "'aString'");
shouldBe("matrix.e", "NaN");
// Reset to previous value.
shouldBe("matrix.e = 0", "0");
shouldBe("matrix.f = matrix", "matrix");
shouldBe("matrix.f", "NaN");
shouldBe("matrix.f = 0", "0");
shouldBe("matrix.f = svgElement", "svgElement");
shouldBe("matrix.f", "NaN");
shouldBe("matrix.f = 0", "0");
shouldBe("matrix.f = 'aString'", "'aString'");
shouldBe("matrix.f", "NaN");
// Reset to previous value.
shouldBe("matrix.f = 200", "200");
debug("");
debug("Check that the matrix is still containing the correct values");
shouldBe("matrix.a", "2");
shouldBe("matrix.b", "0");
shouldBe("matrix.c", "0");
shouldBe("matrix.d", "1");
shouldBe("matrix.e", "0");
shouldBe("matrix.f", "200");
debug("");
debug("Check assigning null works as expected");
shouldBeNull("matrix.f = null");
shouldBe("matrix.a", "2");
shouldBe("matrix.b", "0");
shouldBe("matrix.c", "0");
shouldBe("matrix.d", "1");
shouldBe("matrix.e", "0");
shouldBe("matrix.f", "0");
debug("");
debug("Check calling 'multiply' with invalid arguments");
shouldThrow("matrix.multiply()");
shouldThrow("matrix.multiply(true)");
shouldThrow("matrix.multiply(2)");
shouldThrow("matrix.multiply('aString')");
shouldThrow("matrix.multiply(svgElement)");
debug("");
debug("Check calling 'translate' with invalid arguments");
shouldThrow("matrix.translate()");
shouldThrow("matrix.translate(true)");
shouldThrow("matrix.translate(2)");
shouldThrow("matrix.translate('aString')");
shouldThrow("matrix.translate(svgElement)");
// The following string and object arguments convert to NaN
// per ECMA-262, 9.3, "ToNumber".
shouldBeNonNull("matrix.translate('aString', 'aString')");
shouldBeNonNull("matrix.translate(svgElement, svgElement)");
shouldBeNonNull("matrix.translate(2, 'aString')");
shouldBeNonNull("matrix.translate(2, svgElement)");
shouldBeNonNull("matrix.translate('aString', 2)");
shouldBeNonNull("matrix.translate(svgElement, 2)");
debug("");
debug("Check calling 'scale' with invalid arguments");
shouldThrow("matrix.scale()");
shouldBeNonNull("matrix.scale('aString')");
shouldBeNonNull("matrix.scale(svgElement)");
debug("");
debug("Check calling 'scaleNonUniform' with invalid arguments");
shouldThrow("matrix.scaleNonUniform()");
shouldThrow("matrix.scaleNonUniform(true)");
shouldThrow("matrix.scaleNonUniform(2)");
shouldThrow("matrix.scaleNonUniform('aString')");
shouldThrow("matrix.scaleNonUniform(svgElement)");
shouldBeNonNull("matrix.scaleNonUniform('aString', 'aString')");
shouldBeNonNull("matrix.scaleNonUniform(svgElement, svgElement)");
shouldBeNonNull("matrix.scaleNonUniform(2, 'aString')");
shouldBeNonNull("matrix.scaleNonUniform(2, svgElement)");
shouldBeNonNull("matrix.scaleNonUniform('aString', 2)");
shouldBeNonNull("matrix.scaleNonUniform(svgElement, 2)");
debug("");
debug("Check calling 'rotate' with invalid arguments");
shouldThrow("matrix.rotate()");
shouldBeNonNull("matrix.rotate('aString')");
shouldBeNonNull("matrix.rotate(svgElement)");
debug("");
debug("Check calling 'rotateFromVector' with invalid arguments");
shouldThrow("matrix.rotateFromVector()");
shouldThrow("matrix.rotateFromVector(true)");
shouldThrow("matrix.rotateFromVector(2)");
shouldThrow("matrix.rotateFromVector('aString')");
shouldThrow("matrix.rotateFromVector(svgElement)");
shouldBeNonNull("matrix.rotateFromVector('aString', 'aString')");
shouldBeNonNull("matrix.rotateFromVector(svgElement, svgElement)");
shouldBeNonNull("matrix.rotateFromVector(2, 'aString')");
shouldBeNonNull("matrix.rotateFromVector(2, svgElement)");
shouldBeNonNull("matrix.rotateFromVector('aString', 2)");
shouldBeNonNull("matrix.rotateFromVector(svgElement, 2)");
debug("");
debug("Check calling 'skewX' with invalid arguments");
shouldThrow("matrix.skewX()");
shouldBeNonNull("matrix.skewX('aString')");
shouldBeNonNull("matrix.skewX(svgElement)");
debug("");
debug("Check calling 'skewY' with invalid arguments");
shouldThrow("matrix.skewY()");
shouldBeNonNull("matrix.skewY('aString')");
shouldBeNonNull("matrix.skewY(svgElement)");
successfullyParsed = true;
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>