diff options
Diffstat (limited to 'devtools/client/shared/test/browser_css_angle.js')
-rw-r--r-- | devtools/client/shared/test/browser_css_angle.js | 176 |
1 files changed, 176 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 000000000..903be44d8 --- /dev/null +++ b/devtools/client/shared/test/browser_css_angle.js @@ -0,0 +1,176 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/* import-globals-from head.js */ +"use strict"; + +const TEST_URI = "data:text/html;charset=utf-8,browser_css_angle.js"; +var {angleUtils} = require("devtools/client/shared/css-angle"); + +add_task(function* () { + yield addTab("about:blank"); + let [host] = yield createHost("bottom", TEST_URI); + + info("Starting the test"); + testAngleUtils(); + testAngleValidity(); + + host.destroy(); + gBrowser.removeCurrentTab(); +}); + +function testAngleUtils() { + let data = getTestData(); + + for (let {authored, deg, rad, grad, turn} of data) { + let 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() { + let data = getAngleValidityData(); + + for (let {angle, result} of data) { + let testAngle = new angleUtils.CssAngle(angle); + let validString = testAngle.valid ? " a valid" : "an invalid"; + + is(testAngle.valid, result, + `Testing that "${angle}" is ${validString} angle`); + } +} + +function testToString(angle, deg, rad, grad, turn) { + angle.angleUnit = angleUtils.CssAngle.ANGLEUNIT.deg; + is(angle.toString(), deg, "toString() with deg type"); + + angle.angleUnit = angleUtils.CssAngle.ANGLEUNIT.rad; + is(angle.toString(), rad, "toString() with rad type"); + + angle.angleUnit = angleUtils.CssAngle.ANGLEUNIT.grad; + is(angle.toString(), grad, "toString() with grad type"); + + angle.angleUnit = angleUtils.CssAngle.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" + }]; +} |