diff options
Diffstat (limited to 'devtools/client/shared/test/browser_css_angle.js')
-rw-r--r-- | devtools/client/shared/test/browser_css_angle.js | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/devtools/client/shared/test/browser_css_angle.js b/devtools/client/shared/test/browser_css_angle.js new file mode 100644 index 0000000000..a29d3e4f0e --- /dev/null +++ b/devtools/client/shared/test/browser_css_angle.js @@ -0,0 +1,204 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/* import-globals-from head.js */ +"use strict"; + +var { angleUtils } = require("resource://devtools/client/shared/css-angle.js"); + +add_task(async function () { + await addTab("about:blank"); + const { host } = await createHost("bottom"); + + info("Starting the test"); + testAngleUtils(); + testAngleValidity(); + + host.destroy(); + gBrowser.removeCurrentTab(); +}); + +function testAngleUtils() { + const data = getTestData(); + + for (const { authored, deg, rad, grad, turn } of data) { + const angle = new angleUtils.CssAngle(authored); + + // Check all values. + info("Checking values for " + authored); + is(angle.deg, deg, "color.deg === deg"); + is(angle.rad, rad, "color.rad === rad"); + is(angle.grad, grad, "color.grad === grad"); + is(angle.turn, turn, "color.turn === turn"); + + testToString(angle, deg, rad, grad, turn); + } +} + +function testAngleValidity() { + const data = getAngleValidityData(); + + for (const { angle, result } of data) { + const testAngle = new angleUtils.CssAngle(angle); + const validString = testAngle.valid ? " a valid" : "an invalid"; + + is( + testAngle.valid, + result, + `Testing that "${angle}" is ${validString} angle` + ); + } +} + +function testToString(angle, deg, rad, grad, turn) { + const { ANGLEUNIT } = angleUtils.CssAngle.prototype; + angle.angleUnit = ANGLEUNIT.deg; + is(angle.toString(), deg, "toString() with deg type"); + + angle.angleUnit = ANGLEUNIT.rad; + is(angle.toString(), rad, "toString() with rad type"); + + angle.angleUnit = ANGLEUNIT.grad; + is(angle.toString(), grad, "toString() with grad type"); + + angle.angleUnit = ANGLEUNIT.turn; + is(angle.toString(), turn, "toString() with turn type"); +} + +function getAngleValidityData() { + return [ + { + angle: "0.2turn", + result: true, + }, + { + angle: "-0.2turn", + result: true, + }, + { + angle: "-.2turn", + result: true, + }, + { + angle: "1e02turn", + result: true, + }, + { + angle: "-2e2turn", + result: true, + }, + { + angle: ".2turn", + result: true, + }, + { + angle: "0.2aaturn", + result: false, + }, + { + angle: "2dega", + result: false, + }, + { + angle: "0.deg", + result: false, + }, + { + angle: ".deg", + result: false, + }, + { + angle: "..2turn", + result: false, + }, + ]; +} + +function getTestData() { + return [ + { + authored: "0deg", + deg: "0deg", + rad: "0rad", + grad: "0grad", + turn: "0turn", + }, + { + authored: "180deg", + deg: "180deg", + rad: `${Math.round(Math.PI * 10000) / 10000}rad`, + grad: "200grad", + turn: "0.5turn", + }, + { + authored: "180DEG", + deg: "180DEG", + rad: `${Math.round(Math.PI * 10000) / 10000}RAD`, + grad: "200GRAD", + turn: "0.5TURN", + }, + { + authored: `-${Math.PI}rad`, + deg: "-180deg", + rad: `-${Math.PI}rad`, + grad: "-200grad", + turn: "-0.5turn", + }, + { + authored: `-${Math.PI}RAD`, + deg: "-180DEG", + rad: `-${Math.PI}RAD`, + grad: "-200GRAD", + turn: "-0.5TURN", + }, + { + authored: "100grad", + deg: "90deg", + rad: `${Math.round((Math.PI / 2) * 10000) / 10000}rad`, + grad: "100grad", + turn: "0.25turn", + }, + { + authored: "100GRAD", + deg: "90DEG", + rad: `${Math.round((Math.PI / 2) * 10000) / 10000}RAD`, + grad: "100GRAD", + turn: "0.25TURN", + }, + { + authored: "-1turn", + deg: "-360deg", + rad: `${(-1 * Math.round(Math.PI * 2 * 10000)) / 10000}rad`, + grad: "-400grad", + turn: "-1turn", + }, + { + authored: "-10TURN", + deg: "-3600DEG", + rad: `${(-1 * Math.round(Math.PI * 2 * 10 * 10000)) / 10000}RAD`, + grad: "-4000GRAD", + turn: "-10TURN", + }, + { + authored: "inherit", + deg: "inherit", + rad: "inherit", + grad: "inherit", + turn: "inherit", + }, + { + authored: "initial", + deg: "initial", + rad: "initial", + grad: "initial", + turn: "initial", + }, + { + authored: "unset", + deg: "unset", + rad: "unset", + grad: "unset", + turn: "unset", + }, + ]; +} |