| <!doctype html> |
| <meta charset="utf-8"> |
| <title>CSSMatrixComponent tests</title> |
| <link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-cssmatrixcomponent-cssmatrixcomponent"> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src="../resources/testhelper.js"></script> |
| <script src="../resources/comparisons.js"></script> |
| <script> |
| 'use strict'; |
| |
| const EPSILON = 1e-6; |
| |
| const gTestMatrices = [ |
| { |
| matrix: new DOMMatrix([0, -1, 3.14, -3.14, 10, 0]), |
| desc: 'a 2D matrix' |
| }, |
| { |
| matrix: new DOMMatrix([1.1, 1.2, -13, -1.4, 2, 0, -2, 4, 3.1, 3, 3, 3.4, -4.1, 42, 43, 4.4]), |
| desc: 'a 3D matrix' |
| }, |
| ]; |
| |
| for (const {matrix, desc} of gTestMatrices) { |
| test(() => { |
| const component = new CSSMatrixComponent(matrix, { is2D: true }); |
| assert_matrix_approx_equals(component.matrix, matrix, EPSILON); |
| assert_true(component.is2D); |
| }, 'CSSMatrixComponent can be constructed from ' + desc + ' with is2D true'); |
| |
| test(() => { |
| const component = new CSSMatrixComponent(matrix, { is2D: false }); |
| assert_matrix_approx_equals(component.matrix, matrix, EPSILON); |
| assert_false(component.is2D); |
| }, 'CSSMatrixComponent can be constructed from ' + desc + ' with is2D false'); |
| |
| test(() => { |
| const component = new CSSMatrixComponent(matrix); |
| assert_matrix_approx_equals(component.matrix, matrix, EPSILON); |
| assert_equals(component.is2D, matrix.is2D); |
| }, 'CSSMatrixComponent can be constructed from ' + desc + ' without a CSSMatrixComponentOptions'); |
| |
| test(() => { |
| const component = new CSSMatrixComponent(matrix, null); |
| assert_matrix_approx_equals(component.matrix, matrix, EPSILON); |
| assert_equals(component.is2D, matrix.is2D); |
| }, 'CSSMatrixComponent can be constructed from ' + desc + ' with an invalid CSSMatrixComponentOptions'); |
| |
| test(() => { |
| let component = new CSSMatrixComponent(new DOMMatrixReadOnly([ |
| 0, 0, 0, 0, 0, 0 |
| ])); |
| |
| component.matrix = matrix; |
| assert_matrix_approx_equals(component.matrix, matrix, EPSILON); |
| }, 'CSSMatrixComponent.matrix can be updated to ' + desc); |
| } |
| |
| </script> |
| |