| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="resources/comparisons.js"></script> |
| |
| <script> |
| var EPSILON = 1e-6; // float epsilon |
| |
| test(function() { |
| var transformArray = [ |
| new CSSScale(2, 2), |
| new CSSMatrixComponent(new DOMMatrixReadOnly([1, 1, 1, 1, 1, 1])), |
| new CSSScale(5, 6) |
| ]; |
| var transformValue = new CSSTransformValue(transformArray); |
| assert_true(transformValue.is2D); |
| }, "is2D is true for transformValues containing only 2D components"); |
| |
| test(function() { |
| var transformArray = [ |
| new CSSScale(2, 2), |
| new CSSMatrixComponent(new DOMMatrixReadOnly( |
| [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])), |
| new CSSScale(5, 6) |
| ]; |
| var transformValue = new CSSTransformValue(transformArray); |
| assert_false(transformValue.is2D); |
| }, "is2D is false for transformValues containing both 2D and 3D components"); |
| |
| test(function() { |
| var transformArray = [ |
| new CSSScale(2, 2), |
| new CSSMatrixComponent(new DOMMatrixReadOnly([1, 1, 1, 1, 1, 1])), |
| new CSSScale(5, 6) |
| ]; |
| var transformValue = new CSSTransformValue(transformArray); |
| |
| var newTransformArray = [...transformValue]; |
| assert_true(newTransformArray.length == 3); |
| assert_equals(newTransformArray[0].constructor.name, CSSScale.name); |
| assert_equals(newTransformArray[1].constructor.name, CSSMatrixComponent.name); |
| assert_equals(newTransformArray[2].constructor.name, CSSScale.name); |
| }, "Can iterate through transformComponent members"); |
| |
| test(function() { |
| var transformArray = [new CSSScale(2,2)]; |
| var transformValue = new CSSTransformValue(transformArray); |
| |
| var expectedMatrix = new DOMMatrix(); |
| expectedMatrix.scaleSelf(2, 2); |
| |
| assert_matrix_approx_equals( |
| transformValue.toMatrix(), expectedMatrix, EPSILON); |
| }, "toMatrix() returns DOMMatrix Object - single CSSTransformComponent"); |
| |
| test(function() { |
| var transformMatrix = new DOMMatrixReadOnly([1,1,1,1,1,1]); |
| var transformArray = [ |
| new CSSScale(2,2), |
| new CSSMatrixComponent(transformMatrix), |
| new CSSScale(5,6) |
| ]; |
| var transformValue = new CSSTransformValue(transformArray); |
| |
| var expectedMatrix = new DOMMatrix(); |
| expectedMatrix.scaleSelf(2, 2); |
| expectedMatrix.multiplySelf(transformMatrix); |
| expectedMatrix.scaleSelf(5, 6); |
| |
| assert_matrix_approx_equals( |
| transformValue.toMatrix(), expectedMatrix, EPSILON); |
| }, "toMatrix() returns DOMMatrix Object - multiple CSSTransformComponents"); |
| |
| </script> |