tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

browser_css_angle.js (4332B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 /* import-globals-from head.js */
      5 "use strict";
      6 
      7 var { angleUtils } = require("resource://devtools/client/shared/css-angle.js");
      8 
      9 add_task(async function () {
     10  await addTab("about:blank");
     11  const { host } = await createHost("bottom");
     12 
     13  info("Starting the test");
     14  testAngleUtils();
     15  testAngleValidity();
     16 
     17  host.destroy();
     18  gBrowser.removeCurrentTab();
     19 });
     20 
     21 function testAngleUtils() {
     22  const data = getTestData();
     23 
     24  for (const { authored, deg, rad, grad, turn } of data) {
     25    const angle = new angleUtils.CssAngle(authored);
     26 
     27    // Check all values.
     28    info("Checking values for " + authored);
     29    is(angle.deg, deg, "color.deg === deg");
     30    is(angle.rad, rad, "color.rad === rad");
     31    is(angle.grad, grad, "color.grad === grad");
     32    is(angle.turn, turn, "color.turn === turn");
     33 
     34    testToString(angle, deg, rad, grad, turn);
     35  }
     36 }
     37 
     38 function testAngleValidity() {
     39  const data = getAngleValidityData();
     40 
     41  for (const { angle, result } of data) {
     42    const testAngle = new angleUtils.CssAngle(angle);
     43    const validString = testAngle.valid ? " a valid" : "an invalid";
     44 
     45    is(
     46      testAngle.valid,
     47      result,
     48      `Testing that "${angle}" is ${validString} angle`
     49    );
     50  }
     51 }
     52 
     53 function testToString(angle, deg, rad, grad, turn) {
     54  const { ANGLEUNIT } = angleUtils.CssAngle.prototype;
     55  angle.angleUnit = ANGLEUNIT.deg;
     56  is(angle.toString(), deg, "toString() with deg type");
     57 
     58  angle.angleUnit = ANGLEUNIT.rad;
     59  is(angle.toString(), rad, "toString() with rad type");
     60 
     61  angle.angleUnit = ANGLEUNIT.grad;
     62  is(angle.toString(), grad, "toString() with grad type");
     63 
     64  angle.angleUnit = ANGLEUNIT.turn;
     65  is(angle.toString(), turn, "toString() with turn type");
     66 }
     67 
     68 function getAngleValidityData() {
     69  return [
     70    {
     71      angle: "0.2turn",
     72      result: true,
     73    },
     74    {
     75      angle: "-0.2turn",
     76      result: true,
     77    },
     78    {
     79      angle: "-.2turn",
     80      result: true,
     81    },
     82    {
     83      angle: "1e02turn",
     84      result: true,
     85    },
     86    {
     87      angle: "-2e2turn",
     88      result: true,
     89    },
     90    {
     91      angle: ".2turn",
     92      result: true,
     93    },
     94    {
     95      angle: "0.2aaturn",
     96      result: false,
     97    },
     98    {
     99      angle: "2dega",
    100      result: false,
    101    },
    102    {
    103      angle: "0.deg",
    104      result: false,
    105    },
    106    {
    107      angle: ".deg",
    108      result: false,
    109    },
    110    {
    111      angle: "..2turn",
    112      result: false,
    113    },
    114  ];
    115 }
    116 
    117 function getTestData() {
    118  return [
    119    {
    120      authored: "0deg",
    121      deg: "0deg",
    122      rad: "0rad",
    123      grad: "0grad",
    124      turn: "0turn",
    125    },
    126    {
    127      authored: "180deg",
    128      deg: "180deg",
    129      rad: `${Math.round(Math.PI * 10000) / 10000}rad`,
    130      grad: "200grad",
    131      turn: "0.5turn",
    132    },
    133    {
    134      authored: "180DEG",
    135      deg: "180DEG",
    136      rad: `${Math.round(Math.PI * 10000) / 10000}RAD`,
    137      grad: "200GRAD",
    138      turn: "0.5TURN",
    139    },
    140    {
    141      authored: `-${Math.PI}rad`,
    142      deg: "-180deg",
    143      rad: `-${Math.PI}rad`,
    144      grad: "-200grad",
    145      turn: "-0.5turn",
    146    },
    147    {
    148      authored: `-${Math.PI}RAD`,
    149      deg: "-180DEG",
    150      rad: `-${Math.PI}RAD`,
    151      grad: "-200GRAD",
    152      turn: "-0.5TURN",
    153    },
    154    {
    155      authored: "100grad",
    156      deg: "90deg",
    157      rad: `${Math.round((Math.PI / 2) * 10000) / 10000}rad`,
    158      grad: "100grad",
    159      turn: "0.25turn",
    160    },
    161    {
    162      authored: "100GRAD",
    163      deg: "90DEG",
    164      rad: `${Math.round((Math.PI / 2) * 10000) / 10000}RAD`,
    165      grad: "100GRAD",
    166      turn: "0.25TURN",
    167    },
    168    {
    169      authored: "-1turn",
    170      deg: "-360deg",
    171      rad: `${(-1 * Math.round(Math.PI * 2 * 10000)) / 10000}rad`,
    172      grad: "-400grad",
    173      turn: "-1turn",
    174    },
    175    {
    176      authored: "-10TURN",
    177      deg: "-3600DEG",
    178      rad: `${(-1 * Math.round(Math.PI * 2 * 10 * 10000)) / 10000}RAD`,
    179      grad: "-4000GRAD",
    180      turn: "-10TURN",
    181    },
    182    {
    183      authored: "inherit",
    184      deg: "inherit",
    185      rad: "inherit",
    186      grad: "inherit",
    187      turn: "inherit",
    188    },
    189    {
    190      authored: "initial",
    191      deg: "initial",
    192      rad: "initial",
    193      grad: "initial",
    194      turn: "initial",
    195    },
    196    {
    197      authored: "unset",
    198      deg: "unset",
    199      rad: "unset",
    200      grad: "unset",
    201      turn: "unset",
    202    },
    203  ];
    204 }