blob: d3f6d34019235d06428d1fb51fc56fc0579e6406 [file] [log] [blame]
<!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>