diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/css/geometry/DOMMatrix-stringifier.html | |
parent | Initial commit. (diff) | |
download | firefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
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> |