Automatic update from web-platform-tests Merge checkDOMMatrix into checkMatrix This patch removes the checkDOMMatrix() and replaces it with checkMatrix(). Both helpers were almost the same thing, so keeping one is enough. Tests only. No runtime behavior change. Bug: 441818586 Change-Id: I075bb7187b64c0ce3f2f75a5fddece30da742f2b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6897068 Reviewed-by: Jinho Bang <zino@chromium.org> Commit-Queue: Philip Rogers <pdr@chromium.org> Reviewed-by: Philip Rogers <pdr@chromium.org> Cr-Commit-Position: refs/heads/main@{#1508432} -- wpt-commits: 2f6c5497ac9da9832bf1e5ac27819bc47f119f98 wpt-pr: 54595
219 lines
8.4 KiB
HTML
219 lines
8.4 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Geometry Interfaces: DOMMatrix and DOMMatrixReadOnly constructors</title>
|
|
<link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com" />
|
|
<link rel="help" href="https://drafts.fxtf.org/geometry/#DOMMatrix">
|
|
<link rel="help" href="https://drafts.fxtf.org/geometry/#dommatrix-constructors">
|
|
<link rel="help" href="https://drafts.fxtf.org/geometry/#dom-dommatrix-dommatrix">
|
|
<script src="support/dommatrix-test-util.js"></script>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
</head>
|
|
<body>
|
|
<div id="log"></div>
|
|
<script>
|
|
var initial = {
|
|
m11: 1, m21: 0, m31: 0, m41: 0,
|
|
m12: 0, m22: 1, m32: 0, m42: 0,
|
|
m13: 0, m23: 0, m33: 1, m43: 0,
|
|
m14: 0, m24: 0, m34: 0, m44: 1,
|
|
is2D: true,
|
|
isIdentity: true
|
|
};
|
|
var scaleTranslate2D = {
|
|
m11: 2, m21: 0, m31: 0, m41: 10,
|
|
m12: 0, m22: 2, m32: 0, m42: 10,
|
|
m13: 0, m23: 0, m33: 1, m43: 0,
|
|
m14: 0, m24: 0, m34: 0, m44: 1,
|
|
is2D: true,
|
|
isIdentity: false
|
|
};
|
|
["DOMMatrix", "DOMMatrixReadOnly"].forEach(function(constr) {
|
|
test(function() {
|
|
checkMatrix(new self[constr](), initial);
|
|
}, `new ${constr}()`);
|
|
|
|
test(function() {
|
|
checkMatrix(new self[constr](undefined), initial);
|
|
}, `new ${constr}(undefined)`);
|
|
|
|
test(function() {
|
|
checkMatrix(new self[constr](new self[constr]()), initial);
|
|
}, `new ${constr}(new ${constr}())`);
|
|
|
|
['none',
|
|
' none',
|
|
'none ',
|
|
'NONE',
|
|
'none/**/',
|
|
'/**/none',
|
|
'',
|
|
].forEach(function(string) {
|
|
test(function() {
|
|
checkMatrix(new self[constr](string), initial);
|
|
}, `new ${constr}(${format_value(string)})`);
|
|
});
|
|
|
|
test(function() {
|
|
var float32Array = new Float32Array([
|
|
2.0, 0.0, 0.0, 0.0,
|
|
0.0, 2.0, 0.0, 0.0,
|
|
0.0, 0.0, 1.0, 0.0,
|
|
10.0, 10.0, 0.0, 1.0]);
|
|
checkMatrix(new self[constr](float32Array), matrix3D(scaleTranslate2D));
|
|
}, `new ${constr}(float32Array) 16 elements`);
|
|
|
|
test(function() {
|
|
var float32Array = new Float32Array([2.0, 0.0, 0.0, 2.0, 10.0, 10.0]);
|
|
checkMatrix(new self[constr](float32Array), scaleTranslate2D);
|
|
}, `new ${constr}(float32Array) 6 elements`);
|
|
|
|
test(function() {
|
|
var float64Array = new Float64Array([
|
|
2.0, 0.0, 0.0, 0.0,
|
|
0.0, 2.0, 0.0, 0.0,
|
|
0.0, 0.0, 1.0, 0.0,
|
|
10.0, 10.0, 0.0, 1.0]);
|
|
checkMatrix(new self[constr](float64Array), matrix3D(scaleTranslate2D));
|
|
}, `new ${constr}(float64Array) 16 elements`);
|
|
|
|
test(function() {
|
|
var float64Array = new Float64Array([2.0, 0.0, 0.0, 2.0, 10.0, 10.0]);
|
|
checkMatrix(new self[constr](float64Array), scaleTranslate2D);
|
|
}, `new ${constr}((float64Array) 6 elements`);
|
|
|
|
[
|
|
[2.0, 0.0, 0.0, 0.0,
|
|
0.0, 2.0, 0.0, 0.0,
|
|
0.0, 0.0, 1.0, 0.0,
|
|
10.0, 10.0, 0.0, 1.0],
|
|
[2.0, 0.0, 0.0, 2.0, 10.0, 10.0],
|
|
].forEach(function(sequence) {
|
|
test(function() {
|
|
var expected = sequence.length == 6 ? scaleTranslate2D : matrix3D(scaleTranslate2D);
|
|
checkMatrix(new self[constr](sequence), expected);
|
|
}, `new ${constr}(sequence) ${sequence.length} elements`);
|
|
});
|
|
|
|
{
|
|
const epsilon = 0.0000000005;
|
|
['scale(2) translateX(5px) translateY(5px)',
|
|
'scale(2, 2) translateX(5px) translateY(5px)',
|
|
'scale(2)translateX(5px)translateY(5px)',
|
|
'scale(2) translateX(calc(2 * 2.5px)) translateY(5px)',
|
|
'scale(2) translateX(5px) translateY(5px) rotate(5deg) rotate(-5deg)',
|
|
].forEach(function(string) {
|
|
test(function() {
|
|
checkMatrix(new self[constr](string), scaleTranslate2D, { epsilon });
|
|
}, `new ${constr}(${format_value(string)})`);
|
|
});
|
|
}
|
|
|
|
['translateX (5px)',
|
|
'scale(2 2) translateX(5) translateY(5)',
|
|
'scale(2, 2), translateX(5) ,translateY(5)',
|
|
'scale(sign(1em))',
|
|
'scale(sibling-index())',
|
|
'translateX(5em)',
|
|
'translateX(5ex)',
|
|
'translateX(5ch)',
|
|
'translateX(5rem)',
|
|
'translateX(5cqw)',
|
|
'translateX(5cqh)',
|
|
'translateX(5cqb)',
|
|
'translateX(5cqi)',
|
|
'translateX(5cqmin)',
|
|
'translateX(5cqmax)',
|
|
'translateX(5vw)',
|
|
'translateX(5vh)',
|
|
'translateX(5vb)',
|
|
'translateX(5vi)',
|
|
'translateX(5vmin)',
|
|
'translateX(5vmax)',
|
|
'translateX(5%)',
|
|
'translateX(calc(10px * sign(1em - 10px)))',
|
|
'translateX(calc(10px * sibling-index()))',
|
|
'rotate(5)',
|
|
'rotate(5, 5, 5)',
|
|
'rotate(5, 5px, 5px)',
|
|
'rotate(5deg, 5px, 5px)',
|
|
'rotate(calc(5deg * sign(1em - 10px)))',
|
|
'rotate(calc(5deg * sibling-index()))',
|
|
' ',
|
|
'/**/',
|
|
'\0',
|
|
';',
|
|
'none;',
|
|
'null',
|
|
null, // is converted to 'null' by IDL
|
|
'undefined',
|
|
'inherit',
|
|
'initial',
|
|
'unset',
|
|
].forEach(function(string) {
|
|
test(function() {
|
|
assert_throws_dom('SyntaxError', function() { new self[constr](string); });
|
|
}, `new ${constr}(${format_value(string)})`);
|
|
});
|
|
|
|
test(function() {
|
|
var sequence = [
|
|
2.0, 1.0, 0.0, 0.0,
|
|
1.0, 2.0, 0.0, 0.0,
|
|
0.0, 0.0, 1.0, 0.0,
|
|
10.0, 10.0, 0.0, 1.0];
|
|
checkMatrix(new self[constr](sequence), {
|
|
m11: 2, m21: 1, m31: 0, m41: 10,
|
|
m12: 1, m22: 2, m32: 0, m42: 10,
|
|
m13: 0, m23: 0, m33: 1, m43: 0,
|
|
m14: 0, m24: 0, m34: 0, m44: 1,
|
|
is2D: false,
|
|
isIdentity: false
|
|
});
|
|
}, `new ${constr}(sequence)`);
|
|
|
|
test(function() {
|
|
var matrix = new self[constr]([
|
|
2.0, 1.0, 0.0, 0.0,
|
|
1.0, 2.0, 0.0, 0.0,
|
|
0.0, 0.0, 1.0, 0.0,
|
|
10.0, 10.0, 0.0, 1.0]);
|
|
checkMatrix(new self[constr](matrix), {
|
|
m11: 2, m21: 1, m31: 0, m41: 10,
|
|
m12: 1, m22: 2, m32: 0, m42: 10,
|
|
m13: 0, m23: 0, m33: 1, m43: 0,
|
|
m14: 0, m24: 0, m34: 0, m44: 1,
|
|
is2D: false,
|
|
isIdentity: false
|
|
});
|
|
}, `new ${constr}(matrix)`);
|
|
|
|
['scale(2, 2), translateX(5px) translateY(5px)',
|
|
].forEach(function(string) {
|
|
test(function() {
|
|
assert_throws_dom("SyntaxError", function() { new self[constr](string); });
|
|
}, `new ${constr}(${format_value(string)})`);
|
|
});
|
|
|
|
[
|
|
[2.0, 0.0, 0.0, 0.0,
|
|
0.0, 2.0, 0.0, 0.0,
|
|
0.0, 0.0, 1.0, 0.0,
|
|
10.0, 10.0, 0.0, 2.0, 0.0], // 17 elements
|
|
[2.0, 0.0, 0.0, 0.0,
|
|
0.0, 2.0, 0.0, 0.0,
|
|
0.0, 0.0, 1.0, 0.0,
|
|
10.0, 10.0, 0.0], // 15 elements
|
|
[2.0, 0.0, 0.0, 2.0, 10.0], // 5 elements
|
|
[], // 0 elements
|
|
].forEach(function(sequence) {
|
|
test(function() {
|
|
assert_throws_js(TypeError, function() { new self[constr](sequence); });
|
|
}, `new ${constr}(sequence) ${sequence.length} elements`);
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|