| <!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 |
| var testParams = [ |
| { |
| input: new CSSScale(0, 0), |
| x: 0, y: 0, z: 1, |
| is2D: true, |
| cssText: "scale(0, 0)" |
| }, |
| { |
| input: new CSSScale(1, 2), |
| x: 1, y: 2, z: 1, |
| is2D: true, |
| cssText: "scale(1, 2)" |
| }, |
| { |
| input: new CSSScale(-2, -4), |
| x: -2, y: -4, z: 1, |
| is2D: true, |
| cssText: "scale(-2, -4)" |
| }, |
| { |
| input: new CSSScale(3.4, 2.7), |
| x: 3.4, y: 2.7, z: 1, |
| is2D: true, |
| cssText: "scale(3.4, 2.7)" |
| }, |
| { |
| input: new CSSScale(0, 0, 0), |
| x: 0, y: 0, z: 0, |
| is2D: false, |
| cssText: "scale3d(0, 0, 0)" |
| }, |
| { |
| input: new CSSScale(1, 2, 3), |
| x: 1, y: 2, z: 3, |
| is2D: false, |
| cssText: "scale3d(1, 2, 3)" |
| }, |
| { |
| input: new CSSScale(3.5, -2.7, -2), |
| x: 3.5, y: -2.7, z: -2, |
| is2D: false, |
| cssText: "scale3d(3.5, -2.7, -2)" |
| } |
| ]; |
| |
| for (let params of testParams) { |
| test(() => { |
| assert_equals(params.input.toString(), params.cssText); |
| }, "toString is correct for " + params.cssText); |
| } |
| |
| test(() => { |
| assert_throws(new TypeError(), () => { new CSSScale(); }); |
| assert_throws(new TypeError(), () => { new CSSScale(1); }); |
| }, "Invalid number of arguments to constructor throws an exception."); |
| |
| /* FIXME: The spec doesn't say these are invalid. |
| https://drafts.css-houdini.org/css-typed-om-1/#dom-cssscale-cssscale */ |
| test(() => { |
| assert_throws(new TypeError(), () => { new CSSScale(NaN, 0); }); |
| assert_throws(new TypeError(), () => { new CSSScale(0, NaN); }); |
| assert_throws(new TypeError(), () => { new CSSScale(NaN, NaN); }); |
| assert_throws(new TypeError(), () => { new CSSScale(Infinity, 0); }); |
| assert_throws(new TypeError(), () => { new CSSScale(-Infinity, 0); }); |
| assert_throws(new TypeError(), () => { new CSSScale(undefined, 0); }); |
| |
| assert_throws(new TypeError(), () => { new CSSScale(0, NaN, 0); }); |
| assert_throws(new TypeError(), () => { new CSSScale(0, Infinity, 0); }); |
| assert_throws(new TypeError(), () => { new CSSScale(0, 0, NaN); }); |
| assert_throws(new TypeError(), () => { new CSSScale(0, 0, Infinity); }); |
| assert_throws(new TypeError(), () => { new CSSScale(0, 0, -Infinity); }); |
| assert_throws(new TypeError(), () => { |
| new CSSScale(undefined, undefined, 0); |
| }); |
| assert_throws(new TypeError(), () => { new CSSScale(NaN, undefined, 0); }); |
| assert_throws(new TypeError(), () => { new CSSScale(NaN, 0, NaN); }); |
| assert_throws(new TypeError(), () => { new CSSScale(NaN, NaN, NaN); }); |
| }, "Invalid input throws an exception."); |
| |
| </script> |