diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/css/geometry/DOMMatrix-stringifier.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/css/geometry/DOMMatrix-stringifier.html')
-rw-r--r-- | testing/web-platform/tests/css/geometry/DOMMatrix-stringifier.html | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/geometry/DOMMatrix-stringifier.html b/testing/web-platform/tests/css/geometry/DOMMatrix-stringifier.html new file mode 100644 index 0000000000..5a39238bef --- /dev/null +++ b/testing/web-platform/tests/css/geometry/DOMMatrix-stringifier.html @@ -0,0 +1,79 @@ +<!DOCTYPE html> +<title>Geometry Interfaces: DOMMatrix and DOMMatrixReadOnly stringifier</title> +<link rel="help" href="https://drafts.fxtf.org/geometry/#DOMMatrix"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +["DOMMatrix", "DOMMatrixReadOnly", "WebKitCSSMatrix"].forEach(constr => { + const prefix = `${constr} stringifier:`; + + // Basic + test(() => { + const matrix = new self[constr](); + assert_equals(String(matrix), "matrix(1, 0, 0, 1, 0, 0)"); + }, `${prefix} identity (2d)`); + + test(() => { + const matrix = self[constr].fromMatrix({is2D: false}); + assert_equals(String(matrix), "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)"); + }, `${prefix} identity (3d)`); + + // Non-finites + [NaN, Infinity, -Infinity].forEach(num => { + test(() => { + const matrix = new self[constr]([1, 0, 0, 1, 0, num]); + assert_throws_dom("InvalidStateError", () => String(matrix)); + }, `${prefix} ${num} (2d)`); + + test(() => { + const matrix = new self[constr]([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, num, 0, 1]); + assert_throws_dom("InvalidStateError", () => String(matrix)); + }, `${prefix} ${num} (3d)`); + }); + + // Precision + [ + ['1/3', '0.3333333333333333'], + ['1/300000', '0.0000033333333333333333'], + ['1/300000000', '3.3333333333333334e-9'], + ['100000 + (1/3)', '100000.33333333333'], + ['Math.pow(2, 53) + 1', '9007199254740992'], + ['Math.pow(2, 53) + 2', '9007199254740994'], + ['Number.MAX_VALUE', '1.7976931348623157e+308'], + ['Number.MIN_VALUE', '5e-324'], + ].forEach(([input, expected]) => { + const num = eval(input); + test(() => { + const matrix = new self[constr]([1, 0, 0, 1, 0, num]); + assert_equals(String(matrix), `matrix(1, 0, 0, 1, 0, ${expected})`); + }, `${prefix} ${input} (2d)`); + + test(() => { + const matrix = new self[constr]([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, num, 0, 1]); + assert_equals(String(matrix), `matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, ${expected}, 0, 1)`); + }, `${prefix} ${input} (3d)`); + }); + + // Should not invoke getters for m11 etc + function defineThrowingGetters(matrix) { + Object.defineProperty(matrix, 'a', { + get: () => assert_unreached('getter for a') + }); + Object.defineProperty(matrix, 'm11', { + get: () => assert_unreached('getter for m11') + }); + } + + test(() => { + const matrix = new self[constr](); + defineThrowingGetters(matrix); + assert_equals(String(matrix), "matrix(1, 0, 0, 1, 0, 0)"); + }, `${prefix} throwing getters (2d)`); + + test(() => { + const matrix = self[constr].fromMatrix({is2D: false}); + defineThrowingGetters(matrix); + assert_equals(String(matrix), "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)"); + }, `${prefix} throwing getters (3d)`); +}); +</script> |