131 lines
5.1 KiB
HTML
131 lines
5.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
description("The test to ensure that calling setTransform with a DOMMatrix works as expected.");
|
|
|
|
function shouldHaveMatrixEquality(matrixName, expected) {
|
|
shouldEvaluateTo(matrixName + ".a", expected[0]);
|
|
shouldEvaluateTo(matrixName + ".b", expected[1]);
|
|
shouldEvaluateTo(matrixName + ".c", expected[2]);
|
|
shouldEvaluateTo(matrixName + ".d", expected[3]);
|
|
shouldEvaluateTo(matrixName + ".e", expected[4]);
|
|
shouldEvaluateTo(matrixName + ".f", expected[5]);
|
|
}
|
|
|
|
var ctx = document.createElement("canvas").getContext("2d");
|
|
var originalTransform = ctx.getTransform();
|
|
shouldHaveMatrixEquality("originalTransform", [1, 0, 0, 1, 0, 0]);
|
|
|
|
ctx.resetTransform();
|
|
ctx.setTransform(new DOMMatrix([1, 2, 3, 4, 5, 6]));
|
|
var newTransformFromDOMMatrix = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromDOMMatrix", [1, 2, 3, 4, 5, 6]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
ctx.setTransform(new DOMMatrix);
|
|
var newTransformFromEmptyDOMMatrix = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromEmptyDOMMatrix", [1, 0, 0, 1, 0, 0]);
|
|
|
|
ctx.resetTransform();
|
|
ctx.setTransform(new DOMMatrix([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]));
|
|
var newTransformFrom3dDOMMatrix = ctx.getTransform();
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m11", 1);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m12", 2);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m13", 0);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m14", 0);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m21", 5);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m22", 6);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m23", 0);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m24", 0);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m31", 0);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m32", 0);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m33", 1);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m34", 0);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m41", 13);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m42", 14);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m43", 0);
|
|
shouldEvaluateTo("newTransformFrom3dDOMMatrix.m44", 1);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
ctx.setTransform({});
|
|
var newTransformFromEmptyObject = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromEmptyObject", [1, 0, 0, 1, 0, 0]);
|
|
|
|
ctx.resetTransform();
|
|
ctx.setTransform({a: 1, b: 2, c: 3, d: 4, e: 5, f: 6});
|
|
var newTransformFromObject = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromObject", [1, 2, 3, 4, 5, 6]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
shouldThrowErrorName(function() {
|
|
ctx.setTransform({a: 1, m11: 11, b: 2, m12: 12, c: 3, m21: 21, d: 4, m22: 22, e: 5, m41: 41, f: 6, m42: 42});
|
|
}, "TypeError");
|
|
var newTransformFromInvalidMatrixObject = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromInvalidMatrixObject", [1, 2, 3, 4, 5, 6]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
shouldThrowErrorName(function() {
|
|
ctx.setTransform(1);
|
|
}, "TypeError");
|
|
var newTransformFromNonObjectNumber = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromNonObjectNumber", [1, 2, 3, 4, 5, 6]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
shouldThrowErrorName(function() {
|
|
ctx.setTransform("test");
|
|
}, "TypeError");
|
|
var newTransformFromNonObjectString = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromNonObjectString", [1, 2, 3, 4, 5, 6]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
shouldThrowErrorName(function() {
|
|
ctx.setTransform(true);
|
|
}, "TypeError");
|
|
var newTransformFromNonObjectBoolean = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromNonObjectBoolean", [1, 2, 3, 4, 5, 6]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
ctx.setTransform({a: {}});
|
|
var newTransformFromInvalidValueObject = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromInvalidValueObject", [1, 2, 3, 4, 5, 6]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
ctx.setTransform({test: 1});
|
|
var newTransformFromInvalidKeyObject = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromInvalidKeyObject", [1, 0, 0, 1, 0, 0]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
ctx.setTransform(null);
|
|
var newTransformFromNull = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromNull", [1, 0, 0, 1, 0, 0]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
ctx.setTransform([]);
|
|
var newTransformFromEmptyArray = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromEmptyArray", [1, 0, 0, 1, 0, 0]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
ctx.setTransform([1, 2, 3, 4, 5, 6]);
|
|
var newTransformFromArray = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromArray", [1, 0, 0, 1, 0, 0]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
ctx.setTransform(["test"]);
|
|
var newTransformFromInvalidArray = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromInvalidArray", [1, 0, 0, 1, 0, 0]);
|
|
|
|
ctx.setTransform(1, 2, 3, 4, 5, 6);
|
|
ctx.setTransform();
|
|
var newTransformFromNoArgument = ctx.getTransform();
|
|
shouldHaveMatrixEquality("newTransformFromNoArgument", [1, 0, 0, 1, 0, 0]);
|
|
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|
|
|