| <!DOCTYPE html> |
| <title>Geometry Interfaces: DOMMatrix and DOMMatrixReadOnly a-f alias attributes</title> |
| <link rel="help" href="https://drafts.fxtf.org/geometry/#DOMMatrix"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| function defineThrowingGetter(object, attribute) { |
| Object.defineProperty(object, attribute, { |
| get: () => assert_unreached(`getter for ${attribute}`) |
| }); |
| } |
| |
| function defineThrowingSetter(object, attribute) { |
| Object.defineProperty(object, attribute, { |
| set: () => assert_unreached(`setter for ${attribute}`) |
| }); |
| } |
| |
| ["DOMMatrix", "DOMMatrixReadOnly"].forEach((constr) => { |
| [ |
| ["a", "m11"], |
| ["b", "m12"], |
| ["c", "m21"], |
| ["d", "m22"], |
| ["e", "m41"], |
| ["f", "m42"], |
| ].forEach(([aliasAttribute, mAttribute]) => { |
| test(() => { |
| const matrix = new self[constr]([0, 0, 0, 0, 0, 0]); |
| defineThrowingGetter(matrix, mAttribute); |
| assert_equals(matrix[aliasAttribute], 0); |
| }, `${constr} getting ${aliasAttribute} with throwing getter for ${mAttribute}`); |
| |
| test(() => { |
| const matrix = new self[constr]([0, 0, 0, 0, 0, 0]); |
| defineThrowingGetter(matrix, aliasAttribute); |
| assert_equals(matrix[mAttribute], 0); |
| }, `${constr} getting ${mAttribute} with throwing getter for ${aliasAttribute}`); |
| |
| if (constr === "DOMMatrix") { |
| test(() => { |
| const matrix = new self[constr]([0, 0, 0, 0, 0, 0]); |
| defineThrowingSetter(matrix, mAttribute); |
| matrix[aliasAttribute] = 1; |
| assert_equals(matrix[aliasAttribute], 1); |
| }, `${constr} setting ${aliasAttribute} with throwing setter for ${mAttribute}`); |
| |
| test(() => { |
| const matrix = new self[constr]([0, 0, 0, 0, 0, 0]); |
| defineThrowingSetter(matrix, aliasAttribute); |
| matrix[mAttribute] = 1; |
| assert_equals(matrix[mAttribute], 1); |
| }, `${constr} setting ${mAttribute} with throwing setter for ${aliasAttribute}`); |
| } |
| }); |
| }); |
| </script> |