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 }