blob: e8df0d86011c47ff8b2fd9b03c96eb648d0f2d65 [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>
var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
var matrix = svgElement.createSVGMatrix();
function matrixToString(matrix)
{
return "{ a: " + matrix.a + ", b: " + matrix.b + ", c: " + matrix.c + ", d: " + matrix.d + ", e: " + matrix.e + ", f: " + matrix.f + "}";
}
function checkAttributeSetting(matrix, name) {
var value = matrix[name];
shouldBe("matrix." + name + " = matrix", "matrix");
shouldBe("matrix." + name, "NaN");
shouldBe("matrix." + name + " = 0", "0");
shouldBe("matrix." + name + " = svgElement", "svgElement");
shouldBe("matrix." + name, "NaN");
shouldBe("matrix." + name + " = 0", "0");
shouldBe("matrix." + name + " = 'aString'", "'aString'");
shouldBe("matrix." + name, "NaN");
//Check assigning null works as expected
shouldBeNull("matrix." + name + " = null");
shouldBe("matrix." + name, "0");
// Reset to previous value.
shouldBe("matrix." + name + " = " + value.toString(), value.toString());
}
function checkMethodCallingOneMatrixArgument(matrix, name) {
debug("");
debug("Check calling '" + name + "' with invalid arguments");
shouldThrow("matrix." + name + "()");
shouldThrow("matrix." + name + "(true)");
shouldThrow("matrix." + name + "(2)");
shouldThrow("matrix." + name + "('aString')");
shouldThrow("matrix." + name + "(svgElement)");
}
function checkMethodCallingOneNumericArgument(matrix, name) {
debug("");
debug("Check calling '" + name + "' with invalid arguments");
shouldThrow("matrix." + name + "()");
shouldBeNonNull("matrix." + name + "('aString')");
shouldBeNonNull("matrix." + name + "(svgElement)");
}
function checkMethodCallingTwoNumericArguments(matrix, name) {
debug("");
debug("Check calling '" + name + "' with invalid arguments");
shouldThrow("matrix." + name + "()");
shouldThrow("matrix." + name + "(true)");
shouldThrow("matrix." + name + "(2)");
shouldThrow("matrix." + name + "('aString')");
shouldThrow("matrix." + name + "(svgElement)");
shouldBeNonNull("matrix." + name + "('aString', 'aString')");
shouldBeNonNull("matrix." + name + "(svgElement, svgElement)");
shouldBeNonNull("matrix." + name + "(2, 'aString')");
shouldBeNonNull("matrix." + name + "(2, svgElement)");
shouldBeNonNull("matrix." + name + "('aString', 2)");
shouldBeNonNull("matrix." + name + "(svgElement, 2)");
}
description("This test checks the SVGMatrix API");
debug("");
debug("Check initial matrix values");
shouldBeEqualToString("matrixToString(matrix)", "{ a: 1, b: 0, c: 0, d: 1, e: 0, f: 0}");
debug("");
debug("Check assigning matrices");
shouldBe("matrix.a = 2", "2");
shouldBe("matrix.f = 200", "200");
debug("");
debug("Check assigning invalid matrices");
checkAttributeSetting(matrix, "a");
checkAttributeSetting(matrix, "b");
checkAttributeSetting(matrix, "c");
checkAttributeSetting(matrix, "d");
checkAttributeSetting(matrix, "e");
checkAttributeSetting(matrix, "f");
debug("");
debug("Check that the matrix is still containing the correct values");
shouldBeEqualToString("matrixToString(matrix)", "{ a: 2, b: 0, c: 0, d: 1, e: 0, f: 200}");
checkMethodCallingOneMatrixArgument(matrix, "multiply")
checkMethodCallingTwoNumericArguments(matrix, "translate");
checkMethodCallingOneNumericArgument(matrix, "scale");
checkMethodCallingTwoNumericArguments(matrix, "scaleNonUniform");
checkMethodCallingOneNumericArgument(matrix, "rotate");
checkMethodCallingTwoNumericArguments(matrix, "rotateFromVector");
checkMethodCallingOneNumericArgument(matrix, "skewX");
checkMethodCallingOneNumericArgument(matrix, "skewY");
debug("");
debug("Check calling SVGMatrix methods with valid arguments");
shouldBeEqualToString("matrixToString(matrix.translate(10, 20))", "{ a: 2, b: 0, c: 0, d: 1, e: 20, f: 220}");
shouldBeEqualToString("matrixToString(matrix.scale(5))", "{ a: 10, b: 0, c: 0, d: 5, e: 0, f: 200}");
shouldBeEqualToString("matrixToString(matrix.scaleNonUniform(2, 3))", "{ a: 4, b: 0, c: 0, d: 3, e: 0, f: 200}");
shouldBeEqualToString("matrixToString(matrix.skewX(90))", "{ a: 2, b: 0, c: 32662478706390740, d: 1, e: 0, f: 200}");
shouldBeEqualToString("matrixToString(matrix.skewY(90))", "{ a: 2, b: 16331239353195370, c: 0, d: 1, e: 0, f: 200}");
debug("");
debug("Check that the matrix is still containing the correct values");
shouldBeEqualToString("matrixToString(matrix)", "{ a: 2, b: 0, c: 0, d: 1, e: 0, f: 200}");
debug("");
debug("Calling methods that throw exceptions");
shouldThrow("matrix.rotateFromVector(0, 4)");
shouldThrow("matrix.rotateFromVector(4, 0)");
shouldBe("matrix.a = 0", "0");
shouldThrow("matrix.inverse()");
debug("");
successfullyParsed = true;
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>